fs/iso9660: add support for grub2
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mon, 8 Jun 2015 22:21:48 +0000 (00:21 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 14 Jun 2015 21:25:18 +0000 (23:25 +0200)
After having extended the iso9660 support to allow isolinux as an
alternative to grub, this commit adds grub2 as a third
alternative. With the previous work done to support isolinux, adding
support for grub2 is fairly trivial.

[Thomas: set timeout to 10 seconds and not 5 seconds, in order to
match the configuration used for grub.]

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
fs/iso9660/Config.in
fs/iso9660/grub.cfg [new file with mode: 0644]
fs/iso9660/iso9660.mk

index 6f057eaba804c9216a3f8ef6ed1ff3828ccab2ff..7e1ddd64ffb4c8df916ab26efa9a78c24eb746de 100644 (file)
@@ -2,7 +2,9 @@ config BR2_TARGET_ROOTFS_ISO9660
        bool "iso image"
        depends on (BR2_i386 || BR2_x86_64)
        depends on BR2_LINUX_KERNEL
-       depends on BR2_TARGET_GRUB || BR2_TARGET_SYSLINUX_ISOLINUX
+       depends on BR2_TARGET_GRUB || \
+               BR2_TARGET_GRUB2 || \
+               BR2_TARGET_SYSLINUX_ISOLINUX
        select BR2_LINUX_KERNEL_INSTALL_TARGET \
               if (!BR2_TARGET_ROOTFS_ISO9660_INITRD && !BR2_TARGET_ROOTFS_INITRAMFS)
        help
@@ -29,6 +31,15 @@ config BR2_TARGET_ROOTFS_ISO9660_GRUB
        depends on BR2_TARGET_GRUB
        select BR2_TARGET_GRUB_FS_ISO9660
 
+config BR2_TARGET_ROOTFS_ISO9660_GRUB2
+       bool "grub2"
+       depends on BR2_TARGET_GRUB2
+       help
+         Use Grub 2 as the bootloader for the ISO9660 image. Make
+         sure to enable the 'iso9660' module in
+         BR2_TARGET_GRUB2_BUILTIN_MODULES and to use 'cd' as the boot
+         partition in BR2_TARGET_GRUB2_BOOT_PARTITION=.
+
 config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
        bool "isolinux"
        depends on BR2_TARGET_SYSLINUX_ISOLINUX
@@ -38,6 +49,7 @@ endchoice
 config BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU
        string "Boot menu.lst file"
        default "fs/iso9660/menu.lst" if BR2_TARGET_ROOTFS_ISO9660_GRUB
+       default "fs/iso9660/grub.cfg" if BR2_TARGET_ROOTFS_ISO9660_GRUB2
        default "fs/iso9660/isolinux.cfg" if BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
        help
          Use this option to provide a custom bootloader configuration
@@ -69,7 +81,7 @@ config BR2_TARGET_ROOTFS_ISO9660_HYBRID
 
 endif
 
-comment "iso image needs a Linux kernel and one of grub or isolinux to be built"
+comment "iso image needs a Linux kernel and one of grub, grub2 or isolinux to be built"
        depends on BR2_i386 || BR2_x86_64
        depends on !BR2_LINUX_KERNEL || \
-               !(BR2_TARGET_GRUB || BR2_TARGET_SYSLINUX_ISOLINUX)
+               !(BR2_TARGET_GRUB || BR2_TARGET_GRUB2 || BR2_TARGET_SYSLINUX_ISOLINUX)
diff --git a/fs/iso9660/grub.cfg b/fs/iso9660/grub.cfg
new file mode 100644 (file)
index 0000000..5a74b23
--- /dev/null
@@ -0,0 +1,7 @@
+set default="0"
+set timeout="10"
+
+menuentry "Buildroot" {
+       linux __KERNEL_PATH__ root=/dev/sr0
+       initrd __INITRD_PATH__
+}
index 4f4abea9ff264d212a0f206e9343f749ecf962e2..6ed979c64bbc423bf5eb9281ad417f497216aa3a 100644 (file)
@@ -53,6 +53,15 @@ define ROOTFS_ISO9660_INSTALL_BOOTLOADER
        $(INSTALL) -D -m 0644 $(GRUB_DIR)/stage2/stage2_eltorito \
                $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/stage2_eltorito
 endef
+else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2),y)
+ROOTFS_ISO9660_DEPENDENCIES += grub2
+ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
+       $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/grub.cfg
+ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img
+define ROOTFS_ISO9660_INSTALL_BOOTLOADER
+       $(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \
+               $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/grub-eltorito.img
+endef
 else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y)
 ROOTFS_ISO9660_DEPENDENCIES += syslinux
 ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \