diff --git a/vps2arch b/vps2arch index 392a070..71635af 100755 --- a/vps2arch +++ b/vps2arch @@ -66,6 +66,7 @@ download_and_extract_bootstrap() { # FIXME support multiple partitions mount --bind / "/root.$cpu_type/mnt" findmnt /boot >/dev/null && mount --bind /boot "/root.$cpu_type/mnt/boot" + findmnt /boot/efi >/dev/null && mount --bind /boot/efi "/root.$cpu_type/mnt/boot/efi" # Workaround for Debian mkdir -p "/root.$cpu_type/run/shm" # Workaround for OpenVZ @@ -124,6 +125,7 @@ install_packages() { [ "$bootloader" != "none" ] && packages="$packages $bootloader" # XXX Install gptdisk for syslinux. To be removed then FS#45029 will be closed [ "$bootloader" = "syslinux" ] && packages="$packages gptfdisk" + [ -f /sys/firmware/efi/fw_platform_size ] && packages="$packages efibootmgr" while read -r _ mountpoint filesystem _; do [ "$mountpoint" = "/" -a "$filesystem" = "xfs" ] && packages="$packages xfsprogs" done < /proc/mounts @@ -150,10 +152,13 @@ cleanup() { } configure_bootloader() { - local root_dev=$(findmnt -no SOURCE /) root_devs= tmp= needs_lvm2=0 + local root_dev=$(findmnt -no SOURCE /) root_devs= tmp= needs_lvm2=0 uefi=0 case $root_dev in /dev/mapper/*) needs_lvm2=1 ;; esac + if [ -f /sys/firmware/efi/fw_platform_size ]; then + uefi=$(cat /sys/firmware/efi/fw_platform_size) + fi if [ $needs_lvm2 -eq 1 ]; then # Some distro doesn't use lvmetad by default @@ -180,9 +185,16 @@ configure_bootloader() { *) root_devs="${root_devs:+$root_devs }$tmp" ;; esac done - for root_dev in $root_devs; do - grub-install --target=i386-pc --recheck --force "$root_dev" - done + case $uefi in + 0) + for root_dev in $root_devs; do + grub-install --target=i386-pc --recheck --force "$root_dev" + done + ;; + 64) + grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB + ;; + esac grub-mkconfig > /boot/grub/grub.cfg elif [ "$bootloader" = "syslinux" ]; then # If you are still using eth* as interface name, disable "strange" ifnames