mirror of
https://github.com/PartialVolume/shredos.x86_64.git
synced 2026-02-20 05:32:11 +00:00
feat(iso9660): complete refactor of filesystem
The entire iso9660 filesystem folder was restructured to replace partially unreadable legacy code with modern, readable and modular structures. Hardcoded paths were replaced with variables, as much as possible, to make the code work with different setups. A mode "both" was added, producing Debian-style hybrid ISOs for both BIOS and EFI usage, while still allowing for flashing to USB and/or burning to CD/DVD-ROM. The configuration GUI (via "make menuconfig") was also refactored and adapted to the new changes. Signed-off-by: desertwitch <24509509+desertwitch@users.noreply.github.com>
This commit is contained in:
@@ -4,7 +4,7 @@ config BR2_TARGET_ROOTFS_ISO9660
|
|||||||
depends on BR2_LINUX_KERNEL
|
depends on BR2_LINUX_KERNEL
|
||||||
depends on BR2_TARGET_GRUB2 || BR2_TARGET_SYSLINUX_ISOLINUX
|
depends on BR2_TARGET_GRUB2 || BR2_TARGET_SYSLINUX_ISOLINUX
|
||||||
select BR2_LINUX_KERNEL_INSTALL_TARGET \
|
select BR2_LINUX_KERNEL_INSTALL_TARGET \
|
||||||
if (!BR2_TARGET_ROOTFS_ISO9660_INITRD && !BR2_TARGET_ROOTFS_INITRAMFS)
|
if (!BR2_TARGET_ROOTFS_ISO9660_INITRD && !BR2_TARGET_ROOTFS_INITRAMFS)
|
||||||
help
|
help
|
||||||
Build a bootable ISO9660 image. By default, the root
|
Build a bootable ISO9660 image. By default, the root
|
||||||
filesystem is directly packed as the ISO9660 filesystem,
|
filesystem is directly packed as the ISO9660 filesystem,
|
||||||
@@ -26,24 +26,46 @@ choice
|
|||||||
|
|
||||||
config BR2_TARGET_ROOTFS_ISO9660_GRUB2
|
config BR2_TARGET_ROOTFS_ISO9660_GRUB2
|
||||||
bool "grub2"
|
bool "grub2"
|
||||||
depends on BR2_TARGET_GRUB2
|
depends on BR2_TARGET_GRUB2 \
|
||||||
|
&& (BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI)
|
||||||
select BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER \
|
select BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER \
|
||||||
if BR2_TARGET_GRUB2_I386_PC
|
if BR2_TARGET_GRUB2_I386_PC
|
||||||
select BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER \
|
select BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER \
|
||||||
if (BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI)
|
if (BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI)
|
||||||
help
|
help
|
||||||
Use Grub 2 as the bootloader for the ISO9660 image. Make
|
Use Grub 2 as the bootloader for the ISO9660 image.
|
||||||
sure to enable the 'iso9660' module in
|
Make sure to enable the 'iso9660' module in
|
||||||
BR2_TARGET_GRUB2_BUILTIN_MODULES_PC or
|
BR2_TARGET_GRUB2_BUILTIN_MODULES_PC and/or
|
||||||
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI. Use 'cd' as the boot
|
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI. For GRUB on BIOS, use 'cd'
|
||||||
partition in BR2_TARGET_GRUB2_BOOT_PARTITION= for GRUB on BIOS
|
as the boot partition in BR2_TARGET_GRUB2_BOOT_PARTITION setting.
|
||||||
or 'set root=(cd0)' in the configuration file passed to
|
For GRUB on EFI 'set root=(cd0)' in the configuration file passed
|
||||||
BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI for GRUB on EFI.
|
to BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_BOOT_MENU, although the
|
||||||
|
default configuration file contains a "search" directive using
|
||||||
|
BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE, which works too.
|
||||||
|
|
||||||
config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
|
config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
|
||||||
bool "isolinux"
|
bool "isolinux"
|
||||||
depends on BR2_TARGET_SYSLINUX_ISOLINUX
|
depends on BR2_TARGET_SYSLINUX_ISOLINUX
|
||||||
select BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER
|
select BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER
|
||||||
|
help
|
||||||
|
Use ISOLINUX as the bootloader for the ISO9660 image.
|
||||||
|
ISOLINUX is a bootloader for BIOS systems that can boot
|
||||||
|
from CD-ROM or USB devices.
|
||||||
|
|
||||||
|
config BR2_TARGET_ROOTFS_ISO9660_BOTH
|
||||||
|
bool "both"
|
||||||
|
depends on BR2_TARGET_SYSLINUX_ISOLINUX
|
||||||
|
depends on BR2_TARGET_GRUB2 \
|
||||||
|
&& (BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI)
|
||||||
|
select BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER
|
||||||
|
select BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER
|
||||||
|
help
|
||||||
|
Use both ISOLINUX (for BIOS boot) and GRUB2 (for UEFI boot).
|
||||||
|
This creates an ISO that can boot on both legacy BIOS
|
||||||
|
systems and modern UEFI systems, combined with the hybrid
|
||||||
|
image option this will produce a Debian-style hybrid ISO,
|
||||||
|
as it is commonly shipped alongside modern Linux distros,
|
||||||
|
which can both be flashed to USB and burned to CD/DVD-ROM.
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
@@ -53,20 +75,72 @@ config BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER
|
|||||||
config BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER
|
config BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU
|
config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX_BOOT_MENU
|
||||||
string "Boot menu config file"
|
string "Isolinux configuration file"
|
||||||
default "fs/iso9660/grub.cfg" if BR2_TARGET_ROOTFS_ISO9660_GRUB2
|
depends on BR2_TARGET_ROOTFS_ISO9660_ISOLINUX || BR2_TARGET_ROOTFS_ISO9660_BOTH
|
||||||
default "fs/iso9660/isolinux.cfg" if BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
|
default "fs/iso9660/isolinux.cfg"
|
||||||
help
|
help
|
||||||
Use this option to provide a custom bootloader configuration
|
Use this option to provide a custom ISOLINUX configuration
|
||||||
file (grub.cfg for Grub 2, isolinux.cfg for isolinux).
|
file (isolinux.cfg).
|
||||||
|
|
||||||
Note that the strings __KERNEL_PATH__ and __INITRD_PATH__
|
Note that the strings __KERNEL_PATH__ and __INITRD_PATH__
|
||||||
will automatically be replaced by the path to the kernel and
|
will automatically be replaced by the path to the kernel and
|
||||||
initrd images respectively.
|
initrd images respectively (or removed, if not applicable).
|
||||||
|
|
||||||
|
config BR2_TARGET_ROOTFS_ISO9660_GRUB2_BOOT_MENU
|
||||||
|
string "Grub2 configuration file"
|
||||||
|
depends on BR2_TARGET_ROOTFS_ISO9660_GRUB2 || BR2_TARGET_ROOTFS_ISO9660_BOTH
|
||||||
|
default "fs/iso9660/grub.cfg"
|
||||||
|
help
|
||||||
|
Use this option to provide a custom GRUB2 configuration
|
||||||
|
file (grub.cfg).
|
||||||
|
|
||||||
|
Note that the strings __KERNEL_PATH__ and __INITRD_PATH__
|
||||||
|
will automatically be replaced by the path to the kernel and
|
||||||
|
initrd images respectively (or removed, if not applicable).
|
||||||
|
|
||||||
|
config BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE
|
||||||
|
string "Grub2 identification file (EFI)"
|
||||||
|
depends on (BR2_TARGET_ROOTFS_ISO9660_GRUB2 || BR2_TARGET_ROOTFS_ISO9660_BOTH) \
|
||||||
|
&& BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER
|
||||||
|
default "buildroot"
|
||||||
|
help
|
||||||
|
Use this option to provide a custom name for the identification
|
||||||
|
file that is added to the ISO9660 filesystem, so the EFI bootloader
|
||||||
|
can better "search" it among possibly multiple attached boot devices.
|
||||||
|
|
||||||
|
config BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_PARTITION_SIZE
|
||||||
|
string "Grub2 partition size (EFI)"
|
||||||
|
depends on (BR2_TARGET_ROOTFS_ISO9660_GRUB2 || BR2_TARGET_ROOTFS_ISO9660_BOTH) \
|
||||||
|
&& BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER
|
||||||
|
default "3M"
|
||||||
|
help
|
||||||
|
Use this option to increase the size of the EFI partition.
|
||||||
|
Embedding more GRUB2 modules may require a larger EFI partition size.
|
||||||
|
|
||||||
|
config BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_BOOT_MENU
|
||||||
|
string "Grub2 embedded configuration (EFI)"
|
||||||
|
depends on (BR2_TARGET_ROOTFS_ISO9660_GRUB2 || BR2_TARGET_ROOTFS_ISO9660_BOTH) \
|
||||||
|
&& BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER
|
||||||
|
default "fs/iso9660/efigrub.cfg"
|
||||||
|
help
|
||||||
|
Use this option to provide a custom GRUB2 configuration
|
||||||
|
file (grub.cfg) that is embedded in the EFI paritition.
|
||||||
|
|
||||||
|
It will usually just contain a "search" directive to find the
|
||||||
|
ISO9660 filesystem containing the actual GRUB2 configuration file.
|
||||||
|
Alternatively, 'set root=(cd0)' could be directly set here also...
|
||||||
|
|
||||||
|
Note that the string __EFI_ID_FILE__ will automatically be
|
||||||
|
replaced with the BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE.
|
||||||
|
|
||||||
|
Do not mistake this for the regular GRUB2 configuration that is
|
||||||
|
eventually loaded by the EFI bootloader, this is just for systems
|
||||||
|
which need some extra help to locate the actual ISO9660 filesystem.
|
||||||
|
|
||||||
config BR2_TARGET_ROOTFS_ISO9660_INITRD
|
config BR2_TARGET_ROOTFS_ISO9660_INITRD
|
||||||
bool "Use initrd"
|
bool "Use initrd"
|
||||||
|
depends on !BR2_TARGET_ROOTFS_INITRAMFS
|
||||||
default y
|
default y
|
||||||
select BR2_TARGET_ROOTFS_CPIO
|
select BR2_TARGET_ROOTFS_CPIO
|
||||||
help
|
help
|
||||||
@@ -81,18 +155,17 @@ config BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION
|
|||||||
depends on !BR2_TARGET_ROOTFS_ISO9660_INITRD
|
depends on !BR2_TARGET_ROOTFS_ISO9660_INITRD
|
||||||
depends on !BR2_TARGET_ROOTFS_INITRAMFS
|
depends on !BR2_TARGET_ROOTFS_INITRAMFS
|
||||||
help
|
help
|
||||||
Say 'y' to enable use of transparent (de)compression. Files
|
Enables the use of transparent (de)compression. All files
|
||||||
are stored compressed and will be decompressed on-the-fly
|
are stored compressed and will be decompressed on-the-fly
|
||||||
upon access at runtime.
|
upon access at runtime.
|
||||||
|
|
||||||
config BR2_TARGET_ROOTFS_ISO9660_HYBRID
|
config BR2_TARGET_ROOTFS_ISO9660_HYBRID
|
||||||
bool "Build hybrid image"
|
bool "Build hybrid image"
|
||||||
depends on BR2_TARGET_ROOTFS_ISO9660_ISOLINUX
|
depends on BR2_TARGET_ROOTFS_ISO9660_ISOLINUX || BR2_TARGET_ROOTFS_ISO9660_BOTH
|
||||||
help
|
help
|
||||||
Enable this option to build an hybrid image, i.e an image
|
Enable this option to build a hybrid image, which is an image
|
||||||
which can either be booted from a CD-ROM or from a device
|
that can either be burned to CD/DVD-ROM or flashed onto a device
|
||||||
which BIOS considers a hard disk or ZIP disk, e.g. a USB key
|
which the BIOS considers as HDD/removable device (e.g. USB stick)
|
||||||
or similar.
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
3
fs/iso9660/efigrub.cfg
Normal file
3
fs/iso9660/efigrub.cfg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
search --file --set=root __EFI_ID_FILE__
|
||||||
|
set prefix=($root)/boot/grub
|
||||||
|
source $prefix/grub.cfg
|
||||||
@@ -1,7 +1,12 @@
|
|||||||
set default="0"
|
set default="0"
|
||||||
set timeout="10"
|
set timeout="5"
|
||||||
|
|
||||||
menuentry "Buildroot" {
|
menuentry "ShredOS" {
|
||||||
linux __KERNEL_PATH__ root=/dev/sr0
|
linux __KERNEL_PATH__ console=tty3 loglevel=3
|
||||||
initrd __INITRD_PATH__
|
initrd __INITRD_PATH__
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry "ShredOS (nomodeset)" {
|
||||||
|
linux __KERNEL_PATH__ console=tty3 loglevel=3 nomodeset
|
||||||
|
initrd __INITRD_PATH__
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Build the iso96600 root filesystem image
|
# Build the ISO9660 root filesystem image
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
@@ -21,11 +21,38 @@
|
|||||||
# built into the kernel image. This is when
|
# built into the kernel image. This is when
|
||||||
# BR2_TARGET_ROOTFS_INITRAMFS is enabled (regardless of the value
|
# BR2_TARGET_ROOTFS_INITRAMFS is enabled (regardless of the value
|
||||||
# of BR2_TARGET_ROOTFS_ISO9660_INITRD).
|
# of BR2_TARGET_ROOTFS_ISO9660_INITRD).
|
||||||
|
#
|
||||||
|
|
||||||
ROOTFS_ISO9660_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU))
|
################################################################################
|
||||||
|
# Configuration Variables
|
||||||
|
################################################################################
|
||||||
|
|
||||||
ROOTFS_ISO9660_DEPENDENCIES = host-xorriso linux
|
ROOTFS_ISO9660_DEPENDENCIES = host-xorriso linux
|
||||||
|
|
||||||
|
ROOTFS_ISO9660_GRUB2_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_GRUB2_BOOT_MENU))
|
||||||
|
ROOTFS_ISO9660_GRUB2_EFI_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_BOOT_MENU))
|
||||||
|
ROOTFS_ISO9660_GRUB2_EFI_PARTITION_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_PARTITION_SIZE))
|
||||||
|
ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE))
|
||||||
|
ROOTFS_ISO9660_ISOLINUX_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX_BOOT_MENU))
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Architecture-specific variables
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
ifeq ($(BR2_ARCH_IS_64),y)
|
||||||
|
ROOTFS_ISO9660_EFI_NAME = bootx64.efi
|
||||||
|
ROOTFS_ISO9660_EFI_NOTNAME = bootia32.efi
|
||||||
|
ROOTFS_ISO9660_GRUB2_EFI_PREFIX = $(call qstrip,$(GRUB2_PREFIX_x86_64-efi))
|
||||||
|
else
|
||||||
|
ROOTFS_ISO9660_EFI_NAME = bootia32.efi
|
||||||
|
ROOTFS_ISO9660_EFI_NOTNAME = bootx64.efi
|
||||||
|
ROOTFS_ISO9660_GRUB2_EFI_PREFIX = $(call qstrip,$(GRUB2_PREFIX_i386-efi))
|
||||||
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Determine if we're using initrd
|
||||||
|
################################################################################
|
||||||
|
|
||||||
ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
|
ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
|
||||||
ROOTFS_ISO9660_USE_INITRD = YES
|
ROOTFS_ISO9660_USE_INITRD = YES
|
||||||
endif
|
endif
|
||||||
@@ -34,17 +61,23 @@ ifeq ($(BR2_TARGET_ROOTFS_ISO9660_INITRD),y)
|
|||||||
ROOTFS_ISO9660_USE_INITRD = YES
|
ROOTFS_ISO9660_USE_INITRD = YES
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Setup temporary target directory
|
||||||
|
################################################################################
|
||||||
|
|
||||||
ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
|
ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
|
||||||
|
# Using initrd: create minimal temporary directory
|
||||||
ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp
|
ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp
|
||||||
define ROOTFS_ISO9660_CREATE_TEMPDIR
|
define ROOTFS_ISO9660_CREATE_TEMPDIR
|
||||||
$(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
$(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
||||||
mkdir -p $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
mkdir -p $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
||||||
endef
|
endef
|
||||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_CREATE_TEMPDIR
|
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_CREATE_TEMPDIR
|
||||||
|
|
||||||
else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y)
|
else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y)
|
||||||
|
# Using transparent compression: create compressed tree
|
||||||
ROOTFS_ISO9660_DEPENDENCIES += host-zisofs-tools
|
ROOTFS_ISO9660_DEPENDENCIES += host-zisofs-tools
|
||||||
ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp
|
ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp
|
||||||
# This must be early, before we copy the bootloader files.
|
|
||||||
define ROOTFS_ISO9660_MKZFTREE
|
define ROOTFS_ISO9660_MKZFTREE
|
||||||
$(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
$(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
||||||
$(HOST_DIR)/bin/mkzftree -X -z 9 -p $(PARALLEL_JOBS) \
|
$(HOST_DIR)/bin/mkzftree -X -z 9 -p $(PARALLEL_JOBS) \
|
||||||
@@ -53,10 +86,16 @@ define ROOTFS_ISO9660_MKZFTREE
|
|||||||
endef
|
endef
|
||||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_MKZFTREE
|
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_MKZFTREE
|
||||||
ROOTFS_ISO9660_OPTS += -z
|
ROOTFS_ISO9660_OPTS += -z
|
||||||
|
|
||||||
else
|
else
|
||||||
|
# Standard mode: use TARGET_DIR directly
|
||||||
ROOTFS_ISO9660_TMP_TARGET_DIR = $(TARGET_DIR)
|
ROOTFS_ISO9660_TMP_TARGET_DIR = $(TARGET_DIR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Reproducible build support
|
||||||
|
################################################################################
|
||||||
|
|
||||||
ifeq ($(BR2_REPRODUCIBLE),y)
|
ifeq ($(BR2_REPRODUCIBLE),y)
|
||||||
ROOTFS_ISO9660_VFAT_OPTS = --invariant
|
ROOTFS_ISO9660_VFAT_OPTS = --invariant
|
||||||
ROOTFS_ISO9660_FIX_TIME = touch -d @$(SOURCE_DATE_EPOCH)
|
ROOTFS_ISO9660_FIX_TIME = touch -d @$(SOURCE_DATE_EPOCH)
|
||||||
@@ -64,100 +103,278 @@ else
|
|||||||
ROOTFS_ISO9660_FIX_TIME = :
|
ROOTFS_ISO9660_FIX_TIME = :
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# GRUB2 BIOS Bootloader Configuration
|
||||||
|
################################################################################
|
||||||
|
|
||||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2)$(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER),yy)
|
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2)$(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER),yy)
|
||||||
ROOTFS_ISO9660_DEPENDENCIES += grub2
|
ROOTFS_ISO9660_DEPENDENCIES += grub2
|
||||||
ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
|
ROOTFS_ISO9660_GRUB2_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg
|
||||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg
|
|
||||||
ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img
|
ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img
|
||||||
define ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS
|
|
||||||
|
define ROOTFS_ISO9660_INSTALL_GRUB2_BIOS
|
||||||
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \
|
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \
|
||||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub-eltorito.img
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub-eltorito.img
|
||||||
endef
|
endef
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2)$(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),yy)
|
define ROOTFS_ISO9660_INSTALL_GRUB2_CONFIG
|
||||||
ROOTFS_ISO9660_DEPENDENCIES += grub2 host-dosfstools host-mtools
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_GRUB2_BOOT_MENU) \
|
||||||
ROOTFS_ISO9660_EFI_PARTITION = boot/fat.efi
|
$(ROOTFS_ISO9660_GRUB2_CONFIG_PATH)
|
||||||
ROOTFS_ISO9660_EFI_PARTITION_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_EFI_PARTITION)
|
$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
|
||||||
ROOTFS_ISO9660_EFI_PARTITION_CONTENT = $(BINARIES_DIR)/efi-part
|
$(ROOTFS_ISO9660_GRUB2_CONFIG_PATH)
|
||||||
ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
|
|
||||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg
|
|
||||||
define ROOTFS_ISO9660_INSTALL_BOOTLOADER_EFI
|
|
||||||
rm -rf $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
|
|
||||||
mkdir -p $(dir $(ROOTFS_ISO9660_EFI_PARTITION_PATH))
|
|
||||||
dd if=/dev/zero of=$(ROOTFS_ISO9660_EFI_PARTITION_PATH) bs=1M count=1
|
|
||||||
$(HOST_DIR)/sbin/mkfs.vfat $(ROOTFS_ISO9660_VFAT_OPTS) $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
|
|
||||||
$(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/*
|
|
||||||
$(HOST_DIR)/bin/mcopy -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) -s \
|
|
||||||
$(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/* ::/
|
|
||||||
$(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
|
|
||||||
endef
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# GRUB2 EFI Bootloader Configuration
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2)$(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),yy)
|
||||||
|
ROOTFS_ISO9660_DEPENDENCIES += grub2 host-dosfstools host-mtools
|
||||||
|
ROOTFS_ISO9660_EFI_PARTITION = boot/efi.img
|
||||||
|
ROOTFS_ISO9660_EFI_PARTITION_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_EFI_PARTITION)
|
||||||
|
ROOTFS_ISO9660_EFI_PARTITION_CONTENT = $(BINARIES_DIR)/efi-part
|
||||||
|
ROOTFS_ISO9660_GRUB2_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg
|
||||||
|
ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/efigrub.cfg
|
||||||
|
|
||||||
|
define ROOTFS_ISO9660_INSTALL_GRUB2_EFI
|
||||||
|
# Create identification file to better find ISO9660 filesystem
|
||||||
|
$(INSTALL) -D -m 0644 /dev/null \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE)
|
||||||
|
# Copy grub.cfg to ISO9660 filesystem where GRUB will find it
|
||||||
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_GRUB2_CONFIG_PATH) \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/grub.cfg
|
||||||
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NAME) \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NAME)
|
||||||
|
# Create EFI FAT partition
|
||||||
|
rm -rf $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
|
||||||
|
mkdir -p $(dir $(ROOTFS_ISO9660_EFI_PARTITION_PATH))
|
||||||
|
dd if=/dev/zero of=$(ROOTFS_ISO9660_EFI_PARTITION_PATH) bs=$(ROOTFS_ISO9660_GRUB2_EFI_PARTITION_SIZE) count=1
|
||||||
|
$(HOST_DIR)/sbin/mkfs.vfat $(ROOTFS_ISO9660_VFAT_OPTS) $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
|
||||||
|
# Copy bootloader and modules to EFI partition
|
||||||
|
$(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/*
|
||||||
|
$(HOST_DIR)/bin/mcopy -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) -s \
|
||||||
|
$(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/* ::/
|
||||||
|
# Delete the EFI bootloader that is NOT for the platform we're building for
|
||||||
|
$(HOST_DIR)/bin/mdel -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) \
|
||||||
|
::$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NOTNAME) || true
|
||||||
|
# Copy efigrub.cfg to EFI partition (may be used to find ISO9660 filesystem)
|
||||||
|
$(HOST_DIR)/bin/mcopy -n -o -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH) ::$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/grub.cfg
|
||||||
|
# Remove efigrub.cfg from ISO9660 filesystem, it was just there for SED-ing
|
||||||
|
rm -f $(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH)
|
||||||
|
$(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define ROOTFS_ISO9660_INSTALL_GRUB2_CONFIG
|
||||||
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_GRUB2_BOOT_MENU) \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_CONFIG_PATH)
|
||||||
|
$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_CONFIG_PATH)
|
||||||
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_GRUB2_EFI_BOOT_MENU) \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH)
|
||||||
|
$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH)
|
||||||
|
$(SED) "s%__EFI_ID_FILE__%$(ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE)%" \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH)
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# ISOLINUX Bootloader Configuration (BIOS only)
|
||||||
|
################################################################################
|
||||||
|
|
||||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y)
|
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y)
|
||||||
ROOTFS_ISO9660_DEPENDENCIES += syslinux
|
ROOTFS_ISO9660_DEPENDENCIES += syslinux
|
||||||
ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
|
ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/isolinux.cfg
|
||||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/isolinux.cfg
|
|
||||||
ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin
|
ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin
|
||||||
define ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS
|
|
||||||
|
define ROOTFS_ISO9660_INSTALL_ISOLINUX_BIOS
|
||||||
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \
|
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \
|
||||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/
|
||||||
$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/ldlinux.c32 \
|
$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/ldlinux.c32 \
|
||||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ldlinux.c32
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ldlinux.c32
|
||||||
|
$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/menu.c32 \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/menu.c32
|
||||||
|
$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/libutil.c32 \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/libutil.c32
|
||||||
|
$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/libcom32.c32 \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/libcom32.c32
|
||||||
|
endef
|
||||||
|
|
||||||
|
define ROOTFS_ISO9660_INSTALL_ISOLINUX_CONFIG
|
||||||
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_ISOLINUX_BOOT_MENU) \
|
||||||
|
$(ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH)
|
||||||
|
$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
|
||||||
|
$(ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH)
|
||||||
endef
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define ROOTFS_ISO9660_PREPARATION
|
################################################################################
|
||||||
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_BOOT_MENU) \
|
# BOTH Mode: ISOLINUX (BIOS) + GRUB2 (EFI)
|
||||||
$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
|
################################################################################
|
||||||
|
|
||||||
|
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BOTH),y)
|
||||||
|
ROOTFS_ISO9660_DEPENDENCIES += syslinux grub2 host-dosfstools host-mtools
|
||||||
|
|
||||||
|
# ISOLINUX configuration
|
||||||
|
ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/isolinux.cfg
|
||||||
|
ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin
|
||||||
|
|
||||||
|
# GRUB2 EFI configuration
|
||||||
|
ROOTFS_ISO9660_GRUB2_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg
|
||||||
|
ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/efigrub.cfg
|
||||||
|
ROOTFS_ISO9660_EFI_PARTITION = boot/efi.img
|
||||||
|
ROOTFS_ISO9660_EFI_PARTITION_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_EFI_PARTITION)
|
||||||
|
ROOTFS_ISO9660_EFI_PARTITION_CONTENT = $(BINARIES_DIR)/efi-part
|
||||||
|
|
||||||
|
define ROOTFS_ISO9660_INSTALL_ISOLINUX_BIOS
|
||||||
|
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/
|
||||||
|
$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/ldlinux.c32 \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ldlinux.c32
|
||||||
|
$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/menu.c32 \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/menu.c32
|
||||||
|
$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/libutil.c32 \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/libutil.c32
|
||||||
|
$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/libcom32.c32 \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/libcom32.c32
|
||||||
|
endef
|
||||||
|
|
||||||
|
define ROOTFS_ISO9660_INSTALL_ISOLINUX_CONFIG
|
||||||
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_ISOLINUX_BOOT_MENU) \
|
||||||
|
$(ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH)
|
||||||
$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
|
$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
|
||||||
$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
|
$(ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH)
|
||||||
$(ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS)
|
|
||||||
$(ROOTFS_ISO9660_INSTALL_BOOTLOADER_EFI)
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_PREPARATION
|
define ROOTFS_ISO9660_INSTALL_GRUB2_EFI
|
||||||
|
# Create identification file to better find ISO9660 filesystem
|
||||||
define ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
|
$(INSTALL) -D -m 0644 /dev/null \
|
||||||
$(SED) '/__INITRD_PATH__/d' $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE)
|
||||||
|
# Copy grub.cfg to ISO9660 filesystem where GRUB will find it
|
||||||
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_GRUB2_CONFIG_PATH) \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/grub.cfg
|
||||||
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NAME) \
|
||||||
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NAME)
|
||||||
|
# Create EFI FAT partition
|
||||||
|
rm -rf $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
|
||||||
|
mkdir -p $(dir $(ROOTFS_ISO9660_EFI_PARTITION_PATH))
|
||||||
|
dd if=/dev/zero of=$(ROOTFS_ISO9660_EFI_PARTITION_PATH) bs=$(ROOTFS_ISO9660_GRUB2_EFI_PARTITION_SIZE) count=1
|
||||||
|
$(HOST_DIR)/sbin/mkfs.vfat $(ROOTFS_ISO9660_VFAT_OPTS) $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
|
||||||
|
# Copy bootloader and modules to EFI partition
|
||||||
|
$(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/*
|
||||||
|
$(HOST_DIR)/bin/mcopy -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) -s \
|
||||||
|
$(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/* ::/
|
||||||
|
# Delete the EFI bootloader that is NOT for the platform we're building for
|
||||||
|
$(HOST_DIR)/bin/mdel -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) \
|
||||||
|
::$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NOTNAME) || true
|
||||||
|
# Copy efigrub.cfg to EFI partition (may be used to find ISO9660 filesystem)
|
||||||
|
$(HOST_DIR)/bin/mcopy -n -o -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH) ::$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/grub.cfg
|
||||||
|
# Remove efigrub.cfg from ISO9660 filesystem, it was just there for SED-ing
|
||||||
|
rm -f $(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH)
|
||||||
|
$(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# Copy the kernel to temporary filesystem
|
define ROOTFS_ISO9660_INSTALL_GRUB2_CONFIG
|
||||||
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_GRUB2_BOOT_MENU) \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_CONFIG_PATH)
|
||||||
|
$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_CONFIG_PATH)
|
||||||
|
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_GRUB2_EFI_BOOT_MENU) \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH)
|
||||||
|
$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH)
|
||||||
|
$(SED) "s%__EFI_ID_FILE__%$(ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE)%" \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH)
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Bootloader Configuration Installation
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
define ROOTFS_ISO9660_INSTALL_BOOTLOADER_CONFIGS
|
||||||
|
$(ROOTFS_ISO9660_INSTALL_GRUB2_CONFIG)
|
||||||
|
$(ROOTFS_ISO9660_INSTALL_ISOLINUX_CONFIG)
|
||||||
|
endef
|
||||||
|
|
||||||
|
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_INSTALL_BOOTLOADER_CONFIGS
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Initrd Handling
|
||||||
|
################################################################################
|
||||||
|
|
||||||
define ROOTFS_ISO9660_COPY_KERNEL
|
define ROOTFS_ISO9660_COPY_KERNEL
|
||||||
$(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \
|
$(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \
|
||||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME)
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
|
define ROOTFS_ISO9660_ENABLE_EXTERNAL_INITRD
|
||||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL
|
|
||||||
|
|
||||||
# If initramfs is used, disable loading the initrd as the rootfs is
|
|
||||||
# already inside the kernel image. Otherwise, make sure a cpio is
|
|
||||||
# generated and use it as the initrd.
|
|
||||||
ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
|
|
||||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
|
|
||||||
else
|
|
||||||
ROOTFS_ISO9660_DEPENDENCIES += rootfs-cpio
|
|
||||||
define ROOTFS_ISO9660_COPY_INITRD
|
|
||||||
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \
|
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \
|
||||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/initrd
|
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/initrd
|
||||||
$(SED) "s%__INITRD_PATH__%/boot/initrd%" \
|
$(if $(ROOTFS_ISO9660_GRUB2_CONFIG_PATH), \
|
||||||
$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
|
$(SED) "s%__INITRD_PATH__%/boot/initrd%" \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_CONFIG_PATH))
|
||||||
|
$(if $(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH), \
|
||||||
|
$(SED) "s%__INITRD_PATH__%/boot/initrd%" \
|
||||||
|
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH))
|
||||||
|
$(if $(ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH), \
|
||||||
|
$(SED) "s%__INITRD_PATH__%/boot/initrd%" \
|
||||||
|
$(ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH))
|
||||||
endef
|
endef
|
||||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_INITRD
|
|
||||||
|
define ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
|
||||||
|
$(if $(ROOTFS_ISO9660_GRUB2_CONFIG_PATH), \
|
||||||
|
$(SED) '/__INITRD_PATH__/d' $(ROOTFS_ISO9660_GRUB2_CONFIG_PATH))
|
||||||
|
$(if $(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH), \
|
||||||
|
$(SED) '/__INITRD_PATH__/d' $(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH))
|
||||||
|
$(if $(ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH), \
|
||||||
|
$(SED) '/append[[:space:]]*initrd=__INITRD_PATH__[[:space:]]*$$/d' $(ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH) && \
|
||||||
|
$(SED) 's/initrd=__INITRD_PATH__[[:space:]]*//' $(ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH))
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
|
||||||
|
# Copy kernel when using initrd
|
||||||
|
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL
|
||||||
|
|
||||||
|
ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
|
||||||
|
# Initramfs is built into kernel - disable external initrd
|
||||||
|
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
|
||||||
|
else
|
||||||
|
# External initrd - copy it and update configs
|
||||||
|
ROOTFS_ISO9660_DEPENDENCIES += rootfs-cpio
|
||||||
|
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_ENABLE_EXTERNAL_INITRD
|
||||||
endif
|
endif
|
||||||
|
|
||||||
else # ROOTFS_ISO9660_USE_INITRD
|
else # Not using initrd
|
||||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y)
|
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y)
|
||||||
# We must use the uncompressed kernel image
|
# Transparent compression requires uncompressed kernel
|
||||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL
|
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
|
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
|
||||||
|
endif
|
||||||
|
|
||||||
endif # ROOTFS_ISO9660_USE_INITRD
|
################################################################################
|
||||||
|
# Bootloader Installation
|
||||||
|
# This must happen last after all config files are prepared
|
||||||
|
################################################################################
|
||||||
|
|
||||||
ROOTFS_ISO9660_OPTS += -J -R
|
define ROOTFS_ISO9660_INSTALL_BOOTLOADERS
|
||||||
|
$(ROOTFS_ISO9660_INSTALL_GRUB2_BIOS)
|
||||||
|
$(ROOTFS_ISO9660_INSTALL_ISOLINUX_BIOS)
|
||||||
|
$(ROOTFS_ISO9660_INSTALL_GRUB2_EFI)
|
||||||
|
endef
|
||||||
|
|
||||||
|
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_INSTALL_BOOTLOADERS
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# ISO9660 Generation Options
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
ROOTFS_ISO9660_OPTS += -r -J -joliet-long -cache-inodes -V 'ISO9660'
|
||||||
|
|
||||||
ROOTFS_ISO9660_OPTS_BIOS = \
|
ROOTFS_ISO9660_OPTS_BIOS = \
|
||||||
-b $(ROOTFS_ISO9660_BOOT_IMAGE) \
|
-b $(ROOTFS_ISO9660_BOOT_IMAGE) \
|
||||||
@@ -169,29 +386,59 @@ ROOTFS_ISO9660_OPTS_EFI = \
|
|||||||
--efi-boot $(ROOTFS_ISO9660_EFI_PARTITION) \
|
--efi-boot $(ROOTFS_ISO9660_EFI_PARTITION) \
|
||||||
-no-emul-boot
|
-no-emul-boot
|
||||||
|
|
||||||
|
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y)
|
||||||
|
ROOTFS_ISO9660_OPTS += -c isolinux/boot.cat
|
||||||
|
else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BOTH),y)
|
||||||
|
ROOTFS_ISO9660_OPTS += -c isolinux/boot.cat
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Determine which boot options to use
|
||||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER)$(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),yy)
|
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER)$(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),yy)
|
||||||
|
# Both BIOS and EFI
|
||||||
ROOTFS_ISO9660_OPTS += \
|
ROOTFS_ISO9660_OPTS += \
|
||||||
$(ROOTFS_ISO9660_OPTS_BIOS) \
|
$(ROOTFS_ISO9660_OPTS_BIOS) \
|
||||||
-eltorito-alt-boot \
|
-eltorito-alt-boot \
|
||||||
$(ROOTFS_ISO9660_OPTS_EFI)
|
$(ROOTFS_ISO9660_OPTS_EFI)
|
||||||
|
|
||||||
else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER),y)
|
else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER),y)
|
||||||
|
# BIOS only
|
||||||
ROOTFS_ISO9660_OPTS += $(ROOTFS_ISO9660_OPTS_BIOS)
|
ROOTFS_ISO9660_OPTS += $(ROOTFS_ISO9660_OPTS_BIOS)
|
||||||
|
|
||||||
else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),y)
|
else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),y)
|
||||||
|
# EFI only
|
||||||
ROOTFS_ISO9660_OPTS += $(ROOTFS_ISO9660_OPTS_EFI)
|
ROOTFS_ISO9660_OPTS += $(ROOTFS_ISO9660_OPTS_EFI)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Hybrid Image Support (USB bootable)
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y)
|
||||||
|
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BOTH),y)
|
||||||
|
ROOTFS_ISO9660_OPTS += \
|
||||||
|
-isohybrid-mbr $(HOST_DIR)/share/syslinux/isohdpfx.bin \
|
||||||
|
-isohybrid-gpt-basdat -isohybrid-apm-hfsplus
|
||||||
|
else
|
||||||
|
define ROOTFS_ISO9660_GEN_HYBRID
|
||||||
|
$(HOST_DIR)/bin/isohybrid -t 0x96 $@
|
||||||
|
endef
|
||||||
|
ROOTFS_ISO9660_POST_GEN_HOOKS += ROOTFS_ISO9660_GEN_HYBRID
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# ISO9660 Image Generation
|
||||||
|
################################################################################
|
||||||
|
|
||||||
define ROOTFS_ISO9660_CMD
|
define ROOTFS_ISO9660_CMD
|
||||||
$(HOST_DIR)/bin/xorriso -as mkisofs \
|
$(HOST_DIR)/bin/xorriso -as mkisofs \
|
||||||
$(ROOTFS_ISO9660_OPTS) \
|
$(ROOTFS_ISO9660_OPTS) \
|
||||||
-o $@ $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
-o $@ $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y)
|
################################################################################
|
||||||
define ROOTFS_ISO9660_GEN_HYBRID
|
# Register filesystem
|
||||||
$(HOST_DIR)/bin/isohybrid -t 0x96 $@
|
################################################################################
|
||||||
endef
|
|
||||||
|
|
||||||
ROOTFS_ISO9660_POST_GEN_HOOKS += ROOTFS_ISO9660_GEN_HYBRID
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(eval $(rootfs))
|
$(eval $(rootfs))
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
default 1
|
default menu.c32
|
||||||
label 1
|
prompt 0
|
||||||
kernel __KERNEL_PATH__
|
timeout 50
|
||||||
initrd __INITRD_PATH__
|
|
||||||
append root=/dev/sr0
|
menu title ShredOS
|
||||||
|
|
||||||
|
label shredos
|
||||||
|
menu label ShredOS
|
||||||
|
kernel __KERNEL_PATH__
|
||||||
|
append initrd=__INITRD_PATH__ console=tty3 loglevel=3
|
||||||
|
|
||||||
|
label shredos-nomodeset
|
||||||
|
menu label ShredOS (nomodeset)
|
||||||
|
kernel __KERNEL_PATH__
|
||||||
|
append initrd=__INITRD_PATH__ console=tty3 loglevel=3 nomodeset
|
||||||
|
|||||||
Reference in New Issue
Block a user