mirror of
https://git.busybox.net/buildroot.git
synced 2024-11-24 14:03:29 +08:00
5916cc5011
Add support for building an hybrid ISO9660 image compatible with legacy and UEFI BIOS. Note that this is not about an (iso)hybrid image, which can boot from both a CDROM or a USB stick, but really about an image being bootable from the legay BIOS or EFI; the two are orthognal. The option -eltorito-alt-boot need to be used in the xorriso command to generate the hybrid image. That option is a separator, meaning the previous boot entry is done, and the following boot options define a new boot entry. The -no-emul-boot defines the type of the current boot image; that's why it has to now be repeated in each of the BIOS and EFI options. Finally, for symetry and consistency between the BIOS and EFI options, we move the BIOS image option first. Note: the BIOS boot image options have to be provided before the EFI ones, or the system won't boot; the underlying reason is not known... Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> [yann.morin.1998@free.fr: - note about hybrid vs. (iso)hybrid - explain -eltorito-alt-boot - explain duplication of -no-emul-boot - rename the variables - note about the BIOS-EFI ordering ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
103 lines
3.6 KiB
Plaintext
103 lines
3.6 KiB
Plaintext
config BR2_TARGET_ROOTFS_ISO9660
|
|
bool "iso image"
|
|
depends on (BR2_i386 || BR2_x86_64)
|
|
depends on BR2_LINUX_KERNEL
|
|
depends on BR2_TARGET_GRUB2 || BR2_TARGET_SYSLINUX_ISOLINUX
|
|
select BR2_LINUX_KERNEL_INSTALL_TARGET \
|
|
if (!BR2_TARGET_ROOTFS_ISO9660_INITRD && !BR2_TARGET_ROOTFS_INITRAMFS)
|
|
help
|
|
Build a bootable ISO9660 image. By default, the root
|
|
filesystem is directly packed as the ISO9660 filesystem,
|
|
which means the root filesystem will be read-only. It
|
|
requires ISO9660 filesystem support and CDROM support in the
|
|
kernel.
|
|
|
|
However, if BR2_TARGET_ROOTFS_INITRAMFS or
|
|
BR2_TARGET_ROOTFS_ISO9660_INITRD have been enabled, the
|
|
ISO9660 filesystem will only contain a kernel image and
|
|
optionally an external initrd image. In this case, the
|
|
filesystem being in RAM, it will be read/write. No ISO9660
|
|
or CDROM support is needed in the kernel.
|
|
|
|
if BR2_TARGET_ROOTFS_ISO9660
|
|
|
|
choice
|
|
prompt "Bootloader"
|
|
|
|
config BR2_TARGET_ROOTFS_ISO9660_GRUB2
|
|
bool "grub2"
|
|
depends on BR2_TARGET_GRUB2
|
|
select BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER \
|
|
if BR2_TARGET_GRUB2_I386_PC
|
|
select BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER \
|
|
if (BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI)
|
|
help
|
|
Use Grub 2 as the bootloader for the ISO9660 image. Make
|
|
sure to enable the 'iso9660' module in
|
|
BR2_TARGET_GRUB2_BUILTIN_MODULES_PC or
|
|
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI. Use 'cd' as the boot
|
|
partition in BR2_TARGET_GRUB2_BOOT_PARTITION= for GRUB on BIOS
|
|
or 'set root=(cd0)' in the configuration file passed to
|
|
BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI for GRUB on EFI.
|
|
|
|
config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
|
|
bool "isolinux"
|
|
depends on BR2_TARGET_SYSLINUX_ISOLINUX
|
|
select BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER
|
|
|
|
endchoice
|
|
|
|
config BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER
|
|
bool
|
|
|
|
config BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER
|
|
bool
|
|
|
|
config BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU
|
|
string "Boot menu config file"
|
|
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
|
|
file (grub.cfg for Grub 2, isolinux.cfg for isolinux).
|
|
|
|
Note that the strings __KERNEL_PATH__ and __INITRD_PATH__
|
|
will automatically be replaced by the path to the kernel and
|
|
initrd images respectively.
|
|
|
|
config BR2_TARGET_ROOTFS_ISO9660_INITRD
|
|
bool "Use initrd"
|
|
default y
|
|
select BR2_TARGET_ROOTFS_CPIO
|
|
help
|
|
Enable this option to have the root filesystem bundled as an
|
|
initrd/initramfs rather than directly as the ISO9660
|
|
filesystem. With this option enabled, the ISO9660 will only
|
|
contain a kernel image, an initrd image (unless an initramfs
|
|
linked into the kernel is used) and the bootloader.
|
|
|
|
config BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION
|
|
bool "transparent compression"
|
|
depends on !BR2_TARGET_ROOTFS_ISO9660_INITRD
|
|
depends on !BR2_TARGET_ROOTFS_INITRAMFS
|
|
help
|
|
Say 'y' to enable use of transparent (de)compression. Files
|
|
are stored compressed and will be decompressed on-the-fly
|
|
upon access at runtime.
|
|
|
|
config BR2_TARGET_ROOTFS_ISO9660_HYBRID
|
|
bool "Build hybrid image"
|
|
depends on BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
|
|
help
|
|
Enable this option to build an hybrid image, i.e an image
|
|
which can either be booted from a CD-ROM or from a device
|
|
which BIOS considers a hard disk or ZIP disk, e.g. a USB key
|
|
or similar.
|
|
|
|
endif
|
|
|
|
comment "iso image needs a Linux kernel and either grub2 or isolinux to be built"
|
|
depends on BR2_i386 || BR2_x86_64
|
|
depends on !BR2_LINUX_KERNEL || \
|
|
!(BR2_TARGET_GRUB2 || BR2_TARGET_SYSLINUX_ISOLINUX)
|