You are not logged in.

#1 2020-07-26 08:50:19

Registered: 2020-07-26
Posts: 2

[SOLVED] New VM install | systemd-boot | "Reboot Into Firmware"

Hello. Hopefully this doesn't turn out to be too stupid of a mistake on my part. I'm new to Arch and returning to Linux after a long hiatus (EFI / systemd / locale selection didn't exist when I was a Linux admin last, it's been a long time). So while I'm not an admin newb, I'm pretty darned newb for an old guy.

Goal: Arch VM running under QEMU (on an Unraid host) just to get back into the swing of things as a development server. Picked Arch since I plan to convert my desktop machine later. Chose btrfs for /mnt partition as I also want to learn more about btrfs & luks.

Problem: after following the install wiki as well as double checking a video and a couple of other guides (links posted at bottom), I only get the "Reboot Into Firmware Interface" on my boot menu.

QEMU specific bits ... I'm using Machine type Q35-4.2 and BIOS type OVMF. No passthrough is being attempted (no GPU installed aside from the integrated graphics on the host's 3770K).

I made notes of my install steps. Nothing fancy, 99% is straight from the install wiki, rest is to enable btrfs. The list of commands is a bit long but might help in pointing out an error.

# verify EFI mode (any result other than error = EFI mode)
ls /sys/firmware/efi/efivars
# verify network running
# enable NTP
timedatectl set-ntp true
fdisk -l
fdisk /dev/vda
mkfs.vat /dev/vda1
mkswap /dev/vda2
swapon /dev/vda2
mkfs.btrfs /dev/vda3
mount /dev/vda3 /mnt
mkdir /mnt/boot
mount /dev/vda1 /mnt/boot
pacstrap /mnt base base-devel linux linux-firmware dhcpcd inetutils man-db man-pages texinfo netctl s-nail nano vim btrfs-progs util-linux pacman
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/US/Pacific /etc/localtime
hwclock --systohc
echo 'en_US.UTF-8 UTF-8` >> /etc/locale.gen
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
echo 'unraid-arch-dev' > /etc/hostname
echo '	localhost' >> /etc/hosts
echo '::1	localhost' >> /etc/hosts
echo '	unraid-arch-dev.localdomain unraid-arch-dev' >> /etc/hosts
# add btrfs to HOOKS in /etc/mkinitcpio.conf (and encrypt if using later)
mkinitcpio -p linux
bootctl install
# also tried bootctl --path=boot install but gives identical result
cd /boot/loader
# edit loader.conf, replace default line with: default arch-*
# add entries/arch.conf

The rest of the information shown is while inside `arch-chroot /mnt`.


/dev/vda3 on / type btrfs (rw,relatime,space_cache,subvolid=5,subvol=/)
/dev/vda1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sys on /sys type sysfs (ro,nosuid,nodev,noexec,relatime)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=8172116k,nr_inodes=2043029,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,relatime)
run on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
tmp on /tmp type tmpfs (rw,nosuid,nodev)
run on /etc/resolv.conf type tmpfs (rw,nosuid,nodev,relatime,mode=755)


# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/vda3
UUID=3fd87724-ebf9-45ed-8773-06a2540e6bba	/         	btrfs     	rw,relatime,space_cache,subvolid=5,subvol=/	0 0

# /dev/vda1
UUID=140A-CDAC      	/boot     	vfat      	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro	0 2

# /dev/vda2
UUID=e8936ad3-0c39-4597-b899-b57bddd183b4	none      	swap      	defaults  	0 0


/dev/sr0: BLOCK_SIZE="2048" UUID="2020-07-01-06-42-22-00" LABEL="ARCH_202007" TYPE="iso9660" PTUUID="5eaa061f" PTTYPE="dos"
/dev/vda1: UUID="140A-CDAC" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="26fc982c-a0a3-c54d-bae1-bca4ef44e1c1"
/dev/vda2: UUID="e8936ad3-0c39-4597-b899-b57bddd183b4" TYPE="swap" PARTUUID="79ac6932-717b-1741-9a25-4fa5151ced2b"
/dev/vda3: UUID="3fd87724-ebf9-45ed-8773-06a2540e6bba" UUID_SUB="88cac9b5-126c-42fc-b2f7-dc6e37026fe7" BLOCK_SIZE="4096" TYPE="btrfs" PARTUUID="b3a8cd88-e4eb-af45-8619-4a53764c67d3"
/dev/loop0: TYPE="squashfs"

`ls /boot`

total 53784
drwxr-xr-x 5 root root     4096 Dec 31  1969 ./
drwxr-xr-x 1 root root      122 Jul 25 23:30 ../
drwxr-xr-x 2 root root     4096 Jul 25 23:52 da463f15bbcf4cd18f2d98f1e245b29d/
drwxr-xr-x 5 root root     4096 Jul 25 23:52 EFI/
-rwxr-xr-x 1 root root 34049536 Jul 26 00:12 initramfs-linux-fallback.img*
-rwxr-xr-x 1 root root 14482476 Jul 26 00:11 initramfs-linux.img*
drwxr-xr-x 3 root root     4096 Jul 26 00:44 loader/
-rwxr-xr-x 1 root root  6506880 Jul 25 23:31 vmlinuz-linux*


#timeout 3
#console-mode keep
#default da463f15bbcf4cd18f2d98f1e245b29d-*
default arch

(also tried 'default arch-*' as well as 'default arch.conf')


title	Arch Linux
linux	/vmlinx-linux
initrd	/initramfs-linux.img
options root=UUID=3fd87724-ebf9-45ed-8773-06a2540e6bba rw

# /dev/vda3: 
# UUID="3fd87724-ebf9-45ed-8773-06a2540e6bba" 
# UUID_SUB="88cac9b5-126c-42fc-b2f7-dc6e37026fe7"
# BLOCK_SIZE="4096"
# TYPE="btrfs"
# PARTUUID="b3a8cd88-e4eb-af45-8619-4a53764c67d3"


title	Arch Linux - PARTUUID
linux	/vmlinx-linux
initrd	/initramfs-linux.img
options root=PARTUUID=b3a8cd88-e4eb-af45-8619-4a53764c67d3 rw

# /dev/vda3: 
# UUID="3fd87724-ebf9-45ed-8773-06a2540e6bba" 
# UUID_SUB="88cac9b5-126c-42fc-b2f7-dc6e37026fe7"
# BLOCK_SIZE="4096"
# TYPE="btrfs"
# PARTUUID="b3a8cd88-e4eb-af45-8619-4a53764c67d3"


# vim:set ft=sh
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(piix ide_disk reiserfs)

# This setting includes any additional binaries a given user may
# wish into the CPIO image.  This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries

# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.

# This is the most important setting in this file.  The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
##   This setup specifies all modules in the MODULES setting above.
##   No raid, lvm2, or encrypted root is needed.
#    HOOKS=(base)
##   This setup will autodetect all modules for your system and should
##   work as a sane default
#    HOOKS=(base udev autodetect block filesystems)
##   This setup will generate a 'full' image which supports most systems.
##   No autodetection is done.
#    HOOKS=(base udev block filesystems)
##   This setup assembles a pata mdadm array with an encrypted root FS.
##   Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
#    HOOKS=(base udev block mdadm encrypt filesystems)
##   This setup loads an lvm2 volume group on a usb device.
#    HOOKS=(base udev block lvm2 filesystems)
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr, fsck and shutdown hooks.
HOOKS=(base udev autodetect modconf block encrypt btrfs filesystems keyboard fsck)

# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.

# Additional options for the compressor

(note: no other options aside from 'Reboot Into Firmware Interface' appear, so neither of the .conf files above are appearing as boot options, this is the part I need to try and figure out)

I'm (obviously) not clear on EFI workings as this is my first time. As far as know I've done all the steps I've found. I tried repeating `bootctl install` as well as `bootctl --path=boot install` after creating the .conf files but nothing showed up.

I'm wondering if it is a problem due to trying to boot from btrfs instead of ext4?

I did add the hooks to /etc/mkinitcpio.conf and then ran `mkinitcpio -p linux` afterwards.

PS. Posting this at my sleep time ... so will check back in tomorrow. Any help appreciated.

Last edited by Jahf (2020-07-26 22:51:16)


#2 2020-07-26 15:12:43

Registered: 2020-04-18
Posts: 8

Re: [SOLVED] New VM install | systemd-boot | "Reboot Into Firmware"


It seems that you wrote

linux	/vmlinx-linux

in your *arch.conf files, when your actual file is vmlinuz-linux in your /boot directory.

Replace /vmlinx-linux by /vmlinuz-linux might help.

I hope that helps !


#3 2020-07-26 22:44:06

Registered: 2020-07-26
Posts: 2

Re: [SOLVED] New VM install | systemd-boot | "Reboot Into Firmware"

Missed a tree for staring at the forest.

Replace /vmlinx-linux by /vmlinuz-linux

That was the fix. Typos.

I didn't think that would completely block the display of the option, just break the option when selected. But ... nope ... option appeared and automatically booted when repaired.

Thank you smile


Board footer

Powered by FluxBB