forked from mirrored-repos/manjaro-tools
util-iso-boot: clean up efi loader code
This commit is contained in:
parent
a2e170c194
commit
6652a1c1ae
2 changed files with 46 additions and 81 deletions
|
@ -24,6 +24,14 @@ set_mkinicpio_hooks(){
|
|||
fi
|
||||
}
|
||||
|
||||
gen_boot_args(){
|
||||
local args=(quiet)
|
||||
if ${plymouth_boot};then
|
||||
args+=(splash)
|
||||
fi
|
||||
echo ${args[@]}
|
||||
}
|
||||
|
||||
set_silent_switch_root(){
|
||||
sed -e 's|"$@"|"$@" >/dev/null 2>&1|' -i $1/usr/lib/initcpio/init
|
||||
}
|
||||
|
@ -46,38 +54,6 @@ gen_boot_image(){
|
|||
-g /boot/initramfs.img
|
||||
}
|
||||
|
||||
copy_preloader_efi(){
|
||||
msg2 "Copying efi loaders ..."
|
||||
cp $1/usr/share/efitools/efi/PreLoader.efi $2/bootx64.efi
|
||||
cp $1/usr/share/efitools/efi/HashTool.efi $2/
|
||||
}
|
||||
|
||||
copy_loader_efi(){
|
||||
cp $1/usr/lib/systemd/boot/efi/systemd-bootx64.efi $2/loader.efi
|
||||
}
|
||||
|
||||
is_intel_ucode(){
|
||||
if [[ -f $1/iso/${iso_name}/boot/intel_ucode.img ]] ; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
copy_efi_shell(){
|
||||
for f in $1${DATADIR}/efi_shell/*.efi;do
|
||||
msg2 "Copying efi shell ..."
|
||||
[[ -f $f ]] && cp $f $2/
|
||||
done
|
||||
}
|
||||
|
||||
copy_efi_shell_conf(){
|
||||
for f in cp $1${DATADIR}/efi_shell/*.conf;do
|
||||
msg2 "Copying efi shell loader entries ..."
|
||||
[[ -f $f ]] && cp $f $2/
|
||||
done
|
||||
}
|
||||
|
||||
copy_ucode(){
|
||||
cp $1/boot/intel-ucode.img $2/intel_ucode.img
|
||||
cp $1/usr/share/licenses/intel-ucode/LICENSE $2/intel_ucode.LICENSE
|
||||
|
@ -85,24 +61,14 @@ copy_ucode(){
|
|||
|
||||
copy_boot_images(){
|
||||
msg2 "Copying boot images ..."
|
||||
cp $1/iso/${iso_name}/boot/x86_64/vmlinuz $1/efiboot/EFI/miso/vmlinuz.efi
|
||||
cp $1/iso/${iso_name}/boot/x86_64/initramfs.img $1/efiboot/EFI/miso/initramfs.img
|
||||
if $(is_intel_ucode "$1"); then
|
||||
cp $1/iso/${iso_name}/boot/intel_ucode.img $1/efiboot/EFI/miso/intel_ucode.img
|
||||
fi
|
||||
}
|
||||
prepare_dir "$1/efiboot/EFI/miso"
|
||||
local miso_efi=$1/efiboot/EFI/miso boot=$1/iso/${iso_name}/boot
|
||||
cp ${boot}/x86_64/vmlinuz $1/efiboot/EFI/miso/vmlinuz.efi
|
||||
cp ${boot}/x86_64/initramfs.img $1/efiboot/EFI/miso/initramfs.img
|
||||
|
||||
prepare_efi_loader_conf(){
|
||||
prepare_dir "$1"
|
||||
sed "s|%ISO_NAME%|${iso_name}|g" ${DATADIR}/efiboot/loader.conf > $1/loader.conf
|
||||
}
|
||||
|
||||
gen_boot_args(){
|
||||
local args=(quiet)
|
||||
if ${plymouth_boot};then
|
||||
args+=(splash)
|
||||
if [[ -f ${boot}/intel_ucode.img ]] ; then
|
||||
cp ${boot}/intel_ucode.img $1/efiboot/EFI/miso/intel_ucode.img
|
||||
fi
|
||||
echo ${args[@]}
|
||||
}
|
||||
|
||||
vars_to_boot_conf(){
|
||||
|
@ -116,15 +82,28 @@ vars_to_boot_conf(){
|
|||
-i $1
|
||||
}
|
||||
|
||||
prepare_loader_entry(){
|
||||
prepare_efi_loader(){
|
||||
prepare_dir "$2/EFI/boot"
|
||||
|
||||
msg2 "Copying efi loaders ..."
|
||||
cp $1/usr/share/efitools/efi/PreLoader.efi $2/EFI/boot/bootx64.efi
|
||||
cp $1/usr/share/efitools/efi/HashTool.efi $2/EFI/boot
|
||||
cp $1${DATADIR}/efiboot/gummibootx64.efi $2/EFI/boot/loader.efi
|
||||
cp $1${DATADIR}/efiboot/shellx64_v{1,2}.efi $2/EFI
|
||||
|
||||
prepare_dir "$2/loader/entries"
|
||||
|
||||
cp $1${DATADIR}/efiboot/loader.conf $2/loader/loader.conf
|
||||
vars_to_boot_conf $2/loader/loader.conf
|
||||
cp $1${DATADIR}/efiboot/uefi-shell-v{1,2}-x86_64.conf $2/loader/entries
|
||||
|
||||
local drv='free' switch="no"
|
||||
prepare_dir "$1/loader/entries"
|
||||
cp ${DATADIR}/efiboot/miso-$2.conf $1/loader/entries/${iso_name}-x86_64.conf
|
||||
vars_to_boot_conf "$1/loader/entries/${iso_name}-x86_64.conf" "$drv" "$switch"
|
||||
cp $1${DATADIR}/efiboot/entry-x86_64-$3.conf $2/loader/entries/${iso_name}-x86_64.conf
|
||||
vars_to_boot_conf "$2/loader/entries/${iso_name}-x86_64.conf" "$drv" "$switch"
|
||||
if ${nonfree_mhwd};then
|
||||
drv='nonfree' switch="yes"
|
||||
cp ${DATADIR}/efiboot/miso-$2.conf $1/loader/entries/${iso_name}-x86_64-nonfree.conf
|
||||
vars_to_boot_conf "$1/loader/entries/${iso_name}-x86_64-nonfree.conf" "$drv" "$switch"
|
||||
cp $1${DATADIR}/efiboot/entry-x86_64-$3.conf $2/loader/entries/${iso_name}-x86_64-nonfree.conf
|
||||
vars_to_boot_conf "$2/loader/entries/${iso_name}-x86_64-nonfree.conf" "$drv" "$switch"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -298,7 +298,7 @@ make_image_mhwd() {
|
|||
|
||||
make_image_boot() {
|
||||
if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
|
||||
msg "Prepare [%s/boot]" "${iso_name}"
|
||||
msg "Prepare [/iso/%s/boot]" "${iso_name}"
|
||||
local path_iso="${work_dir}/iso/${iso_name}/boot"
|
||||
mkdir -p ${path_iso}/${target_arch}
|
||||
cp ${work_dir}/root-image/boot/memtest86+/memtest.bin ${path_iso}/${target_arch}/memtest
|
||||
|
@ -320,55 +320,41 @@ make_image_boot() {
|
|||
|
||||
rm -R ${path}
|
||||
: > ${work_dir}/build.${FUNCNAME}
|
||||
msg "Done [%s/boot]" "${iso_name}"
|
||||
msg "Done [/iso/%s/boot]" "${iso_name}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Prepare /EFI
|
||||
make_efi_usb() {
|
||||
if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
|
||||
msg "Prepare [%s/boot/EFI]" "${iso_name}"
|
||||
local boot=${work_dir}/iso/EFI/boot
|
||||
mkdir -p ${boot}
|
||||
copy_preloader_efi "${work_dir}/live-image" "${boot}"
|
||||
copy_loader_efi "${work_dir}/root-image" "${boot}"
|
||||
prepare_efi_loader_conf "${work_dir}/iso/loader"
|
||||
prepare_loader_entry "${work_dir}/iso" "usb"
|
||||
copy_efi_shell "${work_dir}/live-image" "${work_dir}/iso/EFI"
|
||||
copy_efi_shell_conf "${work_dir}/live-image" "${work_dir}/iso/loader/entries"
|
||||
msg "Prepare [/iso/EFI]"
|
||||
prepare_efi_loader "${work_dir}/live-image" "${work_dir}/iso" "usb"
|
||||
: > ${work_dir}/build.${FUNCNAME}
|
||||
msg "Done [%s/boot/EFI]" "${iso_name}"
|
||||
msg "Done [/iso/EFI]"
|
||||
fi
|
||||
}
|
||||
|
||||
# Prepare kernel.img::/EFI for "El Torito" EFI boot mode
|
||||
make_efi_dvd() {
|
||||
if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
|
||||
msg "Prepare [%s/iso/EFI]" "${iso_name}"
|
||||
msg "Prepare [/efiboot/EFI]"
|
||||
local miso=${work_dir}/iso/EFI/miso
|
||||
mkdir -p ${miso}
|
||||
truncate -s 31M ${miso}/efiboot.img
|
||||
mkfs.fat -n MISO_EFI ${miso}/efiboot.img
|
||||
mkdir -p ${work_dir}/efiboot
|
||||
mount ${miso}/efiboot.img ${work_dir}/efiboot
|
||||
mkdir -p ${work_dir}/efiboot/EFI/{miso,boot}
|
||||
copy_boot_images "${work_dir}"
|
||||
local boot=${work_dir}/efiboot/EFI/boot
|
||||
copy_preloader_efi "${work_dir}/live-image" "${boot}"
|
||||
copy_loader_efi "${work_dir}/root-image" "${boot}"
|
||||
prepare_efi_loader_conf "${work_dir}/efiboot/loader"
|
||||
prepare_loader_entry "${work_dir}/efiboot" "dvd"
|
||||
copy_efi_shell "${work_dir}/live-image" "${work_dir}/efiboot/EFI"
|
||||
copy_efi_shell_conf "${work_dir}/live-image" "${work_dir}/efiboot/loader/entries"
|
||||
prepare_efi_loader "${work_dir}/live-image" "${work_dir}/efiboot" "dvd"
|
||||
umount -d ${work_dir}/efiboot
|
||||
: > ${work_dir}/build.${FUNCNAME}
|
||||
msg "Done [%s/iso/EFI]" "${iso_name}"
|
||||
msg "Done [/efiboot/EFI]"
|
||||
fi
|
||||
}
|
||||
|
||||
make_syslinux() {
|
||||
if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
|
||||
msg "Prepare [%s/iso/syslinux]" "${iso_name}"
|
||||
msg "Prepare [/iso/syslinux]"
|
||||
local syslinux=${work_dir}/iso/syslinux
|
||||
mkdir -p ${syslinux}
|
||||
prepare_syslinux "${syslinux}"
|
||||
|
@ -376,16 +362,16 @@ make_syslinux() {
|
|||
gzip -c -9 ${work_dir}/root-image/usr/share/hwdata/pci.ids > ${syslinux}/hdt/pciids.gz
|
||||
gzip -c -9 ${work_dir}/live-image/usr/lib/modules/*-MANJARO/modules.alias > ${syslinux}/hdt/modalias.gz
|
||||
: > ${work_dir}/build.${FUNCNAME}
|
||||
msg "Done [%s/iso/syslinux]" "${iso_name}"
|
||||
msg "Done [/iso/syslinux]"
|
||||
fi
|
||||
}
|
||||
|
||||
make_isomounts() {
|
||||
if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
|
||||
msg "Prepare [isomounts]"
|
||||
msg "Prepare [/iso/%s/isomounts]" "${iso_name}"
|
||||
write_isomounts "${work_dir}/iso/${iso_name}"
|
||||
: > ${work_dir}/build.${FUNCNAME}
|
||||
msg "Done [isomounts]"
|
||||
msg "Done [/iso/%s/isomounts]" "${iso_name}"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -464,11 +450,11 @@ prepare_images(){
|
|||
run_safe "make_image_mhwd"
|
||||
fi
|
||||
run_safe "make_image_boot"
|
||||
run_safe "make_syslinux"
|
||||
if [[ "${target_arch}" == "x86_64" ]]; then
|
||||
run_safe "make_efi_usb"
|
||||
run_safe "make_efi_dvd"
|
||||
fi
|
||||
run_safe "make_syslinux"
|
||||
run_safe "make_isomounts"
|
||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue