ISO
- Add
.tar.zst
packages on the install iso (rad should install to custom root, a la pacstrap) - Add
limine
, (mtools
?) andparted
to install iso - Add
dosfstools
,efibootmgr
andgptfdisk
to install iso - Do not add microcode or firmware to live iso?
- Modify
/etc/issue
and add date and username and pass: https://www.linuxfromscratch.org/blfs/view/svn/postlfs/logon.html makewhatis /usr/share/man
to update man-pages- Prefer
cat
todd
Live
- sleep is essential to avoid race conditions
- Mounting a device
/dev/sda
is typeiso9660
- Mounting a partition
/dev/sda3
is typehfsplus
- If detected as
/dev/sr0
it is typeiso9660
- if detected as hard drive (usb) it is type
hfsplus
xorriso
requires-hfsplus -apm-block-size 2048
to work on a bootable USB (Hybrid setup) (default ongrub-mkrescue
)- Avoid rEFInd (fork of rEFIt from macOS)
- Avoid EFI editors like efibootmgr, bcfg and kesboot (mess motherboard’s NVRAM and EFI)
EFI/BOOT
should be under/
and not under/boot
(xorriso)- Recommended size of
/boot
and ESP: https://www.rodsbooks.com/efi-bootloaders/principles.html vfat
vsfat32
vsfat
for ESP partition: https://uefi.org/specifications- Volume ID should be in capital letters according to ISO 9660 (
GLAUCUS
) (ECMA-119 demands ASCII characters out ofA-Z0-9_
) - Suse removed bios support from iso
Software
cdrtools
(includesmkisofs
)libburnia
(includeslibisoburn
,xorriso
andcdrskin
)mkisofs
(part ofcdrtools
, people switched toxorriso
, license?)xorrecord
(emulation ofcdrecord
byxorriso
)xorrisofs
(emulation ofmkisofs
byxorriso
)
Excluded
cdrdao
(GUI)cdrecord
(deprecated version ofcdrtools
)cdrkit
(deprecated fork ofcdrtools
, Mr. Schilling says it sucks, filled with bugs and license concerns)cdw
(GUI)dvd+rw-tools
(deprecated, akagrowisofs
, does not deal with CDs)genisofs
genisoimage
(deprecated, fork ofmkisofs
, fromcdrkit
)wodim
(deprecated, fork ofcdrecord
, fromcdrkit
)
ISO 9660 Extensions (relax limitations)
- Apple ISO 9660 Extensions (file characteristics specific to the classic Mac OS and macOS, such as resource forks, file backup date and more)
- El Torito (enables CDs to be bootable)
- Joliet (Unicode, allowing non-Latin scripts to be used)
- Rock Ridge (Unix-style permissions and longer names)
Booster
- Does not support live environments
e1000
provides internet access inside QEMU, and has been added to the default booster configuration- After install, booster should be rerun to generate a native non-universal build
GRUB
- Do not use
--disable-shim-lock
to disableshim_lock
as it would render the iso not bootable when Secure Boot is enabled - Arch images do not support Secure Boot; disable Secure Boot to boot the install medium, and if desired, it can be set up after install
- you can’t use more than 300k files on an ISO, which is why we have to disable
hfsplus
when creating ISO:-hfsplus off
(This does not work with xorriso in grub-mkrescue) -r
enables Rock Ridge and changes file ownership to0
; usingsudo
without-r
does not change file ownershipgrub-mkrescue
runsxorriso
:
- Previous
grub-mkrescue
command to generate glaucus iso
fstab
- The number before last in the table structure is an outdated backup method and should not be used (kept 0)
- The last number in the table is the File System Check Order: (second digit).
0
means that fsck will not check the filesystem. Numbers higher than this represent the check order. The root filesystem should be set to1
and other partitions set to2
. - Consider the following fstab for EROFS/overlayfs:
OverlayFS (rw)
- lower should be ro
- upper and work should be rw in a tmpfs space like
/run
and not in something like/media
(cdrom can be kept in/media
though) switch_root
is responsible for movingproc
,dev
andsys
to the new root
Alpine
- Uses
grub
forefi
andisolinux
forbios
- SquashFS inside
boot
calledmodloop
is mounted on/.modloop
using/dev/loop0
tmpfs
mounted on/
forrw
- Installs packages in
apks
directory
Arch
systemd-boot
forefi
andisolinux
forbios
Kiss
- no rootfs; either the initramfs is being used directly or packages are being extracted at boot time?
- requires at least 2 GB of RAM to boot to extract all the packages
- ram on / type tmpfs
- base install packages in pkgs
Resources
- Mr. Jörg Schilling (GOAT of cd tools, died 2021)
- https://en.m.wikipedia.org/wiki/Comparison_of_disc_image_software
- https://fedoraproject.org/wiki/LiveOS_image
- https://gitea.artixlinux.org/artix/iso-profiles
- https://github.com/archlinux/archiso
- https://github.com/chimera-linux/chimera-live
- https://github.com/coreos/bootengine
- https://github.com/dslm4515/mlfs-linux-live
- https://github.com/eudaldgr/kiss-live/blob/master/kiss-live
- https://github.com/eudaldgr/kiss-live/blob/master/kiss-live#L197
- https://github.com/garybgenett/gary-os
- https://github.com/hanh-linux/gen-initramfs/wiki/Explanation-of-how-initramfs-mounts-the-ISO
- https://github.com/KeithDHedger/LFSBootCD
- https://github.com/kiss-community/kiss-live
- https://github.com/laurent85v/archuseriso
- https://github.com/MX-Linux/build-iso-mx
- https://github.com/oasislinux/oasis/issues/11
- https://github.com/Tomas-M/linux-live
- https://github.com/venomlinux/mkinitramfs
- https://github.com/void-linux/void-mklive/blob/master/mklive.sh
- https://hacktivis.me/articles/bootstrap-initrd
- https://landley.net/writing/rootfs-programming.html
- https://linux-live.org/
- https://notabug.org/arsv/minibase-artix
- https://roscopeco.com/2013/08/12/creating-a-bootable-hard-disk-image-with-grub2/
- https://superuser.com/questions/130955/how-to-install-grub-into-an-img-file
- https://unix.stackexchange.com/questions/224277/is-it-better-to-use-cat-dd-pv-or-another-procedure-to-copy-a-cd-dvd/224314#224314
- https://wiki.archlinux.org/title/Optical_disc_drive
- https://wiki.archlinux.org/title/USB_flash_installation_medium
- https://www.linuxfromscratch.org/hints/downloads/files/boot-cd_easy.txt
- https://www.linuxquestions.org/questions/linux-from-scratch-13/create-an-iso-from-lfs-build-4175703319/
- https://www.phenix.bnl.gov/~purschke/RescueCD/
- https://www.vidarholen.net/contents/blog/?p=479