mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-19 17:26:28 +00:00
Now that LinuxKit works on a truly immutable filesystem, for an ISO it makes sense to use the ISO filesystem rather than using an initrd. Only major difference is you may need to specify the device for the root filesystem in the kernel command line, but we set a sane default of `/dev/sr0` if unspecified. Signed-off-by: Justin Cormack <justin.cormack@docker.com>
42 lines
1.0 KiB
Bash
Executable File
42 lines
1.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
mkdir -p /tmp/iso
|
|
cd /tmp/iso
|
|
|
|
# input is a tarball of filesystem on stdin with kernel in /boot
|
|
# output is an iso on stdout
|
|
|
|
# extract. BSD tar auto recognises compression, unlike GNU tar
|
|
# only if stdin is a tty, if so need files volume mounted...
|
|
[ -t 0 ] || bsdtar xzf -
|
|
|
|
CMDLINE="$(cat boot/cmdline)"
|
|
# if no root= root device specified, assume /dev/sr0 ie first CD drive
|
|
echo "${CMDLINE}" | grep -q 'root=' || CMDLINE="${CMDLINE} root=/dev/sr0"
|
|
rm boot/cmdline
|
|
|
|
mkdir -p isolinux
|
|
cp /usr/share/syslinux/isolinux.bin ./isolinux/
|
|
cp /usr/share/syslinux/ldlinux.c32 ./isolinux/
|
|
|
|
CFG="DEFAULT linux
|
|
LABEL linux
|
|
KERNEL /boot/kernel
|
|
APPEND ${CMDLINE}
|
|
"
|
|
|
|
printf "$CFG" > isolinux/isolinux.cfg
|
|
|
|
genisoimage -o ../linuxkit-bios.iso -l -J -R \
|
|
-c isolinux/boot.cat \
|
|
-b isolinux/isolinux.bin \
|
|
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
|
-joliet-long -input-charset utf8 \
|
|
-V LinuxKit .
|
|
|
|
isohybrid ../linuxkit-bios.iso
|
|
|
|
cat ../linuxkit-bios.iso
|