From 6d7bcd4df5722f3ccebbbf73361838cb0a5dc0ee Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Thu, 3 Sep 2015 20:42:32 +0200 Subject: boot loader: support root=UUID As mentioned when introducing the VM images (https://bugzilla.yoctoproject.org/show_bug.cgi?id=7374), the resulting images only work when the image is mounted as a disk that results in the hard-coded path (/dev/sda in the current default). Using the file system UUID to find the rootfs is more flexible. To enable this for boot-direct.bbclass and thus image-vm.bbclass (aka FSTYPEs vdi/vmdk/qcow2), set SYSLINUX_ROOT = "root=UUID=<>". The rootfs image must use an ext file system. The special string will get replaced in the APPEND line with the actual UUID when the boot loader (grub-efi, syslinux or gummiboot) writes the boot loader configuration files. At that time, the rootfs image has already been created and its UUID can be extracted using "tune2fs -l", which also should be available because the e2fsprogs-native tools were needed to create the image in the first place. (From OE-Core rev: 1e29d77d0d33ee216b43022439876863f0db39bb) Signed-off-by: Patrick Ohly Signed-off-by: Richard Purdie --- meta/classes/syslinux.bbclass | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'meta/classes/syslinux.bbclass') diff --git a/meta/classes/syslinux.bbclass b/meta/classes/syslinux.bbclass index d6498d98bb..44ef9a9176 100644 --- a/meta/classes/syslinux.bbclass +++ b/meta/classes/syslinux.bbclass @@ -34,6 +34,9 @@ ISO_BOOTCAT = "isolinux/boot.cat" MKISOFS_OPTIONS = "-no-emul-boot -boot-load-size 4 -boot-info-table" APPEND_prepend = " ${SYSLINUX_ROOT} " +# Need UUID utility code. +inherit fs-uuid + syslinux_populate() { DEST=$1 BOOTDIR=$2 @@ -177,7 +180,7 @@ python build_syslinux_cfg () { cfgfile.write('initrd=/initrd ') cfgfile.write('LABEL=%s '% (label)) - + append = replace_rootfs_uuid(d, append) cfgfile.write('%s %s\n' % (append, btype[1])) else: cfgfile.write('APPEND %s\n' % btype[1]) -- cgit v1.2.3-54-g00ecf