@@ -3,12 +3,30 @@ config BR2_TARGET_ROOTFS_ISO9660
depends on (BR2_i386 || BR2_x86_64)
depends on BR2_LINUX_KERNEL
select BR2_TARGET_ROOTFS_CPIO
- select BR2_TARGET_GRUB
- select BR2_TARGET_GRUB_FS_ISO9660
help
Build a bootable iso9660 image
if BR2_TARGET_ROOTFS_ISO9660
+choice
+ prompt "Bootloader"
+ default BR2_TARGET_ROOTFS_ISO9660_GRUB
+ help
+ Select the bootloader that should be used for the bootable
+ ISO9660 image.
+
+config BR2_TARGET_ROOTFS_ISO9660_GRUB
+ bool "grub"
+ select BR2_TARGET_GRUB
+ select BR2_TARGET_GRUB_FS_ISO9660
+
+config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
+ bool "isolinux"
+ select BR2_TARGET_SYSLINUX
+ select BR2_TARGET_SYSLINUX_ISOLINUX
+
+endchoice
+
+if BR2_TARGET_ROOTFS_ISO9660_GRUB
config BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU
string "Boot menu.lst file"
@@ -17,6 +35,24 @@ config BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU
Grub configuration
Define menu, commands and options for grub
+endif # BR2_TARGET_ROOTFS_ISO9660_GRUB
+
+if BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
+
+config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX_BOOT_MESSAGE
+ string "Boot message"
+ default "fs/iso9660/bootmsg.txt"
+ help
+ Displays the contents of this file on the screen at boot time
+
+config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX_CONFIG_FILE
+ string "Configuration file"
+ default "fs/iso9660/isolinux.cfg"
+ help
+ This file defines all options to start isolinux
+
+endif # BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
+
config BR2_TARGET_ROOTFS_ISO9660_JOLIET
bool "Create iso with Joliet format (long filenames)"
default y
new file mode 100644
@@ -0,0 +1,4 @@
+Buildroot isolinux boot
+ buildroot) Launch linux from the CD-ROM
+ harddrive) Hard Drive (first partition)
+
@@ -8,33 +8,63 @@
################################################################################
ISO9660_TARGET_DIR = $(BUILD_DIR)/iso9660
-ISO9660_BOOT_MENU := $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU))
+ISO9660_INITRD_SED_CMD = '/initrd/Id'
ISO9660_CHARSET = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_INPUT_CHARSET))
ISO9660_NAME = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_NAME))
-ISO9660_KERNEL_DST = $(ISO9660_TARGET_DIR)/kernel
+ISO9660_KERNEL_DST = $(ISO9660_TARGET_DIR)/$(LINUX_IMAGE_NAME)
+ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB),y)
+ISO9660_BOOTLOADER_PACKAGE = grub
ISO9660_BOOTLOADER_BIN = $(GRUB_DIR)/stage2/stage2_eltorito
ISO9660_BOOTLOADER_DIR = $(ISO9660_TARGET_DIR)/boot/grub/
+ISO9660_BOOTLOADER_SRC_CFG = $(call qstrip, \
+ $(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU))
ISO9660_BOOTLOADER_DST_CFG = $(ISO9660_TARGET_DIR)/boot/grub/menu.lst
ISO9660_ELTORITO_BOOT = boot/grub/stage2_eltorito
+endif
+
+ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y)
+ISO9660_BOOTLOADER_PACKAGE = syslinux
+ISO9660_BOOTLOADER_BIN = $(BINARIES_DIR)/isolinux.bin
+ISO9660_BOOTLOADER_DIR = $(ISO9660_TARGET_DIR)
+ISO9660_BOOTLOADER_SRC_CFG = $(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX_CONFIG_FILE)
+ISO9660_BOOTLOADER_DST_CFG = $(ISO9660_TARGET_DIR)/isolinux.cfg
+ISO9660_ELTORITO_BOOT = isolinux.bin
+ISO9660_BOOT_MESSAGE = $(call qstrip, \
+ $(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX_BOOT_MESSAGE))
+endif
-$(BINARIES_DIR)/rootfs.iso9660: host-cdrkit host-fakeroot linux rootfs-cpio grub
+$(BINARIES_DIR)/rootfs.iso9660: host-cdrkit host-fakeroot linux rootfs-cpio $(ISO9660_BOOTLOADER_PACKAGE)
@$(call MESSAGE,"Generating root filesystem image rootfs.iso9660")
@mkdir -p $(ISO9660_TARGET_DIR)
@mkdir -p $(ISO9660_BOOTLOADER_DIR)
@cp $(ISO9660_BOOTLOADER_BIN) $(ISO9660_BOOTLOADER_DIR)
- @cp $(ISO9660_BOOT_MENU) $(ISO9660_BOOTLOADER_DST_CFG)
+ @cp $(ISO9660_BOOTLOADER_SRC_CFG) $(ISO9660_BOOTLOADER_DST_CFG)
@cp $(LINUX_IMAGE_PATH) $(ISO9660_KERNEL_DST)
+ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB),y)
ifeq ($(BR2_TARGET_GRUB_SPLASH),)
@$(SED) '/^splashimage/d' $(ISO9660_BOOTLOADER_DST_CFG)
else
@cp boot/grub/splash.xpm.gz $(ISO9660_TARGET_DIR)/
endif # BR2_TARGET_GRUB_SPLASH
+endif # BR2_TARGET_ROOTFS_ISO9660_GRUB
+
+ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y)
+ifeq ($(ISO9660_BOOT_MESSAGE),)
+ @$(SED) '/display bootmsg.txt/d' $(ISO9660_BOOTLOADER_DST_CFG)
+else
+ @cp $(ISO9660_BOOT_MESSAGE) \
+ $(ISO9660_TARGET_DIR)
+endif # ISO9660_BOOT_MESSAGE
+endif # BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
+
+ @$(SED) 's/__LINUX_IMAGE_NAME__/'$(LINUX_IMAGE_NAME)'/g' \
+ $(ISO9660_BOOTLOADER_DST_CFG)
ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
- @$(SED) '/initrd/d' $(ISO9660_BOOTLOADER_DST_CFG)
+ @$(SED) $(ISO9660_INITRD_SED_CMD) $(ISO9660_BOOTLOADER_DST_CFG)
else
@cp $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \
$(ISO9660_TARGET_DIR)/initrd
new file mode 100644
@@ -0,0 +1,10 @@
+display bootmsg.txt
+default buildroot
+timeout 10
+prompt 1
+LABEL buildroot
+ KERNEL __LINUX_IMAGE_NAME__
+ INITRD initrd
+
+LABEL harddrive
+ LOCALBOOT 0x80
@@ -12,7 +12,7 @@ foreground 000000
background cccccc
title Buildroot ISO9660 image
-kernel /kernel
+kernel /__LINUX_IMAGE_NAME__
initrd /initrd
title Hard Drive (first partition)