mirror of
https://github.com/MiyooCFW/buildroot.git
synced 2025-09-27 22:24:19 +03:00
Merge from bittboy/buildroot@db180c0
This commit is contained in:
89
fs/iso9660/Config.in
Normal file
89
fs/iso9660/Config.in
Normal file
@@ -0,0 +1,89 @@
|
||||
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_I386_PC || \
|
||||
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_I386_PC
|
||||
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
|
||||
|
||||
endchoice
|
||||
|
||||
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 i386-pc or isolinux to be built"
|
||||
depends on BR2_i386 || BR2_x86_64
|
||||
depends on !BR2_LINUX_KERNEL || \
|
||||
!(BR2_TARGET_GRUB2_I386_PC || BR2_TARGET_SYSLINUX_ISOLINUX)
|
||||
7
fs/iso9660/grub.cfg
Normal file
7
fs/iso9660/grub.cfg
Normal file
@@ -0,0 +1,7 @@
|
||||
set default="0"
|
||||
set timeout="10"
|
||||
|
||||
menuentry "Buildroot" {
|
||||
linux __KERNEL_PATH__ root=/dev/sr0
|
||||
initrd __INITRD_PATH__
|
||||
}
|
||||
146
fs/iso9660/iso9660.mk
Normal file
146
fs/iso9660/iso9660.mk
Normal file
@@ -0,0 +1,146 @@
|
||||
################################################################################
|
||||
#
|
||||
# Build the iso96600 root filesystem image
|
||||
#
|
||||
################################################################################
|
||||
|
||||
#
|
||||
# We need to handle three cases:
|
||||
#
|
||||
# 1. The ISO9660 filesystem will really be the real root filesystem
|
||||
# itself. This is when BR2_TARGET_ROOTFS_ISO9660_INITRD is
|
||||
# disabled.
|
||||
#
|
||||
# 2. The ISO9660 filesystem will be a filesystem with just a kernel
|
||||
# image, initrd and grub. This is when
|
||||
# BR2_TARGET_ROOTFS_ISO9660_INITRD is enabled, but
|
||||
# BR2_TARGET_ROOTFS_INITRAMFS is disabled.
|
||||
#
|
||||
# 3. The ISO9660 filesystem will be a filesystem with just a kernel
|
||||
# image and grub. This is like (2), except that the initrd is
|
||||
# built into the kernel image. This is when
|
||||
# BR2_TARGET_ROOTFS_INITRAMFS is enabled (regardless of the value
|
||||
# of BR2_TARGET_ROOTFS_ISO9660_INITRD).
|
||||
|
||||
ROOTFS_ISO9660_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU))
|
||||
|
||||
ROOTFS_ISO9660_DEPENDENCIES = host-cdrkit linux
|
||||
|
||||
ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
|
||||
ROOTFS_ISO9660_USE_INITRD = YES
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_INITRD),y)
|
||||
ROOTFS_ISO9660_USE_INITRD = YES
|
||||
endif
|
||||
|
||||
ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
|
||||
ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp
|
||||
define ROOTFS_ISO9660_CREATE_TEMPDIR
|
||||
$(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
||||
mkdir -p $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
||||
endef
|
||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_CREATE_TEMPDIR
|
||||
else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y)
|
||||
ROOTFS_ISO9660_DEPENDENCIES += host-zisofs-tools
|
||||
ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp
|
||||
# This must be early, before we copy the bootloader files.
|
||||
define ROOTFS_ISO9660_MKZFTREE
|
||||
$(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
||||
$(HOST_DIR)/bin/mkzftree -X -z 9 -p $(PARALLEL_JOBS) \
|
||||
$(TARGET_DIR) \
|
||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
||||
endef
|
||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_MKZFTREE
|
||||
ROOTFS_ISO9660_GENISOIMAGE_OPTS += -z
|
||||
else
|
||||
ROOTFS_ISO9660_TMP_TARGET_DIR = $(TARGET_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2),y)
|
||||
ROOTFS_ISO9660_DEPENDENCIES += grub2
|
||||
ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
|
||||
$(ROOTFS_ISO9660_TMP_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_TMP_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 = \
|
||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/isolinux.cfg
|
||||
ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin
|
||||
define ROOTFS_ISO9660_INSTALL_BOOTLOADER
|
||||
$(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
|
||||
endef
|
||||
endif
|
||||
|
||||
define ROOTFS_ISO9660_PREPARATION
|
||||
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_BOOT_MENU) \
|
||||
$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
|
||||
$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
|
||||
$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
|
||||
$(ROOTFS_ISO9660_INSTALL_BOOTLOADER)
|
||||
endef
|
||||
|
||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_PREPARATION
|
||||
|
||||
define ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
|
||||
$(SED) '/__INITRD_PATH__/d' $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
|
||||
endef
|
||||
|
||||
# Copy the kernel to temporary filesystem
|
||||
define ROOTFS_ISO9660_COPY_KERNEL
|
||||
$(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \
|
||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME)
|
||||
endef
|
||||
|
||||
ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
|
||||
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) \
|
||||
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/initrd
|
||||
$(SED) "s%__INITRD_PATH__%/boot/initrd%" \
|
||||
$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
|
||||
endef
|
||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_INITRD
|
||||
endif
|
||||
|
||||
else # ROOTFS_ISO9660_USE_INITRD
|
||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y)
|
||||
# We must use the uncompressed kernel image
|
||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL
|
||||
endif
|
||||
|
||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
|
||||
|
||||
endif # ROOTFS_ISO9660_USE_INITRD
|
||||
|
||||
define ROOTFS_ISO9660_CMD
|
||||
$(HOST_DIR)/bin/genisoimage -J -R -b $(ROOTFS_ISO9660_BOOT_IMAGE) \
|
||||
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
||||
$(ROOTFS_ISO9660_GENISOIMAGE_OPTS) \
|
||||
-o $@ $(ROOTFS_ISO9660_TMP_TARGET_DIR)
|
||||
endef
|
||||
|
||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y)
|
||||
define ROOTFS_ISO9660_GEN_HYBRID
|
||||
$(HOST_DIR)/bin/isohybrid -t 0x96 $@
|
||||
endef
|
||||
|
||||
ROOTFS_ISO9660_POST_GEN_HOOKS += ROOTFS_ISO9660_GEN_HYBRID
|
||||
endif
|
||||
|
||||
$(eval $(rootfs))
|
||||
5
fs/iso9660/isolinux.cfg
Normal file
5
fs/iso9660/isolinux.cfg
Normal file
@@ -0,0 +1,5 @@
|
||||
default 1
|
||||
label 1
|
||||
kernel __KERNEL_PATH__
|
||||
initrd __INITRD_PATH__
|
||||
append root=/dev/sr0
|
||||
Reference in New Issue
Block a user