EFI support
This commit is contained in:
parent
c83032b883
commit
5c48627195
1 changed files with 110 additions and 42 deletions
|
@ -1,50 +1,118 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
echo "HOOKS="base udev archiso sata filesystems"" > work/airootfs/etc/mkinitcpio.conf
|
set -e -u
|
||||||
echo "COMPRESSION="xz"" >> work/airootfs/etc/mkinitcpio.conf
|
|
||||||
|
|
||||||
arch-chroot work/airootfs mkinitcpio -p linux
|
iso_name=SIMON_OS
|
||||||
|
iso_label="SIMON_OS"
|
||||||
|
iso_version=$(date +%Y.%m.%d)
|
||||||
|
work_dir=work
|
||||||
|
out_dir=out
|
||||||
|
install_dir=arch
|
||||||
|
|
||||||
mkdir work/iso
|
pacstrap -i ${work_dir}/airootfs base base-devel syslinux efibootmgr
|
||||||
mkdir work/iso/isolinux
|
|
||||||
mkdir work/iso/arch
|
|
||||||
mkdir work/iso/arch/boot
|
|
||||||
mkdir work/iso/arch/x86_64
|
|
||||||
mkdir work/iso/arch/boot/x86_64
|
|
||||||
mkdir work/iso/arch/boot/syslinux
|
|
||||||
|
|
||||||
cp -R work/airootfs/usr/lib/syslinux/bios/* work/iso/arch/boot/syslinux/
|
echo "HOOKS="base udev archiso sata filesystems"" > ${work_dir}/airootfs/etc/mkinitcpio.conf
|
||||||
cp work/airootfs/boot/initramfs-linux.img work/iso/arch/boot/x86_64/
|
echo "COMPRESSION="xz"" >> ${work_dir}/airootfs/etc/mkinitcpio.conf
|
||||||
cp work/airootfs/boot/initramfs-linux-fallback.img work/iso/arch/boot/x86_64/
|
|
||||||
cp work/airootfs/boot/vmlinuz-linux work/iso/arch/boot/x86_64/
|
|
||||||
cp work/airootfs/usr/lib/syslinux/bios/isolinux.bin work/iso/isolinux/
|
|
||||||
cp work/airootfs/usr/lib/syslinux/bios/isohdpfx.bin work/iso/isolinux/
|
|
||||||
cp work/airootfs/usr/lib/syslinux/bios/ldlinux.c32 work/iso/isolinux/
|
|
||||||
|
|
||||||
arch-chroot work/airootfs LANG=C pacman -Sl | awk '/\[installed\]$/ {print $1 "/" $2 "-" $3}' > /pkglist.txt
|
arch-chroot ${work_dir}/airootfs mkinitcpio -p linux
|
||||||
cp work/airootfs/pkglist.txt work/iso/arch/x86_64/
|
|
||||||
arch-chroot work/airootfs pacman -Scc
|
|
||||||
mksquashfs work/airootfs work/iso/arch/x86_64/airootfs.sfs -noappend -comp xz
|
|
||||||
md5sum work/iso/arch/x86_64/airootfs.sfs > work/iso/arch/x86_64/airootfs.md5
|
|
||||||
|
|
||||||
echo "DEFAULT menu.c32" > work/iso/arch/boot/syslinux/syslinux.cfg
|
# BIOS
|
||||||
echo "PROMPT 0" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
echo "MENU TITLE Simon Linux" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
echo "TIMEOUT 300" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
echo "" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
echo "LABEL arch" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
echo "MENU LABEL Simon Linux" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
echo "LINUX ../x86_64/vmlinuz-linux" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
echo "INITRD ../x86_64/initramfs-linux-fallback.img" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
echo "APPEND archisolabel=SIMON_LINUX" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
echo "" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
echo "ONTIMEOUT arch" >> work/iso/arch/boot/syslinux/syslinux.cfg
|
|
||||||
|
|
||||||
echo "DEFAULT loadconfig" > work/iso/isolinux/isolinux.cfg
|
mkdir ${work_dir}/iso
|
||||||
echo "" >> work/iso/isolinux/isolinux.cfg
|
mkdir ${work_dir}/iso/isolinux
|
||||||
echo "LABEL loadconfig" >> work/iso/isolinux/isolinux.cfg
|
mkdir ${work_dir}/iso/arch
|
||||||
echo " CONFIG /arch/boot/syslinux/syslinux.cfg" >> work/iso/isolinux/isolinux.cfg
|
mkdir ${work_dir}/iso/arch/boot
|
||||||
echo " APPEND /arch/boot/syslinux/" >> work/iso/isolinux/isolinux.cfg
|
mkdir ${work_dir}/iso/arch/x86_64
|
||||||
|
mkdir ${work_dir}/iso/arch/boot/x86_64
|
||||||
|
mkdir ${work_dir}/iso/arch/boot/syslinux
|
||||||
|
|
||||||
|
cp -R ${work_dir}/airootfs/usr/lib/syslinux/bios/* ${work_dir}iso/arch/boot/syslinux/
|
||||||
|
cp ${work_dir}/airootfs/boot/initramfs-linux.img ${work_dir}/iso/arch/boot/x86_64/
|
||||||
|
cp ${work_dir}/airootfs/boot/initramfs-linux-fallback.img w${work_dir}/iso/arch/boot/x86_64/
|
||||||
|
cp ${work_dir}/airootfs/boot/vmlinuz-linux ${work_dir}/iso/arch/boot/x86_64/
|
||||||
|
cp ${work_dir}/airootfs/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/
|
||||||
|
cp ${work_dir}/airootfs/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/
|
||||||
|
cp ${work_dir}/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/
|
||||||
|
|
||||||
|
arch-chroot ${work_dir}/airootfs LANG=C pacman -Sl | awk '/\[installed\]$/ {print $1 "/" $2 "-" $3}' > /pkglist.txt
|
||||||
|
cp ${work_dir}/airootfs/pkglist.txt ${work_dir}/iso/arch/x86_64/
|
||||||
|
arch-chroot ${work_dir}/airootfs pacman -Scc
|
||||||
|
mksquashfs ${work_dir}/airootfs ${work_dir}/iso/arch/x86_64/airootfs.sfs -noappend -comp xz
|
||||||
|
md5sum ${work_dir}/iso/arch/x86_64/airootfs.sfs > ${work_dir}/iso/arch/x86_64/airootfs.md5
|
||||||
|
|
||||||
|
echo "DEFAULT menu.c32" > ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "PROMPT 0" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "MENU TITLE ${iso_name}" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "TIMEOUT 300" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "LABEL arch" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "MENU LABEL ${iso_name}" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "LINUX ../x86_64/vmlinuz-linux" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "INITRD ../x86_64/initramfs-linux-fallback.img" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "APPEND archisolabel=${iso_name}" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
echo "ONTIMEOUT arch" >> ${work_dir}/iso/arch/boot/syslinux/syslinux.cfg
|
||||||
|
|
||||||
|
echo "DEFAULT loadconfig" > ${work_dir}/iso/isolinux/isolinux.cfg
|
||||||
|
echo "" >> ${work_dir}/iso/isolinux/isolinux.cfg
|
||||||
|
echo "LABEL loadconfig" >> ${work_dir}/iso/isolinux/isolinux.cfg
|
||||||
|
echo " CONFIG /arch/boot/syslinux/syslinux.cfg" >> ${work_dir}/iso/isolinux/isolinux.cfg
|
||||||
|
echo " APPEND /arch/boot/syslinux/" >> ${work_dir}/iso/isolinux/isolinux.cfg
|
||||||
|
|
||||||
|
# EFI
|
||||||
|
|
||||||
|
mkdir -p ${work_dir}/iso/EFI/boot
|
||||||
|
cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/PreLoader.efi ${work_dir}/iso/EFI/boot/bootx64.efi
|
||||||
|
cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/HashTool.efi ${work_dir}/iso/EFI/boot/
|
||||||
|
|
||||||
|
cp ${work_dir}/x86_64/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/iso/EFI/boot/loader.efi
|
||||||
|
|
||||||
|
mkdir -p ${work_dir}/iso/loader/entries
|
||||||
|
cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/
|
||||||
|
cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/
|
||||||
|
cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/
|
||||||
|
|
||||||
|
sed "s|%ARCHISO_LABEL%|${iso_label}|g;
|
||||||
|
s|%INSTALL_DIR%|${install_dir}|g" \
|
||||||
|
${script_path}/efiboot/loader/entries/archiso-x86_64-usb.conf > ${work_dir}/iso/loader/entries/archiso-x86_64.conf
|
||||||
|
|
||||||
|
# EFI Shell 2.0 for UEFI 2.3+
|
||||||
|
curl -o ${work_dir}/iso/EFI/shellx64_v2.efi https://raw.githubusercontent.com/tianocore/edk2/master/ShellBinPkg/UefiShell/X64/Shell.efi
|
||||||
|
# EFI Shell 1.0 for non UEFI 2.3+
|
||||||
|
curl -o ${work_dir}/iso/EFI/shellx64_v1.efi https://raw.githubusercontent.com/tianocore/edk2/master/EdkShellBinPkg/FullShell/X64/Shell_Full.efi
|
||||||
|
|
||||||
|
mkdir -p ${work_dir}/iso/EFI
|
||||||
|
mkdir -p ${work_dir}/iso/EFI/archiso
|
||||||
|
truncate -s 64M ${work_dir}/iso/EFI/archiso/efiboot.img
|
||||||
|
mkfs.fat -n ARCHISO_EFI ${work_dir}/iso/EFI/archiso/efiboot.img
|
||||||
|
|
||||||
|
mkdir -p ${work_dir}/efiboot
|
||||||
|
mount ${work_dir}/iso/EFI/archiso/efiboot.img ${work_dir}/efiboot
|
||||||
|
|
||||||
|
mkdir -p ${work_dir}/efiboot/EFI/archiso
|
||||||
|
cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/archiso/vmlinuz.efi
|
||||||
|
cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/archiso/archiso.img
|
||||||
|
|
||||||
|
cp ${work_dir}/iso/${install_dir}/boot/intel_ucode.img ${work_dir}/efiboot/EFI/archiso/intel_ucode.img
|
||||||
|
|
||||||
|
mkdir -p ${work_dir}/efiboot/EFI/boot
|
||||||
|
cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/PreLoader.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi
|
||||||
|
|
||||||
|
cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/HashTool.efi ${work_dir}/efiboot/EFI/boot/
|
||||||
|
|
||||||
|
cp ${work_dir}/x86_64/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/efiboot/EFI/boot/loader.efi
|
||||||
|
mkdir -p ${work_dir}/efiboot/loader/entries
|
||||||
|
cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/
|
||||||
|
cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/
|
||||||
|
cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/
|
||||||
|
|
||||||
|
sed "s|%ARCHISO_LABEL%|${iso_label}|g;
|
||||||
|
s|%INSTALL_DIR%|${install_dir}|g" \
|
||||||
|
./efiboot/loader/entries/archiso-x86_64-cd.conf > ${work_dir}/efiboot/loader/entries/archiso-x86_64.conf
|
||||||
|
|
||||||
|
cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/
|
||||||
|
cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/
|
||||||
|
umount -d ${work_dir}/efiboot
|
||||||
|
|
||||||
read -p "Soll das Image jetzt gemacht werden? [Y/n] " image
|
read -p "Soll das Image jetzt gemacht werden? [Y/n] " image
|
||||||
|
|
||||||
|
@ -54,10 +122,10 @@ if [ "$image" != "n" ]
|
||||||
xorriso -as mkisofs \
|
xorriso -as mkisofs \
|
||||||
-iso-level 3 \
|
-iso-level 3 \
|
||||||
-full-iso9660-filenames \
|
-full-iso9660-filenames \
|
||||||
-volid "SIMON_LINUX" \
|
-volid "${iso_label}" \
|
||||||
-eltorito-boot isolinux/isolinux.bin \
|
-eltorito-boot isolinux/isolinux.bin \
|
||||||
-eltorito\-catalog isolinux/boot.cat \
|
-eltorito\-catalog isolinux/boot.cat \
|
||||||
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
||||||
-isohybrid-mbr $(pwd)/work/iso/isolinux/isohdpfx.bin \
|
-isohybrid-mbr $(pwd)/${work_dir}/iso/isolinux/isohdpfx.bin \
|
||||||
-output out/arch-simon-linux-$(date "+%y.%m.%d")-x86_64.iso work/iso/
|
-output out/arch-${iso_label}-$(date "+%y.%m.%d")-x86_64.iso ${work_dir}/iso/
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue