It’s not really necessary to install a full Linux just to load the EFI GRUB that’s included with the x86 image. We can just create a small partition and install GRUB into it and point it at the existing grub.cfg
file. Use your favorite Linux live CD/DVD/USB (I’m liking Parrot OS today).
Use gparted
to create a small ext4
partition on the HassIO drive. I’m assuming it’s /dev/sda
. It’ll probably tell you that the partition table doesn’t include the whole disk and offer to fix it. Let it. A 10MB partition should be fine. Tell gparted
to leave 0 bytes after the partition so it ends up at the end of the disk. That way HassIO will be able to resize its partitions and use all the unallocated space.
Note: You may end up with a tiny bit of unallocated space after this partition even if tell gparted
to make it 0. That’s due to alignment. Don’t worry about it.
Mount the new partition (should be sda9
but check):
sudo mount /dev/sda9 /mnt
Install GRUB on the new partition. If you’re using Parrot OS you’ll need to install the GRUB package first:
sudo apt install grub2
Then install GRUB onto the HassIO drive. Replace /dev/sda
with your device if different:
sudo grub-install --compress=xz --root-directory=/mnt /dev/sda --force
Now that GRUB is installed, all that’s left is to configure it to redirect to the HassIO installation. Run the following to create the necessary config file in /mnt/boot/grub/grub.cfg
(the first line tells it to use the first partition on the first drive, the second tells it where HassIO’s GRUB config file is):
cat <<! | sudo dd of=/mnt/boot/grub/grub.cfg
set root=(hd0,1)
configfile /efi/boot/grub.cfg
!
Remove the boot media and reboot. You should go straight to the HassIO boot menu.