Question
Hello all!
Please pardon the fact that this is probably a very simple problem with a simple answer. I'm having some difficulty booting into a USB key I bootstrapped and configured Arch onto. I am using a 128GB Samsung Fit 3.1 USB-A key, in case it matters.
Synopsis: I used Etcher to write the (shasum-checked) Arch ISO onto a random USB key. I booted into the LiveUSB and plugged in my Samsung 3.1 key. I properly formatted the USB key for GPT/UEFI booting. I bootstrapped Arch onto the key, configured it, installed GRUB2 into the ESP, configured GRUB2, and blessed it from MacOS. When I reboot, my Arch USB key does not appear in the bar. My Mac happily booted up the Arch LiveUSB I made, plus many more distros' LiveUSBs I made, proving that it is configured to allow USB booting. So, why cannot I not see my Arch system, what am I missing?
Thank you in advance.
Full Log
If you would like a more specific log of what I did to get to these steps, here they are in full:
Download the ISO
Download ISO from mirror or torrent it using the links provided by https://www.archlinux.org/download.
Check shasum using $ openssl sha1 path/to/arch.iso
Use Etcher to write that to the USB key
Restart your computer and boot into the installer (LiveUSB)
Format the USB key's partitions
# fdisk -l
in this example, we assume our USB key is called sdd
# parted /dev/sdd
. mktable gpt
. mkpart primary fat32 1MiB 261MiB
. set 1 esp on
. mkpart primary ext4 261MiB 100%
. name 1 ‘the-efi-partition’
. name 2 ‘archenemy-beta’
. quit
# parted /dev/sdd print
All good here.
# mkfs.ext4 /dev/sdd2
# mkfs.fat -F32 /dev/sdd1
Configure the internet
Plug in an ethernet cable
# ping archlinux.org
.
All looking good.
Boostrap Arch
# mount /dev/sdd2 /mnt
# mkdir /mnt/efi
# mount /dev/sdd1 /mnt/efi
# vi /etc/pacman.d/mirrorlist
Mess with the order to prioritise some geographically closer mirrors.
# pacstrap /mnt base base-devel
Configure Arch
# genfstab -U /mnt >> /mnt/etc/fstab
# arch-chroot /mnt
[]# ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
[]# hwclock --systohc
[]# vi /etc/locale.gen
[]# locale-gen
[]# locale -a
All good here.
[]# echo “LANG=en_US.UTF-8” > /etc/locale.conf
[]# echo “KEYMAP=us” > /etc/vconsole.conf
[]# echo “archenemy-beta” > /etc/hostname
[]# vi /etc/hosts
write the following:
127.0.0.1 localhost
::1 localhost
127.0.1.1 archenemy-beta.localdomain archenemy-beta
[]# passwd
Install & Configure GRUB2
[]# pacman -S grub efibootmgr
[]# mkdir /boot/grub
[]# grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
[]# grub-mkconfig -o /boot/grub/grub.cfg
[]# exit
# umount -R /mnt
Bless the EFI Partition
Boot into MacOS
$ diskutil list
for this example we will assume it as disk2
$ mkdir ~/efi
$ sudo mount -w -t msdos /dev/disk2s1 ~/efi
$ bless --folder ~/efi/EFI/GRUB --file ~/efi/EFI/GRUB/grubx64.efi
$ diskutil eject disk2
$ rm -rf ~/efi