On Thu, 2013-09-12 at 11:01 -0700, Saul Wold wrote: > On 09/12/2013 10:19 AM, Jason Wessel wrote: > > The syslinux.bbclass already has support for automatically generated > > serial and graphics menu choices. This patch adds the same concept to > > the grub-efi menu. That makes it possible to generate a single image > > which can boot on a PCBIOS or EFI firmware with consistent looking > > boot options. > > > > [YOCTO #4100] > > > > Signed-off-by: Jason Wessel <[email protected]> > > --- > > meta/classes/grub-efi.bbclass | 41 > > ++++++++++++++++++++++++------------- > > meta/conf/machine/qemux86-64.conf | 2 +- > > meta/conf/machine/qemux86.conf | 2 ++ > > 3 files changed, 30 insertions(+), 15 deletions(-) > > > > diff --git a/meta/classes/grub-efi.bbclass b/meta/classes/grub-efi.bbclass > > index c6f5d4e..c07e4a1 100644 > > --- a/meta/classes/grub-efi.bbclass > > +++ b/meta/classes/grub-efi.bbclass > > @@ -9,6 +9,7 @@ > > # External variables > > # ${INITRD} - indicates a filesystem image to use as an initrd (optional) > > # ${ROOTFS} - indicates a filesystem image to include as the root > > filesystem (optional) > > +# ${GRUB_GFXSERIAL} - set this to 1 to have graphics and serial in the > > boot menu > > # ${LABELS} - a list of targets for the automatic config > > # ${APPEND} - an override list of append strings for each label > > # ${GRUB_OPTS} - additional options to add to the config, ';' delimited # > > (optional) > > @@ -16,6 +17,7 @@ > > > > do_bootimg[depends] += > > "grub-efi-${TRANSLATED_TARGET_ARCH}-native:do_deploy" > > > > +GRUB_SERIAL ?= "console=ttyS0,115200" > > GRUBCFG = "${S}/grub.cfg" > > GRUB_TIMEOUT ?= "10" > > #FIXME: build this from the machine config > > @@ -55,6 +57,8 @@ python build_grub_cfg() { > > bb.error("WORKDIR not defined, unable to package") > > return > > > > + gfxserial = d.getVar('GRUB_GFXSERIAL', True) or "" > > + > > labels = d.getVar('LABELS', True) > > if not labels: > > bb.debug(1, "LABELS not defined, nothing to do") > > @@ -88,6 +92,12 @@ python build_grub_cfg() { > > else: > > cfgfile.write('timeout=50\n') > > > > + if gfxserial == "1": > > + btypes = [ [ " graphics console", "console=tty0" ], > > + [ " serial console", d.getVar('GRUB_SERIAL', True) or "" ] ] > > + else: > > + btypes = [ [ "", "" ] ] > > + > > for label in labels.split(): > > localdata = d.createCopy() > > > > @@ -95,24 +105,27 @@ python build_grub_cfg() { > > if not overrides: > > raise bb.build.FuncFailed('OVERRIDES not defined') > > > > - localdata.setVar('OVERRIDES', label + ':' + overrides) > > - bb.data.update_data(localdata) > > + for btype in btypes: > > + localdata.setVar('OVERRIDES', label + ':' + overrides) > > + bb.data.update_data(localdata) > > > > - cfgfile.write('\nmenuentry \'%s\'{\n' % (label)) > > - if label == "install": > > - label = "install-efi" > > - cfgfile.write('linux /vmlinuz LABEL=%s' % (label)) > > + cfgfile.write('\nmenuentry \'%s%s\'{\n' % (label, btype[0])) > > + lb = label > > + if label == "install": > > + lb = "install-efi" > > + cfgfile.write('linux /vmlinuz LABEL=%s' % (lb)) > > > > - append = localdata.getVar('APPEND', True) > > - initrd = localdata.getVar('INITRD', True) > > + append = localdata.getVar('APPEND', True) > > + initrd = localdata.getVar('INITRD', True) > > > > - if append: > > - cfgfile.write('%s' % (append)) > > - cfgfile.write('\n') > > + if append: > > + cfgfile.write('%s' % (append)) > > + cfgfile.write(' %s' % btype[1]) > > + cfgfile.write('\n') > > > > - if initrd: > > - cfgfile.write('initrd /initrd') > > - cfgfile.write('\n}\n') > > + if initrd: > > + cfgfile.write('initrd /initrd') > > + cfgfile.write('\n}\n') > > > > cfgfile.close() > > } > > diff --git a/meta/conf/machine/qemux86-64.conf > > b/meta/conf/machine/qemux86-64.conf > > index c572225..6f68410 100644 > > --- a/meta/conf/machine/qemux86-64.conf > > +++ b/meta/conf/machine/qemux86-64.conf > > @@ -21,6 +21,6 @@ XSERVER = "xserver-xorg \ > > xf86-input-evdev \ > > xf86-video-vmware" > > > > -MACHINE_FEATURES += "x86" > > +MACHINE_FEATURES += "x86 efi" > > > > MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "v86d" > > diff --git a/meta/conf/machine/qemux86.conf b/meta/conf/machine/qemux86.conf > > index 94ee573..57a9a50 100644 > > --- a/meta/conf/machine/qemux86.conf > > +++ b/meta/conf/machine/qemux86.conf > > @@ -22,5 +22,7 @@ XSERVER = "xserver-xorg \ > > xf86-video-vmware" > > > > MACHINE_FEATURES += "x86" > > +MACHINE_FEATURES += "efi" > > +#MACHINE_FEATURES += "pcbios" > >
This can just be one line: MACHINE_FEATURES += "x86 pcbios efi" > Did you intend to keep the commented out like vs what you did above in > x86-64? > > > MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "v86d" > > > > Will this affect the genericx86* also? No, both genericx86 machines have efi and pcbios in their machine features. > > Sau! > -- Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
