From 1f2f43c5b08a449c963109332ac91653a9f3f5ef Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Fri, 1 Apr 2016 00:32:55 -0700 Subject: grub-efi.bbclass: use GRUB_ROOT rather than APPEND for root device Use APPEND for grub's root device may cause confusion, for example, when building efi + pcbios, there maybe be two root=/dev/ram0, one of them would be carried to the installed target, and the target would fail to boot. Use GRUB_ROOT to fix the problem, and remove SYSLINUX_ROOT from APPEND will fix the problem. [YOCTO #9354] (From OE-Core rev: 1f46fe7d501644c83f81dc4cc3310073c804f797) Signed-off-by: Robert Yang Signed-off-by: Richard Purdie --- meta/classes/grub-efi.bbclass | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'meta/classes/grub-efi.bbclass') diff --git a/meta/classes/grub-efi.bbclass b/meta/classes/grub-efi.bbclass index 3d8ff11ee8..4ce3d2844a 100644 --- a/meta/classes/grub-efi.bbclass +++ b/meta/classes/grub-efi.bbclass @@ -14,6 +14,7 @@ # ${APPEND} - an override list of append strings for each label # ${GRUB_OPTS} - additional options to add to the config, ';' delimited # (optional) # ${GRUB_TIMEOUT} - timeout before executing the deault label (optional) +# ${GRUB_ROOT} - grub's root device. do_bootimg[depends] += "${MLPREFIX}grub-efi:do_deploy" do_bootdirectdisk[depends] += "${MLPREFIX}grub-efi:do_deploy" @@ -26,7 +27,8 @@ GRUB_TIMEOUT ?= "10" GRUB_OPTS ?= "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1" EFIDIR = "/EFI/BOOT" -APPEND_prepend = " ${ROOT} " +GRUB_ROOT ?= "${ROOT}" +APPEND ?= "" # Need UUID utility code. inherit fs-uuid @@ -108,6 +110,10 @@ python build_efi_cfg() { else: cfgfile.write('timeout=50\n') + root = d.getVar('GRUB_ROOT', True) + if not root: + raise bb.build.FuncFailed('GRUB_ROOT not defined') + if gfxserial == "1": btypes = [ [ " graphics console", "" ], [ " serial console", d.getVar('GRUB_SERIAL', True) or "" ] ] @@ -131,6 +137,8 @@ python build_efi_cfg() { lb = "install-efi" cfgfile.write('linux /vmlinuz LABEL=%s' % (lb)) + cfgfile.write(' %s' % replace_rootfs_uuid(d, root)) + append = localdata.getVar('APPEND', True) initrd = localdata.getVar('INITRD', True) -- cgit v1.2.3-54-g00ecf