feat(os): Create syslinux boot loader for legacy BIOS machine (#7)

This commit is contained in:
hygienic-books 2023-10-23 02:01:36 +02:00
parent a654f1ad14
commit 84266e66cf

View File

@ -612,11 +612,41 @@ function paru_install () {
fi fi
} }
function configure_syslinux () {
paru_install 'syslinux'
cp /usr/lib/syslinux/bios/*.c32 /boot/syslinux
extlinux --install /boot/syslinux
cat > /boot/syslinux/syslinux.cfg <<EOF
UI menu.c32
PROMPT 0
MENU TITLE ZFSBootMenu
TIMEOUT 100
DEFAULT zfsbootmenu
LABEL zfsbootmenu
MENU LABEL ZFSBootMenu
KERNEL /zfsbootmenu/vmlinuz-bootmenu
INITRD /zfsbootmenu/initramfs-bootmenu.img
APPEND zfsbootmenu quiet loglevel=0
LABEL zfsbootmenu-backup
MENU LABEL ZFSBootMenu (Backup)
KERNEL /zfsbootmenu/vmlinuz-bootmenu-backup
INITRD /zfsbootmenu/initramfs-bootmenu-backup.img
APPEND zfsbootmenu quiet loglevel=0
EOF
dd bs=440 count=1 conv=notrunc if='/usr/lib/syslinux/bios/mbr.bin' of="${boot_drive}"
}
function configure_zfsbootmenu () { function configure_zfsbootmenu () {
#2.9 #2.9
paru_install 'zfsbootmenu' paru_install 'zfsbootmenu'
mkdir -p '/etc/zfsbootmenu/posthooks.d'
cat > '/etc/zfsbootmenu/config.yaml' <<EOF if [[ "${part_schema}" = 'gpt' ]]; then
mkdir -p '/etc/zfsbootmenu/posthooks.d'
cat > '/etc/zfsbootmenu/config.yaml' <<EOF
Global: Global:
ManageImages: true ManageImages: true
BootMountPoint: /efi BootMountPoint: /efi
@ -633,6 +663,23 @@ Kernel:
CommandLine: ro loglevel=0 zbm.import_policy=hostid CommandLine: ro loglevel=0 zbm.import_policy=hostid
Prefix: vmlinuz Prefix: vmlinuz
EOF EOF
get_known_good_stub_loader
else
configure_syslinux
cat > '/etc/zfsbootmenu/config.yaml' <<EOF
Global:
ManageImages: true
BootMountPoint: /boot/syslinux
InitCPIO: true
Components:
Enabled: true
Versions: false
ImageDir: /boot/syslinux/zfsbootmenu
Kernel:
Prefix: vmlinuz
EOF
fi
# Up here maybe 'ro quiet' instead of 'ro'. This is ZFSBootMenu's kernel # Up here maybe 'ro quiet' instead of 'ro'. This is ZFSBootMenu's kernel
# command line. # command line.
@ -688,7 +735,9 @@ function install_os_in_chroot () {
# Install ZFSBootMenu image # Install ZFSBootMenu image
configure_zfsbootmenu #2.9 configure_zfsbootmenu #2.9
get_known_good_stub_loader #2.10 generate-zbm
# Yes, we do this twice so we immediately get a functional backup file
generate-zbm generate-zbm
} }