Commit 168cce04 authored by Thomas Petazzoni's avatar Thomas Petazzoni
Browse files

fs/iso9660: prepare cleaner kernel/initrd path handling



The iso9660.mk modifies the menu.lst file from Grub to set the correct
initrd/kernel image locations. However, with the upcoming support of
other bootloaders for iso9660 filesystems, we need to modify a bit
this logic.

Instead of relying on the specific details of the grub menu.lst
syntax, we introduce the __KERNEL_PATH__ and __INITRD_PATH__ magic
keywords, which iso9660.mk will replace by the appropriate
values. They can therefore be used where needed in grub menu.lst, and
in similar configuration files of other bootloaders, as will be
supported in the following commits.

Also, in order to be consistent with the soon to be introduced support
for having the root filesystem itself as iso9660, this commit changes
the installation location of the initrd and kernel. Instead of being
/initrd and /kernel, they become /boot/initrd and
/boot/$(LINUX_IMAGE_NAME).

Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: default avatarSamuel Martin <s.martin49@gmail.com>
Acked-by: default avatar"Yann E. MORIN" <yann.morin.1998@free.fr>
parent 3736b9a7
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -13,6 +13,11 @@ if BR2_TARGET_ROOTFS_ISO9660
config BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU
	string "Boot menu.lst file"
	default "fs/iso9660/menu.lst"
	help
	  Use this option to provide a custom Grub menu.lst file. Note
	  that the strings __KERNEL_PATH__ and __INITRD_PATH__ will
	  automatically be replaced by the path to the kernel and
	  initrd images respectively.

endif

+8 −3
Original line number Diff line number Diff line
@@ -22,12 +22,14 @@ endif

ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
define ROOTFS_ISO9660_INITRD
	$(SED) '/initrd/d'  $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/menu.lst
	$(SED) '/__INITRD_PATH__/d'  $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/menu.lst
endef
else
define ROOTFS_ISO9660_INITRD
	$(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \
		$(ROOTFS_ISO9660_TARGET_DIR)/initrd
		$(ROOTFS_ISO9660_TARGET_DIR)/boot/initrd
	$(SED) "s%__INITRD_PATH__%/boot/initrd%" \
		$(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/menu.lst
endef
endif

@@ -38,7 +40,10 @@ define ROOTFS_ISO9660_PREPARATION
		$(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/stage2_eltorito
	$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_BOOT_MENU) \
		$(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/menu.lst
	$(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) $(ROOTFS_ISO9660_TARGET_DIR)/kernel
	$(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \
		$(ROOTFS_ISO9660_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME)
	$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
		$(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/menu.lst
	$(ROOTFS_ISO9660_SPLASHSCREEN)
	$(ROOTFS_ISO9660_INITRD)
endef
+2 −2
Original line number Diff line number Diff line
@@ -12,8 +12,8 @@ foreground 000000
background 	cccccc

title		Buildroot ISO9660 image
kernel		/kernel
initrd		/initrd
kernel		__KERNEL_PATH__
initrd		__INITRD_PATH__

title		Hard Drive (first partition)
rootnoverify	(hd0)