From a1c49a0482b0087ac82774603ed3ed8a9b4ce627 Mon Sep 17 00:00:00 2001 From: Matei Valeanu Date: Fri, 27 Jul 2018 02:36:43 +0200 Subject: boot menu: Add graphics and serial choices Add override_grub-efi.inc to override "build_efi_cfg" function from grub-efi.bbclass, in order to add GRUB_GRAPHICS variable for grub menuentry specific parameters. Set "console=tty0" for graphic console options for grub and syslinux, and also "console=ttyS0" for serial. Change-Id: If338d9f7e1b82fc91a026ef48ae30647c1049f8b Signed-off-by: Matei Valeanu --- classes/override_grub-efi.inc | 89 ++++++++++++++++++++++++++++++++++ images/enea-nfv-access-host-common.inc | 10 ++-- 2 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 classes/override_grub-efi.inc diff --git a/classes/override_grub-efi.inc b/classes/override_grub-efi.inc new file mode 100644 index 0000000..4c2ae64 --- /dev/null +++ b/classes/override_grub-efi.inc @@ -0,0 +1,89 @@ +GRUB_GRAPHICS ?= "console=tty0" + +python build_efi_cfg() { + import sys + + workdir = d.getVar('WORKDIR') + if not workdir: + bb.error("WORKDIR not defined, unable to package") + return + + gfxserial = d.getVar('GRUB_GFXSERIAL') or "" + + labels = d.getVar('LABELS') + if not labels: + bb.debug(1, "LABELS not defined, nothing to do") + return + + if labels == []: + bb.debug(1, "No labels, nothing to do") + return + + cfile = d.getVar('GRUB_CFG') + if not cfile: + bb.fatal('Unable to read GRUB_CFG') + + try: + cfgfile = open(cfile, 'w') + except OSError: + bb.fatal('Unable to open %s' % cfile) + + cfgfile.write('# Automatically created by OE\n') + + opts = d.getVar('GRUB_OPTS') + if opts: + for opt in opts.split(';'): + cfgfile.write('%s\n' % opt) + + cfgfile.write('default=%s\n' % (labels.split()[0])) + + timeout = d.getVar('GRUB_TIMEOUT') + if timeout: + cfgfile.write('timeout=%s\n' % timeout) + else: + cfgfile.write('timeout=50\n') + + root = d.getVar('GRUB_ROOT') + if not root: + bb.fatal('GRUB_ROOT not defined') + + if gfxserial == "1": + btypes = [ [ " graphics console", d.getVar('GRUB_GRAPHICS') or "" ], + [ " serial console", d.getVar('GRUB_SERIAL') or "" ] ] + else: + btypes = [ [ "", "" ] ] + + for label in labels.split(): + localdata = d.createCopy() + + overrides = localdata.getVar('OVERRIDES') + if not overrides: + bb.fatal('OVERRIDES not defined') + + for btype in btypes: + localdata.setVar('OVERRIDES', label + ':' + overrides) + + cfgfile.write('\nmenuentry \'%s%s\'{\n' % (label, btype[0])) + lb = label + if label == "install": + lb = "install-efi" + cfgfile.write('linux /vmlinuz LABEL=%s' % (lb)) + + cfgfile.write(' %s' % replace_rootfs_uuid(d, root)) + + append = localdata.getVar('APPEND') + initrd = localdata.getVar('INITRD') + + if append: + append = replace_rootfs_uuid(d, append) + cfgfile.write(' %s' % (append)) + + cfgfile.write(' %s' % btype[1]) + cfgfile.write('\n') + + if initrd: + cfgfile.write('initrd /initrd') + cfgfile.write('\n}\n') + + cfgfile.close() +} diff --git a/images/enea-nfv-access-host-common.inc b/images/enea-nfv-access-host-common.inc index 9958861..3015b0a 100644 --- a/images/enea-nfv-access-host-common.inc +++ b/images/enea-nfv-access-host-common.inc @@ -1,4 +1,5 @@ require images/enea-nfv-access-common.inc +require classes/override_grub-efi.inc IMAGE_INSTALL += " \ packagegroup-enea-virtualization-host \ @@ -8,11 +9,10 @@ IMAGE_INSTALL += " \ # Set labels for GRUB and SYSLINUX LABELS_LIVE = "live-boot installer" -# Append default parameters for x86-64 targets and avoid duplicate serial configs -APPEND_x86-64 = "console=ttyS0,115200 console=tty0 quiet" -GRUB_SERIAL_x86-64 = "" -SYSLINUX_DEFAULT_CONSOLE_x86-64 = "" -SYSLINUX_SERIAL_TTY_x86-64 = "" +GRUB_GFXSERIAL_x86-64 = "1" +# Append default parameters for x86-64 targets +APPEND_x86-64 = "quiet" +SYSLINUX_DEFAULT_CONSOLE_x86-64 = "console=tty0" # Set timeout values GRUB_TIMEOUT_x86-64 = "10" -- cgit v1.2.3-54-g00ecf