You are not logged in.

#1 2024-07-06 05:47:54

Burwicke
Member
Registered: 2024-07-06
Posts: 2

[Solved] Grub not showing any installed OS, only UEFI settings.

I've been scratching my head at this for a lil bit.

I have a cheapo thinkpad that I want to get running Arch and to that end I've been going through the install guide, but for some reason I've run into this issue that I've never seen before (granted I have only installed Arch a few times prior but still).

Whenever I got through the process ostensibly seamlessly (without the archinstall script if that's any difference) I reboot everything and alas, Grub doesn't show me Arch. I pacstrapped both grub and efibootmgr

The output of lsblk (on the USB live disk)

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0 795.7M  1 loop /run/archiso/airootfs
sda           8:0    1     0B  0 disk 
sdb           8:16   1  59.8G  0 disk 
└─sdb1        8:17   1  59.8G  0 part 
nvme0n1     259:0    0 238.5G  0 disk 
├─nvme0n1p1 259:1    0     1G  0 part /mnt/boot/efi
├─nvme0n1p2 259:2    0     4G  0 part [SWAP]
└─nvme0n1p3 259:3    0 233.5G  0 part /mnt

The output of mount (on the USB)

/dev/nvme0n1p3 on / type ext4 (rw,relatime)
/dev/nvme0n1p1 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,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=3927588k,nr_inodes=981897,mode=755,inode64)
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,inode64)
run on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755,inode64)
tmp on /tmp type tmpfs (rw,nosuid,nodev,inode64)
run on /etc/resolv.conf type tmpfs (rw,nosuid,nodev,relatime,mode=755,inode64)
/dev/nvme0n1p1 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)

The output of fdisk -l (still on the USB)

Disk /dev/nvme0n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: SAMSUNG MZVLW256HEHP-000L7              
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: F99F34A2-D329-40A0-AF99-6EC524992C57

Device            Start       End   Sectors   Size Type
/dev/nvme0n1p1     2048   2099199   2097152     1G EFI System
/dev/nvme0n1p2  2099200  10487807   8388608     4G Linux swap
/dev/nvme0n1p3 10487808 500117503 489629696 233.5G Linux root (x86-64)


Disk /dev/sdb: 59.75 GiB, 64160400896 bytes, 125313283 sectors
Disk model: Flash Drive     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x328a2f3b

Device     Boot Start       End   Sectors  Size Id Type
/dev/sdb1  *     2048 125313282 125311235 59.8G  c W95 FAT32 (LBA)


Disk /dev/loop0: 795.73 MiB, 834379776 bytes, 1629648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

In summary, /dev/nvme0n1p3 is my root and mounted at /mnt, /dev/nvme0n1p1 is my boot on /mnt/boot/efi, nvme0n1p2 is my swap.

Now I arch-chroot /mnt onto my Arch install and run the grub-install with the flags specified in the Grub installation:
https://wiki.archlinux.org/title/GRUB#Installation

[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
Installing for x86_64-efi platform.
Installation finished. No error reported.

Next I run grub-mkconfig, again referencing the grub installation document

[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Warning: os-prober will not be executed to detect other bootable partitions.
systems on them will not be added to the GRUB boot configuration.
Check Grub_DISABLE_OS_PROBER documentation entry
Adding boot menu entry for UEFI Firmware Settings ...
done

Everything I've read says this is a perfectly normal thing to see, and I'm not dual booting so I don't need to worry.

This is the grub.cfg that gets produced

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 887d2375-7c4d-4ace-9121-8d6de5a70fa5
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/25_bli ###
if [ "$grub_platform" = "efi" ]; then
  insmod bli
fi
### END /etc/grub.d/25_bli ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
if [ "$grub_platform" = "efi" ]; then
	fwsetup --is-supported
	if [ "$?" = 0 ]; then
		menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
			fwsetup
		}
	fi
fi
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg
fi
### END /etc/grub.d/41_custom ###

At this point I exit the arch installation and reboot. When I reach the boot menu though, I don't see any other options than "UEFI settings".

Last edited by Burwicke (2024-07-06 06:46:27)

Offline

#2 2024-07-06 06:46:12

Burwicke
Member
Registered: 2024-07-06
Posts: 2

Re: [Solved] Grub not showing any installed OS, only UEFI settings.

Hey! I solved it!

Okay the one thing I didn't check was the output of efibootmgr. When I did, I noted a very conspicuous absence of arch. Why? Shouldn't it be added during grub-install? Who knows. I manually added it with the command:

efibootmgr --create --disk=/dev/nvme0n1 --part=1 --label="arch" --loader='\boot\grub\efi\EFI\arch\grubx64.efi'

(I also got rid of some old EFI records like old distros and Windows boot manager that's been polluting the bootloader for I'm sure a while now)

When I rebooted, it went to the grub screen and I saw Arch.

Last edited by Burwicke (2024-07-06 06:46:40)

Offline

#3 2024-07-06 07:17:15

cryptearth
Member
Registered: 2024-02-03
Posts: 2,184

Re: [Solved] Grub not showing any installed OS, only UEFI settings.

this looks like you have installed multiple boot loaders in several difrerent directories - and have missed installing any kernel

the path you've given to efibootmgr also looks very wrong

also: you specified --bootloader-id=GRUB - so it will show up as GRUB
in the manual line you give it the label arch - hence it shows up as arch

you seem to messed up something at some point - fix will be easy from a booted archiso: clean up the messed up boot entries, wipe the esp and /boot and do a clean install
also: mount the esp only once

Offline

Board footer

Powered by FluxBB