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:   localhost
::1     localhost   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


I realised what the problem was... I hadn't seen the page for USB installation so I hadn't done some important steps...

In /etc/mkinitcpio.conf move the block and keyboard hooks before the autodetect hook and re-create the initial ramdisk with mkinitcpio -p linux.

When installing GRUB, i forgot to add --removable which I think was the really important step. Sorry for wasting your time!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.