mirror of
https://gitlab.archlinux.org/tpowa/archboot.git
synced 2024-09-20 03:50:37 +02:00
add setup update patch
This commit is contained in:
parent
15a7c83544
commit
59880fe7df
1 changed files with 98 additions and 42 deletions
|
@ -27,13 +27,10 @@ fi
|
|||
|
||||
set -x
|
||||
|
||||
## Remove old files and dir
|
||||
rm -rf "${archboot_ext}/" || true
|
||||
## Remove old files
|
||||
rm -f "${WD}/${iso_name}.iso" || true
|
||||
echo
|
||||
|
||||
## Create a dir to extract the archboot iso
|
||||
mkdir -p "${archboot_ext}/"
|
||||
cd "${archboot_ext}/"
|
||||
echo
|
||||
|
||||
|
@ -78,12 +75,17 @@ EOF
|
|||
|
||||
"$(which grub-mkimage)" --directory="/usr/lib/grub/x86_64-efi" --memdisk="${memdisk_64_img}" --prefix='(memdisk)/efi/grub2' --output="${grub2_uefi_mp}/efi/boot/bootx64.efi" --format=x86_64-efi ${GRUB2_UEFI_APP_MODULES}
|
||||
|
||||
mkdir -p "${ALLINONE}/efi/boot/"
|
||||
mkdir -p "${archboot_ext}/efi/boot/"
|
||||
cp "${grub2_uefi_mp}/efi/boot/bootx64.efi" "${archboot_ext}/efi/boot/bootx64.efi"
|
||||
|
||||
rm -rf "${memdisk_64_dir}/"
|
||||
rm -f "${memdisk_64_img}"
|
||||
echo
|
||||
|
||||
unset memdisk_64_dir
|
||||
unset memdisk_64_img
|
||||
echo
|
||||
|
||||
}
|
||||
|
||||
_replace_grub2_uefi_i386_iso_files() {
|
||||
|
@ -107,7 +109,7 @@ set prefix=(\${uefi32})/efi/grub2/i386-efi
|
|||
source \${prefix}/grub.cfg
|
||||
EOF
|
||||
|
||||
cat << EOF > "${ALLINONE}/efi/grub2/i386-efi/grub.cfg"
|
||||
cat << EOF > "${archboot_ext}/efi/grub2/i386-efi/grub.cfg"
|
||||
search --file --no-floppy --set=uefi32 /efi/grub2/i386-efi/grub.cfg
|
||||
source (\${uefi32})/efi/grub2/grub.cfg
|
||||
EOF
|
||||
|
@ -116,6 +118,10 @@ EOF
|
|||
|
||||
"$(which grub-mkimage)" --directory="/usr/lib/grub/i386-efi" --memdisk="${memdisk_32_img}" --prefix='(memdisk)/efi/grub2' --format=i386-efi --compression=xz --output="${grub2_uefi_mp}/efi/boot/bootia32.efi" ${GRUB2_UEFI_APP_MODULES}
|
||||
|
||||
rm -rf "${memdisk_32_dir}/"
|
||||
rm -f "${memdisk_32_img}"
|
||||
echo
|
||||
|
||||
unset memdisk_32_dir
|
||||
unset memdisk_32_img
|
||||
echo
|
||||
|
@ -143,17 +149,17 @@ _replace_grub2_uefi_iso_files() {
|
|||
rm -f "${archboot_ext}/efi/boot/grub.cfg" || true
|
||||
rm -f "${archboot_ext}/efi/grub2/grub.cfg"
|
||||
|
||||
cp /usr/share/grub/unicode.pf2 "${ALLINONE}/efi/grub2/"
|
||||
cp /usr/share/grub/unicode.pf2 "${archboot_ext}/efi/grub2/"
|
||||
|
||||
rm -rf "${ALLINONE}/efi/grub2/locale/"
|
||||
mkdir -p "${ALLINONE}/efi/grub2/locale/"
|
||||
rm -rf "${archboot_ext}/efi/grub2/locale/"
|
||||
mkdir -p "${archboot_ext}/efi/grub2/locale/"
|
||||
|
||||
## Taken from /sbin/grub-install
|
||||
for dir in "/usr/share/locale"/*
|
||||
do
|
||||
if test -f "${dir}/LC_MESSAGES/grub.mo"
|
||||
then
|
||||
# cp -f "${dir}/LC_MESSAGES/grub.mo" "${ALLINONE}/efi/grub2/locale/${dir##*/}.mo"
|
||||
# cp -f "${dir}/LC_MESSAGES/grub.mo" "${archboot_ext}/efi/grub2/locale/${dir##*/}.mo"
|
||||
echo
|
||||
fi
|
||||
done
|
||||
|
@ -216,8 +222,12 @@ initrd /boot/initrd64.img
|
|||
|
||||
EOF
|
||||
|
||||
rm -rf "${grub2_uefi_mp}/"
|
||||
echo
|
||||
|
||||
unset grub2_uefi_mp
|
||||
unset LOOP_DEVICE
|
||||
echo
|
||||
|
||||
}
|
||||
|
||||
|
@ -228,30 +238,78 @@ _replace_arch_setup_initramfs() {
|
|||
|
||||
cd "${initramfs_ext}/"
|
||||
|
||||
bsdtar xf "${archboot_ext}/boot/${initramfs_name}.img"
|
||||
echo
|
||||
if [ "${initramfs_name}" == "initrd64" ] || [ "${initramfs_name}" == "initrd64lts" ]
|
||||
then
|
||||
[ -e "${archboot_ext}/boot/initrd64lts.img" ] && bsdtar xf "${archboot_ext}/boot/initrd64lts.img"
|
||||
echo
|
||||
|
||||
mv "${initramfs_ext}/arch/setup" "${initramfs_ext}/arch/setup.old"
|
||||
echo
|
||||
bsdtar xf "${archboot_ext}/boot/initrd64.img"
|
||||
echo
|
||||
fi
|
||||
|
||||
cp "${WD}/setup" "${initramfs_ext}/arch/setup"
|
||||
echo
|
||||
if [ "${initramfs_name}" == "initrd" ] || [ "${initramfs_name}" == "initrdlts" ]
|
||||
then
|
||||
[ -e "${archboot_ext}/boot/initrdlts.img" ] && bsdtar xf "${archboot_ext}/boot/initrdlts.img"
|
||||
echo
|
||||
|
||||
bsdtar xf "${archboot_ext}/boot/initrd.img"
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ -e "${WD}/setup" ]
|
||||
then
|
||||
mv "${initramfs_ext}/arch/setup" "${initramfs_ext}/arch/setup.old"
|
||||
echo
|
||||
|
||||
cp "${WD}/setup" "${initramfs_ext}/arch/setup"
|
||||
echo
|
||||
fi
|
||||
|
||||
chmod +x "${initramfs_ext}/arch/setup"
|
||||
echo
|
||||
|
||||
cd "${initramfs_ext}/"
|
||||
|
||||
# Generate the actual initramfs file
|
||||
find . -print0 | bsdcpio -0oH newc | lzma > "${WD}/${initramfs_name}.img"
|
||||
echo
|
||||
|
||||
cd "${WD}/"
|
||||
|
||||
rm -f "${archboot_ext}/boot/${initramfs_name}.img"
|
||||
echo
|
||||
## Generate the actual initramfs file
|
||||
if [ "${initramfs_name}" == "initrd64" ] || [ "${initramfs_name}" == "initrd64lts" ]
|
||||
then
|
||||
cd "${initramfs_ext}/"
|
||||
find . -print0 | bsdcpio -0oH newc | lzma > "${WD}/initrd64.img"
|
||||
echo
|
||||
|
||||
cp "${WD}/${initramfs_name}.img" "${archboot_ext}/boot/${initramfs_name}.img"
|
||||
[ -e "${archboot_ext}/boot/initrd64lts.img" ] && rm -f "${archboot_ext}/boot/initrd64lts.img"
|
||||
echo
|
||||
|
||||
rm -f "${archboot_ext}/boot/initrd64.img"
|
||||
echo
|
||||
|
||||
cp "${WD}/initrd64.img" "${archboot_ext}/boot/initrd64.img"
|
||||
echo
|
||||
|
||||
rm -f "${WD}/initrd64.img"
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ "${initramfs_name}" == "initrd" ] || [ "${initramfs_name}" == "initrdlts" ]
|
||||
then
|
||||
cd "${initramfs_ext}/"
|
||||
find . -print0 | bsdcpio -0oH newc | lzma > "${WD}/initrd.img"
|
||||
echo
|
||||
|
||||
[ -e "${archboot_ext}/boot/initrdlts.img" ] && rm -f "${archboot_ext}/boot/initrdlts.img"
|
||||
echo
|
||||
|
||||
rm -f "${archboot_ext}/boot/initrd.img"
|
||||
echo
|
||||
|
||||
cp "${WD}/initrd.img" "${archboot_ext}/boot/initrd.img"
|
||||
echo
|
||||
|
||||
rm -f "${WD}/initrd.img"
|
||||
echo
|
||||
fi
|
||||
|
||||
rm -rf "${initramfs_ext}/"
|
||||
echo
|
||||
|
||||
unset initramfs_ext
|
||||
|
@ -290,28 +348,23 @@ if [ "${REPLACE_SETUP}" = "1" ]
|
|||
then
|
||||
cd "${WD}/"
|
||||
|
||||
if [ -e "${WD}/setup" ]
|
||||
then
|
||||
## The old method I tried, mount -o ro -t iso9660 /dev/sr0 /src, mv /arch/setup /arch/setup.old, cp /src/arch/setup /arch/setup, umount /dev/sr0
|
||||
# cp ${WD}/setup ${archboot_ext}/arch/setup
|
||||
## The old method I tried, mount -o ro -t iso9660 /dev/sr0 /src, mv /arch/setup /arch/setup.old, cp /src/arch/setup /arch/setup, umount /dev/sr0
|
||||
# cp ${WD}/setup ${archboot_ext}/arch/setup
|
||||
|
||||
## Extracting using bsdtar, replacing /arch/setup and recompressing the iniramfs archive does not work. Archive format not compatible with initramfs format.
|
||||
## Compressing using bsdcpio and using 'newc' archive format works, taken from falconindy's geninit program.
|
||||
## Extracting using bsdtar, replacing /arch/setup and recompressing the iniramfs archive does not work. Archive format not compatible with initramfs format.
|
||||
## Compressing using bsdcpio and using 'newc' archive format works, taken from falconindy's geninit program.
|
||||
|
||||
initramfs_name="initrd64"
|
||||
_replace_arch_setup_initramfs
|
||||
initramfs_name="initrd64"
|
||||
_replace_arch_setup_initramfs
|
||||
|
||||
initramfs_name="initrd"
|
||||
_replace_arch_setup_initramfs
|
||||
initramfs_name="initrd"
|
||||
_replace_arch_setup_initramfs
|
||||
|
||||
fi
|
||||
echo
|
||||
fi
|
||||
|
||||
|
||||
## Re-create the archboot ISO
|
||||
cd "${WD}/"
|
||||
echo
|
||||
|
||||
## Generate the BIOS+UEFI+ISOHYBRID ISO image using xorriso (extra/libisoburn package) in mkisofs emulation mode
|
||||
echo "Generating the modified ISO ..."
|
||||
|
@ -330,6 +383,9 @@ xorriso -as mkisofs \
|
|||
-output "${WD}/${iso_name}.iso" "${archboot_ext}/" > /dev/null 2>&1
|
||||
echo
|
||||
|
||||
rm -rf "${archboot_ext}/"
|
||||
echo
|
||||
|
||||
set +x
|
||||
|
||||
unset archboot_ver
|
||||
|
|
Loading…
Reference in a new issue