commit 97a9ce3a481e8e4433532849c8be018ab6226f9b
parent 712c0d48dd5e2dde9fc909df61e3186449903e23
Author: awy <awy@awy.one>
Date: Sun, 13 Apr 2025 18:45:43 +0300
efistub
Diffstat:
3 files changed, 24 insertions(+), 19 deletions(-)
diff --git a/install.sh b/install.sh
@@ -27,13 +27,15 @@ binkernel()
mount /dev/"$bootdrive" /mnt/boot
pacman -Sy --confirm
case $kerneltype in
- 1) basestrap /mnt base dinit elogind-dinit linux linux-headers ;;
- 2) basestrap /mnt base dinit elogind-dinit linux-zen linux-zen-headers ;;
+ 1) basestrap /mnt base dinit elogind-dinit linux ;;
+ 2) basestrap /mnt base dinit elogind-dinit linux-zen ;;
*) printf "Invalid kernel" && exit 1 ;;
esac
if [ "$encryption" = 1 ]; then
basestrap /mnt cryptsetup lvm2 lvm2-dinit
fi
+ mkdir -p /mnt/usr/lib/systemd/boot/efi
+ cp linuxx64.efi.stub /mnt/usr/lib/systemd/boot/efi
}
customkernel()
@@ -88,7 +90,7 @@ getuserdata()
done
while true; do
clear
- printf "Do you want to use encryption (LUKS)?"
+ printf "Do you want to use encryption (LUKS)? Y/N: "
read -r answer
case "$answer" in
y|Y)
@@ -102,7 +104,7 @@ getuserdata()
esac
done
if [ "$encryption" = 1 ]; then
- printf "Enter the passphrase for encrypted volumes:"
+ printf "Enter the passphrase for encrypted volumes: "
cryptpass=$(getpass)
fi
}
@@ -163,11 +165,6 @@ export cryptpass
cp post_chroot.sh /mnt
artix-chroot /mnt ./post_chroot.sh
-if [ "$kerneltype" != 3 ]; then
- mv /mnt/boot/EFI/grub /mnt/boot/EFI/BOOT
- mv /mnt/boot/EFI/BOOT/grubx64.efi /mnt/boot/EFI/BOOT/BOOTX64.EFI
-fi
-
umount -R /mnt
echo "Linux is successfully installed!"
diff --git a/linuxx64.efi.stub b/linuxx64.efi.stub
Binary files differ.
diff --git a/post_chroot.sh b/post_chroot.sh
@@ -21,20 +21,28 @@ export LC_COLLATE="C"
echo "$hostname" > /etc/hostname
UUID_ROOT=$(blkid -s UUID -o value /dev/"$rootdrive")
-UUID_CRYPTROOT=$(blkid -s UUID -o value /dev/mapper/cryptlvm)
+if [ "$encryption" = 1 ]; then
+ UUID_CRYPTROOT=$(blkid -s UUID -o value /dev/mapper/cryptlvm)
+fi
binkernel()
{
- pacman -S grub os-prober efibootmgr --noconfirm
+ pacman -S efibootmgr --noconfirm
echo "options hid_apple fnmode=0" > /etc/modprobe.d/hid_apple.conf
+ mkdir -p /etc/kernel
+ mkdir -p /boot/EFI/BOOT
+cat <<EOL >> /etc/mkinitcpio.d/linux.preset
+ALL_kver="/boot/vmlinuz-linux"
+PRESETS=('default')
+default_uki="/boot/EFI/BOOT/BOOTX64.efi"
+EOL
if [ "$encryption" = 1 ]; then
- sed -i "s#GRUB_CMDLINE_LINUX_DEFAULT=.*#GRUB_CMDLINE_LINUX_DEFAULT=\"loglevel=3 quiet options cryptdevice=UUID=$UUID_ROOT:cryptlvm root=UUID=$UUID_CRYPTROOT rw intel_iommu=on\"#g" /etc/default/grub
+ echo "cryptdevice=UUID=$UUID_ROOT:cryptlvm root=UUID=$UUID_CRYPTROOT rw intel_iommu=on" > /etc/kernel/cmdline
sed -i "s#HOOKS=.*#HOOKS=(base udev autodetect microcode modconf keyboard keymap consolefont block encrypt lvm2 filesystems fsck)#g" /etc/mkinitcpio.conf
- sed -i "/^#GRUB_ENABLE_CRYPTODISK/s/^#//" /etc/default/grub
- # for grub to work
- printf "%s" "$cryptpass" | cryptsetup luksConvertKey --pbkdf pbkdf2 /dev/"$rootdrive" -d -
+ # # for grub to work
+ # printf "%s" "$cryptpass" | cryptsetup luksConvertKey --pbkdf pbkdf2 /dev/"$rootdrive" -d -
else
- sed -i "s#GRUB_CMDLINE_LINUX_DEFAULT=.*#GRUB_CMDLINE_LINUX_DEFAULT=\"loglevel=3 quiet options root=UUID=$UUID_ROOT rw intel_iommu=on\"#g" /etc/default/grub
+ echo "root=UUID=$UUID_ROOT rw intel_iommu=on" > /etc/kernel/cmdline
sed -i "s#HOOKS=.*#HOOKS=(base udev autodetect microcode modconf keyboard keymap consolefont block filesystems fsck)#g" /etc/mkinitcpio.conf
fi
case $kerneltype in
@@ -42,8 +50,8 @@ binkernel()
2) pacman -S linux-zen-headers --noconfirm ;;
*) printf "Invalid kernel" && exit 1 ;;
esac
- sed -i "s#GRUB_TIMEOUT=.*#GRUB_TIMEOUT=1#g" /etc/default/grub
- grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
+ _diskdrivewop="${diskdrive%p}"
+ efibootmgr -c -d /dev/"$_diskdrivewop" -p "${partitions%% *}" -L "linux" -l '\EFI\BOOT\BOOTX64.EFI'
}
customkernel()
@@ -74,7 +82,7 @@ customkernel()
}
case $kerneltype in
- 1 | 2) binkernel && grub-mkconfig -o /boot/grub/grub.cfg ;;
+ 1 | 2) binkernel ;;
3) customkernel ;;
*) printf "Invalid kernel" && exit 1 ;;
esac