
Kubuntu 19.04, actualizado al 17 de mayo.
Esta mañana ejecuté actualizaciones en mi instalación de Kubuntu y, después de reiniciar, grub me deja en grub shell sin darme mi menú de grub. Esto me ha sucedido varias veces en los últimos meses y termino reinstalándolo porque dejé de intentar descubrir cómo solucionarlo. Pero estoy en este punto nuevamente y me gustaría descubrir qué está causando esto.
Hardware:
AMD Ryzen 2600X
16 GB de RAM
Placa Madre Asus B450
1x SSD Samsung Evo de 500 GB (unidad principal)
1 disco duro Seagate de 1 TB (unidad de almacenamiento)
Ningún otro sistema operativo
Ingresar manualmente lo siguiente en la pantalla de grub permite que mi sistema arranque (ocultando el UUID) y funcione normalmente:
> insmod gzio
> insmod part_gpt
> insmod btrfs
>linux /@/boot/vmlinuz-5.0.0-15-generic root=UUID=0000000-000-000 ro rootflags=subvol=@ quiet splash
> initrd /@/boot/initrd.img-5.0.0-15-generic
> arranque
Pero obviamente es molesto tener que hacer cada reinicio. Revisé mis archivos de configuración, todo se ve bien, pero parece que grub no puede leer los archivos de configuración por alguna razón.
El UUID de mi unidad principal se ha ofuscado a continuación, pero verifiqué que sea exacto en mis archivos de configuración.
/etc/fstab:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda2 during installation
# /boot/efi was on /dev/sda1 during installation
UUID=4DD8-BE9A /boot/efi vfat umask=0077 0 1
# /home was on /dev/sda2 during installation
/swapfile none swap sw 0 0
UUID=0000000-000-000 / btrfs rw,relatime,compress=zstd,ssd,discard,space_cache,subvol=@ 0 1
UUID=0000000-000-000 /home btrfs rw,relatime,compress=zstd,ssd,discard,space_cache,subvol=@home 0 2
UUID=0000000-000-000 /var btrfs rw,relatime,compress=zstd,ssd,discard,space_cache,subvol=@var 0 2
UUID=1111111-111-111 /mnt/storage btrfs rw,relatime,compress=zstd,ssd,discard,space_cache 0 2
/boot/grub/grub.cfg
#
# 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 ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
if [ "${initrdfail}" = 2 ]; then
set initrdfail=
elif [ "${initrdfail}" = 1 ]; then
set next_entry="${prev_entry}"
set prev_entry=
save_env prev_entry
if [ "${next_entry}" ]; then
set initrdfail=2
fi
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 initrdfail {
if [ -n "${have_grubenv}" ]; then if [ -n "${partuuid}" ]; then
if [ -z "${initrdfail}" ]; then
set initrdfail=1
if [ -n "${boot_once}" ]; then
set prev_entry="${default}"
save_env prev_entry
fi
fi
save_env initrdfail
fi; fi
}
function recordfail {
set recordfail=1
# GRUB lacks write support for btrfs, so recordfail support is disabled.
}
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 btrfs
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 60000000-000-000
else
search --no-floppy --fs-uuid --set=root 0000000-000-000
fi
font="/@/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=en_CA
insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=1
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=1
fi
fi
if [ $grub_platform = efi ]; then
set timeout=30
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
fi
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
#set_background_image "images/tile.png";
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 0,0,0; then
clear
fi
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
set gfxpayload="${1}"
if [ "${1}" = "keep" ]; then
set vt_handoff=vt.handoff=1
else
set vt_handoff=
fi
}
if [ "${recordfail}" != 1 ]; then
if [ -e ${prefix}/gfxblacklist.txt ]; then
if hwmatch ${prefix}/gfxblacklist.txt 3; then
if [ ${match} = 0 ]; then
set linux_gfx_mode=keep
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=keep
fi
else
set linux_gfx_mode=text
fi
export linux_gfx_mode
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-0000000-000-000' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod btrfs
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 0000000-000-000
else
search --no-floppy --fs-uuid --set=root 0000000-000-000
fi
linux /@/boot/vmlinuz-5.0.0-15-generic root=UUID=0000000-000-000 ro rootflags=subvol=@ quiet splash $vt_handoff
initrd /@/boot/initrd.img-5.0.0-15-generic
}
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-0000000-000-000' {
menuentry 'Ubuntu, with Linux 5.0.0-15-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.0.0-15-generic-advanced-0000000-000-000' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod btrfs
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 0000000-000-000
else
search --no-floppy --fs-uuid --set=root 0000000-000-000
fi
echo 'Loading Linux 5.0.0-15-generic ...'
linux /@/boot/vmlinuz-5.0.0-15-generic root=UUID=0000000-000-000 ro rootflags=subvol=@ quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /@/boot/initrd.img-5.0.0-15-generic
}
menuentry 'Ubuntu, with Linux 5.0.0-15-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.0.0-15-generic-recovery-0000000-000-000' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod btrfs
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 60000000-000-000
else
search --no-floppy --fs-uuid --set=root 0000000-000-000
fi
echo 'Loading Linux 5.0.0-15-generic ...'
linux /@/boot/vmlinuz-5.0.0-15-generic root=UUID=0000000-000-000 ro recovery nomodeset rootflags=subvol=@
echo 'Loading initial ramdisk ...'
initrd /@/boot/initrd.img-5.0.0-15-generic
}
menuentry 'Ubuntu, with Linux 5.0.0-13-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.0.0-13-generic-advanced-698b5d59-0000000-000-000' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod btrfs
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 0000000-000-000
else
search --no-floppy --fs-uuid --set=root 0000000-000-000
fi
echo 'Loading Linux 5.0.0-13-generic ...'
linux /@/boot/vmlinuz-5.0.0-13-generic root=UUID=0000000-000-000 ro rootflags=subvol=@ quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /@/boot/initrd.img-5.0.0-13-generic
}
menuentry 'Ubuntu, with Linux 5.0.0-13-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.0.0-13-generic-recovery-0000000-000-000' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod btrfs
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 0000000-000-000
else
search --no-floppy --fs-uuid --set=root 0000000-000-000
fi
echo 'Loading Linux 5.0.0-13-generic ...'
linux /@/boot/vmlinuz-5.0.0-13-generic root=UUID=0000000-000-000 ro recovery nomodeset rootflags=subvol=@
echo 'Loading initial ramdisk ...'
initrd /@/boot/initrd.img-5.0.0-13-generic
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/20_memtest86+ ###
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
menuentry 'System setup' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
### 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 ###
/etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
Nada en /etc/grub/grub.d excepto init-select.cfg vacío (comentado)
Salida de update-grub:
~# update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.0.0-15-generic
Found initrd image: /boot/initrd.img-5.0.0-15-generic
Found linux image: /boot/vmlinuz-5.0.0-13-generic
Found initrd image: /boot/initrd.img-5.0.0-13-generic
Adding boot menu entry for EFI firmware configuration
done
Salida de fdisk:
~# fdisk -l
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Samsung SSD 850
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: 222222222-2222-2222222
Device Start End Sectors Size Type
/dev/sda1 2048 999423 997376 487M EFI System
/dev/sda2 999424 976771071 975771648 465.3G Linux filesystem
Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: ST31000524AS
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: 33333333333-3333-3333333
Device Start End Sectors Size Type
/dev/sdb1 2048 1953519615 1953517568 931.5G Linux filesystem
Contenido de /boot/efi
# find /boot/efi
/boot/efi
/boot/efi/EFI
/boot/efi/EFI/ubuntu
/boot/efi/EFI/ubuntu/grubx64.efi
/boot/efi/EFI/ubuntu/shimx64.efi
/boot/efi/EFI/ubuntu/mmx64.efi
/boot/efi/EFI/ubuntu/BOOTX64.CSV
/boot/efi/EFI/ubuntu/grub.cfg
/boot/efi/EFI/BOOT
/boot/efi/EFI/BOOT/BOOTX64.EFI
/boot/efi/EFI/BOOT/fbx64.efi
/boot/efi/EFI/BOOT/mmx64.efi
No estoy seguro de qué más puedo ver aquí a menos que alguien tenga alguna sugerencia.
Editar: Tengo una computadora portátil que tiene una configuración muy similar a esta (mi computadora de escritorio) y no tiene el mismo problema. La única diferencia notable que puedo ver es en el archivo /boot/grub/grub.cfg, mi computadora portátil no tiene la línea "set root='hd0,gpt2'" para la entrada del menú de grub. No estoy seguro si eso está relacionado o no, pero no explicaría por qué simplemente no aparece el menú.
Respuesta1
Pude solucionar esto yo mismo con lo siguiente:
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader=ubuntu -recheck
# update-grub
# update-initramfs -u
Tengo curiosidad por saber por qué sucedió esto después de una actualización.