Linux – Arch Linux on UEFI won’t boot

arch linuxbootuefi

I've followed the Beginners Guide to installing Arch Linux on my laptop. When I boot, I get the EFI boot menu, but when I select Arch Linux I get this error:

Kernal panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.5.4-1-ARCH #1
...

And then the system locks up until I hard reset.

I think I must have configured the boot loader incorrectly.

My harddrive is configured with GPT partition table and partitioned as:

/dev/sda1    /boot    512MiB
/dev/sda2    /        20GiB
/dev/sda3    (swap)   4GiB
/dev/sda4    /home    199.1GiB (remaining space)

I have run bootctl install, and then created these two files:

/boot/loader/loader.conf

default arch
timeout 4
editor  0

/boot/loader/entries/arch.conf

title   Arch Linux
efi     /vmlinuz-linux
initrd  /initramfs-linux.img
options root=/dev/sda2 rw

I have checked that the /vmlinuz-linux and /initramfs-linux.img files both exist:

# ls /boot
EFI  initramfs-linux-fallback.img  initramfs-linux.img  loader  vmlinuz-linux

Where am I going wrong?


Edit: Thought my fstab might be useful, so posting that too (retyped manually so skipping the heading comments and the UUIDs, any typos are my transcribing):

/etc/fstab

# /dev/sda2
UUID={long uuid}    /      ext4    rw,relatime,data=ordered   0 1

# /dev/sda1
UUID={long uuid}    /boot  vfat    rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro  0 2

# /dev/sda4
UUID={long uuid}    /home  ext4     rw,relatime,data=ordered   0 2

# /dev/sda3
UUID={long uuid}    none   swap     defaults  0 0

Best Answer

My /boot/loader/entries/arch.conf should have been

title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options initrd=initramfs-linux.img root=PARTUUID={/dev/sda2 uuid} rw

(replace {/dev/sda2 uuid} with the actual UUID)

Related Question