Sample Header Ad - 728x90

Unix & Linux Stack Exchange

Q&A for users of Linux, FreeBSD and other Unix-like operating systems

Latest Questions

1 votes
1 answers
1917 views
grub-mkconfig - one Linux kernel, multiple boot entries with different kernel options
GRUB version: 2.04-20 One Linux kernel only; I need to have two GRUB entries to boot the kernel with different set of kernel options. For the time being, after each `grub-mkconfig` or `update-grub2` which produces one entry with `GRUB_CMDLINE_LINUX_DEFAULT` options, I manually add another one with t...
GRUB version: 2.04-20 One Linux kernel only; I need to have two GRUB entries to boot the kernel with different set of kernel options. For the time being, after each grub-mkconfig or update-grub2 which produces one entry with GRUB_CMDLINE_LINUX_DEFAULT options, I manually add another one with the different set. Is there any way to get two entries of the same kernel with different kernel options (one respecting GRUB_CMDLINE_LINUX_DEFAULT plus another one) after running grub-mkconfig or update-grub2? I suppose some custom script in /etc/grub.d? Added bonus, proper way to disable os-prober? For the time being, I've renamed os-prober script so that it's not found.
Krackout (2887 rep)
Jan 27, 2022, 08:43 PM • Last activity: Jun 29, 2025, 03:05 PM
0 votes
1 answers
199 views
Rocky 9.5 cannot update grub kernel parameters
I've freshly installed Rocky 9.5 as a VM hosted by UTM/qemu on MacOs. It boots and can connect to the network. However, I cannot seem to modify the grub2 configuration to modify kernel parameters. After updating the config, reinstalling grub completely, checking the EFI boot manager, etc, it seems t...
I've freshly installed Rocky 9.5 as a VM hosted by UTM/qemu on MacOs. It boots and can connect to the network. However, I cannot seem to modify the grub2 configuration to modify kernel parameters. After updating the config, reinstalling grub completely, checking the EFI boot manager, etc, it seems that it is just not reading the file at /boot/efi/EFI/rocky/grub.cfg I want to have net.ifnames=0 biosdevname=0 permanently added to the default kernel params. After the process below, the params are there but rebooting the machine, they are not shown in /proc/cmdline. Any ideas what's going on and how to fix? -- Process I did: I started by modifying /etc/default/grub : # cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap net.ifnames=0 biosdevname=0 rhgb quiet" GRUB_DISABLE_RECOVERY="true" GRUB_ENABLE_BLSCFG=true Then update the boot partition: grub2-mkconfig -o /boot/grub2/grub.cfg Confirmed that the changes are put into /boot/efi/EFI/rocky/grub.cfg : # grep quiet /boot/efi/EFI/rocky/grub.cfg set kernelopts="root=/dev/mapper/rl-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap net.ifnames=0 biosdevname=0 rhgb quiet " I also confirmed that the system will boot from the correct partition: # efibootmgr -v BootCurrent: 0004 Timeout: 0 seconds BootOrder: 0001,0004,0002,0000,0003 Boot0000* UiApp FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(462caa21-7614-4503-836e-8ab6f4662331) Boot0001* UEFI QEMU DVD-ROM QM00001 PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0,65535,0)N.....YM....R,Y. Boot0002* UEFI QEMU HARDDISK QM00003 PciRoot(0x0)/Pci(0x1f,0x2)/Sata(1,65535,0)N.....YM....R,Y. Boot0003* EFI Internal Shell FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1) Boot0004* rocky HD(1,GPT,b97500fe-6a36-4d95-8d78-7703261cf0f7,0x800,0x12c000)/File(\EFI\rocky\grubx64.efi)
Danny (653 rep)
Mar 13, 2025, 02:29 PM • Last activity: Jun 9, 2025, 07:42 AM
1 votes
1 answers
2763 views
/usr/bin/grub-probe: error: failed to get canonical path of `/'
I'm trying to install GRUB from a live USB onto a different drive. While `grub-install` works fine, `grub-mkconfig -o /mnt/boot/grub/grub.cfg` (`/mnt` being the mount-point of the drive I'm installing to) keeps returning an error: ``` /usr/bin/grub-probe: error: failed to get canonical path of `/'....
I'm trying to install GRUB from a live USB onto a different drive. While grub-install works fine, grub-mkconfig -o /mnt/boot/grub/grub.cfg (/mnt being the mount-point of the drive I'm installing to) keeps returning an error:
/usr/bin/grub-probe: error: failed to get canonical path of `/'.
The advice I found online suggested running update-grub in a chroot might help, but the same error appears. My question is twofold: - How do I resolve this error? Seriously, I need to get this working - (more importantly) *Why* does this solution fix the issue? That second part is important because it would be useful for debugging if someone here explained the mechanics of what causes this issue, thus allowing more meaningful debugging in cases where the well-known solutions don't work. On the off chance that it's somehow meaningful to my issue, the system I'm installing from is a live ISO of Void Musl, and the system I'm installing to is Void Musl with / encrypted using LUKS, and encrypted /boot.
NobodySpecial (11 rep)
Jun 26, 2021, 07:10 AM • Last activity: May 17, 2025, 08:05 PM
3 votes
1 answers
2677 views
CentOS 7 stuck at grub prompt after upgrading Kernel
I tried to upgrade the Kernel using YUM and when I ran [root@AFIBAMBOO bin]# grub2-mkconfig -o /boot/grub2/grub.cfg No path or device is specified. Usage: grub2-probe [OPTION...] [OPTION]... [PATH|DEVICE] Try 'grub2-probe --help' or 'grub2-probe --usage' for more information. No path or device is sp...
I tried to upgrade the Kernel using YUM and when I ran [root@AFIBAMBOO bin]# grub2-mkconfig -o /boot/grub2/grub.cfg No path or device is specified. Usage: grub2-probe [OPTION...] [OPTION]... [PATH|DEVICE] Try 'grub2-probe --help' or 'grub2-probe --usage' for more information. No path or device is specified. Usage: grub2-probe [OPTION...] [OPTION]... [PATH|DEVICE] Try 'grub2-probe --help' or 'grub2-probe --usage' for more information. No path or device is specified. Usage: grub2-probe [OPTION...] [OPTION]... [PATH|DEVICE] Try 'grub2-probe --help' or 'grub2-probe --usage' for more information.
anwar ul hasan (31 rep)
May 16, 2019, 07:28 PM • Last activity: Apr 19, 2025, 07:04 PM
0 votes
2 answers
178 views
Changing the screen resolution of GRUB on a VMware virtual machine
I installed Arch Linux on a VMware virtual machine. To launch I use GRUB bootloader. I need to set the resolution for GRUB 16:9: 1366x768 or higher. Using `vbeinfo` (in GRUB) I can see the list of available resolutions. [![vbeinfo list][1]][1] [1]: https://i.sstatic.net/82PmILLT.png When setting the...
I installed Arch Linux on a VMware virtual machine. To launch I use GRUB bootloader. I need to set the resolution for GRUB 16:9: 1366x768 or higher. Using vbeinfo (in GRUB) I can see the list of available resolutions. vbeinfo list When setting the resolution from the list, everything works fine. But if I set, for example, 1366x768, then when loading GRAB the resolution will be 800x600. p.s. I change the resolution of GRUB by adding the parameter GRUB_GFXMODE=1366x768x32 to config file.
testovich (49 rep)
Feb 18, 2025, 02:49 PM • Last activity: Mar 8, 2025, 12:48 PM
1 votes
0 answers
165 views
Kernel options not loaded after updating grub.cfg
[edit: problem solved at the bottom, although I'm still not sure why it happens this way] Distro is Alma Linux 9.5 and kernel is 5.14.0-503.15.1.el9_5.x86_64. This is my first time making edits to the grub configuration so I can add two boot options: transparent_hugepage=never nvme_core.default_ps_m...
[edit: problem solved at the bottom, although I'm still not sure why it happens this way] Distro is Alma Linux 9.5 and kernel is 5.14.0-503.15.1.el9_5.x86_64. This is my first time making edits to the grub configuration so I can add two boot options: transparent_hugepage=never nvme_core.default_ps_max_latency_us=0. I added them to /etc/defaults/grub:
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rhgb quiet transparent_hugepage=never rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvme_core.default_ps_max_latency_us=0"
and then updated the config:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...
done
and double check the grub.cfg file, where I see these lines (looks good to me):
#
# The kernelopts variable in the grubenv file can be modified using the grubby tool or by
# executing the grub2-mkconfig tool. For the latter, the values of the GRUB_CMDLINE_LINUX
# and GRUB_CMDLINE_LINUX_DEFAULT options from /etc/default/grub file are used to set both
# the kernelopts variable in the grubenv file and the fallback kernelopts variable.
if [ -z "${kernelopts}" ]; then
  set kernelopts="root=UUID=8ca827c0-7538-4f54-8acd-0a8306afb937 ro crashkernel=auto spectre_v2=retpoline rhgb quiet transparent_hugepage=never rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvme_core.default_ps_max_latency_us=0 "
fi
But after reboot, I see that transparent hugepages are still enabled (set to always):
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
so I check the current boot command line and see that the new options were not passed:
# cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-503.15.1.el9_5.x86_64 root=UUID=8ca827c0-7538-4f54-8acd-0a8306afb937 ro spectre_v2=retpoline rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M
The comment in the grub.cfg file above mentions that grub2-mkconfig will update the grubenv file, I assume it means /boot/grub2/grubenv, but it doesn't include my changes:
# cat /boot/grub2/grubenv
# GRUB Environment Block
kernelopts=root=UUID=8ca827c0-7538-4f54-8acd-0a8306afb937 ro crashkernel=auto spectre_v2=retpoline rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau
boot_success=1
boot_indeterminate=0
saved_entry=ee28a0c339ce4ee4b63e2afc3f9ce1ac-5.14.0-503.15.1.el9_5.x86_64
####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
So I tried adding the options with grub2-editenv (not sure if this is a good idea):
# grub2-editenv - set "kernelopts=root=UUID=8ca827c0-7538-4f54-8acd-0a8306afb937 ro crashkernel=auto spectre_v2=retpoline rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau transparent_hugepage=never nvme_core.default_ps_max_latency_us=0"
# grub2-editenv - list
kernelopts=root=UUID=8ca827c0-7538-4f54-8acd-0a8306afb937 ro crashkernel=auto spectre_v2=retpoline rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau transparent_hugepage=never nvme_core.default_ps_max_latency_us=0
boot_success=1
boot_indeterminate=0
saved_entry=ee28a0c339ce4ee4b63e2afc3f9ce1ac-5.14.0-503.15.1.el9_5.x86_64
But the contents of /proc/cmdline are the same as before. The last thing I notice, but am not sure what to do about it, is the contents of the boot loader entry file is also missing the new options:
# cat /boot/loader/entries/ee28a0c339ce4ee4b63e2afc3f9ce1ac-5.14.0-503.15.1.el9_5.x86_64.conf
title AlmaLinux (5.14.0-503.15.1.el9_5.x86_64) 9.5 (Teal Serval)
version 5.14.0-503.15.1.el9_5.x86_64
linux /vmlinuz-5.14.0-503.15.1.el9_5.x86_64
initrd /initramfs-5.14.0-503.15.1.el9_5.x86_64.img $tuned_initrd
options root=UUID=8ca827c0-7538-4f54-8acd-0a8306afb937 ro spectre_v2=retpoline rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M $tuned_params
grub_users $grub_users
grub_arg --unrestricted
grub_class almalinux
So I'm out of ideas. Any advice on how to successfully update boot options or spotting a mistake I've made will be much appreciated. Added later: Well, I was so close. I updated the loader file with
# grubby --update-kernel=DEFAULT --args 'transparent_hugepage=never nvme_core.default_ps_max_latency_us=0'
rebooted, and everything seems to work. Still not sure why that final step was necessary though.
KevinJ (11 rep)
Jan 31, 2025, 01:51 AM • Last activity: Jan 31, 2025, 04:24 AM
0 votes
0 answers
114 views
Can GRUB2 be scaled? If so, how? If not, why not?
##### **Rationale** The XOrg 11 and KWin Wayland compositors are able to scale their outputs using 1:1 (integer — an example is 100%) and non-integer (125%) scales. However, I see *no* information online about how to scale GRUB. Instead, all I see are examples of workarounds utilizing the `GRUB_GFXM...
##### **Rationale** The XOrg 11 and KWin Wayland compositors are able to scale their outputs using 1:1 (integer — an example is 100%) and non-integer (125%) scales. However, I see *no* information online about how to scale GRUB. Instead, all I see are examples of workarounds utilizing the GRUB_GFXMODE="$RESOLUTION" variable to input a lower resolution value than its output device is capable of. ##### **Question** Consequently, can GRUB2's output be scaled? If so, how (I presume that the relevant variable is undocumented)? If not, why not (I presume that the functionality is merely absent)? ##### **Duplicates** I have asked for information specific to my OS/distribution (Fedora) at [discussion.fedoraproject.org/t/138655](https://discussion.fedoraproject.org/t/can-grub2-be-scaled-if-so-how/138655/1#p-363681-rationale-1) . However, because [reddit.com/r/EndeavourOS/comments/ysx08r](https://www.reddit.com/r/EndeavourOS/comments/ysx08r/is_there_a_way_to_make_grub_scale_to_2x200/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button) hasn't yet been answered, I'm not expecting any useful responses there. SE is my last port of call.
RokeJulianLockhart (541 rep)
Nov 28, 2024, 11:49 PM
2 votes
1 answers
2104 views
The grub2-mkconfig does not propagate renamed root logical volume on RHEL 9
On the RHEL 9.3 I have renamed the logical volume (LV) `/dev/lvm01/root` to `/dev/lvm01/root.vol`. I did everything to make the new name correctly recognized: - changed `/etc/fstab` entry - reloaded systemd configuration - remounted / And I also modified the `/etc/default/grub` entry: GRUB_CMDLINE_L...
On the RHEL 9.3 I have renamed the logical volume (LV) /dev/lvm01/root to /dev/lvm01/root.vol. I did everything to make the new name correctly recognized: - changed /etc/fstab entry - reloaded systemd configuration - remounted / And I also modified the /etc/default/grub entry: GRUB_CMDLINE_LINUX="root=/dev/mapper/lvm01-root.vol ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/lvm01-swap.vol rd.lvm.lv=lvm01/root.vol rd.lvm.lv=lvm01/swap.vol" Then I expected the grub2-mkconfig -o /boot/grub2/grub.cfg to do the rest of the job and rebooted. But the system ended up with dracut message that the root partition is not found (or something like that). After short investigation, I realized the kernel parameters had not been modified as expected. The manual change helped to get the OS booted. Interesting that the /boot/grub2/grub.cfg was updated. But what was not updated was the /boot/loader/entries/* files. And it was the issue.
Jaroslav Kucera (10882 rep)
Nov 29, 2023, 07:04 PM • Last activity: Jun 24, 2024, 12:39 PM
0 votes
0 answers
878 views
grub2: which /boot/efi/EFI/*/grub.cfg does it read?
I have a dualboot linux, fedora and almalinux. After installing almalinux, I couldn't see the fedora's kernel versions, just multiple entries of Fedora. Most of the links I found are wrong. * https://docs.fedoraproject.org/en-US/quick-docs/grub2-bootloader/#_setting_default_entry_for_grub2 They tell...
I have a dualboot linux, fedora and almalinux. After installing almalinux, I couldn't see the fedora's kernel versions, just multiple entries of Fedora. Most of the links I found are wrong. * https://docs.fedoraproject.org/en-US/quick-docs/grub2-bootloader/#_setting_default_entry_for_grub2 They tell me to use /boot/grub2/grub.cfg but this entry is only for BIOS-based boot, not EFI. * https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-working_with_the_grub_2_boot_loader#sec-Introduction_to_GRUB_2 Tells clearly we should use /boot/efi/EFI/*/grub.cfg. Which one should I use in the case where I have multi linux? /boot/efi/EFI/almalinux/grub.cfg or /boot/efi/EFI/fedora/grub.cfg? What if I have multiple instances of fedora?
無名前 (729 rep)
Apr 8, 2024, 02:05 AM
1 votes
1 answers
419 views
Moving /boot, how to update grub to find new location /boot/grub2/i386-pc/{core,boot}.img
Grub2 systems hard-code the location of stage2 files. This info is stored in the bootloader partition. I understand that grub-install will write this and more. My question is how does grub2-install figure out where the /boot directory (it's own partition) happens to be. grub-mkconfig can figure this...
Grub2 systems hard-code the location of stage2 files. This info is stored in the bootloader partition. I understand that grub-install will write this and more. My question is how does grub2-install figure out where the /boot directory (it's own partition) happens to be. grub-mkconfig can figure this out, however, it does not appear that grub-install invokes grub-mkconfig. I'd really like an in-depth explanation of how this is figured out. Bottom line question is: "What is proper way to update the bootloader code in the mbr/bios-boot partition when location of /boot changes"? Pointers to official documentation or wikis would be appreciated.
Steve H (15 rep)
Apr 5, 2024, 01:38 AM • Last activity: Apr 6, 2024, 02:18 AM
2 votes
0 answers
2577 views
Updated GRUB on Arch Linux, tried fix but GRUB gives error: Symbol grub_debug_malloc not found
I posted this same post on r/archlinux but have not gotten much results. I updated Arch Linux (vanilla), but now GRUB boots into firmware.  (I am sure a lot of you guys have known this issue, and I did know about this prior to updating, but when I updated it, the fix didn't work in my...
I posted this same post on r/archlinux but have not gotten much results. I updated Arch Linux (vanilla), but now GRUB boots into firmware.  (I am sure a lot of you guys have known this issue, and I did know about this prior to updating, but when I updated it, the fix didn't work in my environment.) I am currently posting this inside of the EndeavourOS Live environment. I have chrooted:
sudo mount  /mnt
sudo mount  /mnt/boot/efi
sudo arch-chroot /mnt
 (Replaced `` with my root partition and `` with my EFI partition because, obviously, I am running UEFI.) and I have reinstalled GRUB thanks to this post by sradjoker on the EndeavourOS Forum.
grub-install
grub-mkconfig -o /boot/grub/grub.cfg
and GRUB gives this error:
error: symbol grub_debug_malloc not found
GRUB then puts me in GRUB rescue.  As I understand it, some files are missing.  I tried this same process multiple times, but it still did not work. Is there a fix? Do I need to reinstall Arch Linux? "The latest grub package update needs some manual intervention"
user541458 (21 rep)
Sep 14, 2022, 11:25 PM • Last activity: Apr 4, 2024, 08:24 PM
1 votes
1 answers
1130 views
modprobe: FATAL: Module dm_mod not found in directory /lib/modules/6.6.16
I have built a custom kernel and given a CONFIG_LOCALVERSION of `-grant-nvme` during compilation. However, when I try to boot into it, no matter what I do, grub seems to look for `/lib/modules/6.6.16` and I cannot for the life of me figure out where it is pulling 6.6.16 from. It should be looking in...
I have built a custom kernel and given a CONFIG_LOCALVERSION of -grant-nvme during compilation. However, when I try to boot into it, no matter what I do, grub seems to look for /lib/modules/6.6.16 and I cannot for the life of me figure out where it is pulling 6.6.16 from. It should be looking in 6.6.16-grant-nvme. I have checked a dozen times that CONFIG_LOCALVERSION is set correctly during compilation, the boot entries for GRUB have it set correctly, the correct name exists both in /lib/modules and /boot/vmlinuz-6.6.16-grant-nvme yet for some reason GRUB persists in booting to the folder 6.6.16 vanilla. Where is it pulling that from? How do I direct it to the correct folder? Full error is:
[ 6.174579] systemd: Failed to start Load Kernel Modules.
[FAILED] Failed to start Load Kernel Modules.
[ 6.494351] dracut-pre-udev: modprobe: FATAL: Module dm_mod not found in directory /lib/modules/6.6.16
Sure enough, when I drop to dracut, I see:
dracut:/# ls /lib/modules
6.6.16-grant-nvme
## Update I also tried dracut --force --kver 6.6.16-grant-nvme /boot/initramfs-6.6.16-grant-nvme.img ## Update 2 Came back to this with fresh eyes today and ran strings on vmlinuz. Here is what is odd to me; the kernel build string is 6.6.16 (root@nvme.lan) (gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2), GNU ld version 2.35.2-42.el9) #2 SMP PREEMPT_DYNAMIC Thu Feb 15 08:10:42 EST 2024 This clearly does not have my CONFIG_LOCALVERSION. I am going to go back through the kernel build process again and see if somehow it didn't take. The thing is, the folder names in /boot are correct which I can only imagine happens if it is reading CONFIG_LOCALVERSION
Grant Curell (769 rep)
Feb 23, 2024, 08:57 PM • Last activity: Feb 26, 2024, 02:41 PM
1 votes
3 answers
2488 views
How do I start a Windows 10 partition on a MBR partitioned disk on a system that otherwise uses GPT/UEFI GRUB?
Okay, let me explain. This is a UEFI computer. It has two disks. The primary disk is partitioned with GPT and boots via GRUB2 to an Arch Linux partition. The secondary disk is partitioned with MBR and only boots if I disable the primary disk in the UEFI setup utility. The secondary disk has a partit...
Okay, let me explain. This is a UEFI computer. It has two disks. The primary disk is partitioned with GPT and boots via GRUB2 to an Arch Linux partition. The secondary disk is partitioned with MBR and only boots if I disable the primary disk in the UEFI setup utility. The secondary disk has a partition with Windows 10. My question is how do I add a menu entry to the primary GRUB2 configuration that boots the Windows 10 partition on the secondary disk? I tried
-mkconfig
with
-prober
and it was unable to find the Windows 10 install. There's apparently nothing wrong with the Windows 10 install, since it boots just fine on its own. I then tried manually adding various menu entries to the grub.cfg but they didn't work. Below are some of the entries that I tried.
menuentry "Windows 10 (loader) (on /dev/sda3)" {
	insmod part_msdos
	insmod ntfs
	insmod ntldr

	ntldr (hd0,msdos3)/bootmgr
}

menuentry "windows 10 (loader) (on /dev/sda3) 2" {
	insmod part_msdos
	insmod ntfs
	chainloader (hd0,msdos3)+1
}

menuentry "Windows 10 (loader) (on /dev/sda3) 3" {
	insmod part_msdos
	insmod ntfs
	chainloader (hd0,msdos3)/Windows/Boot/EFI/bootmgfw.efi
}
The most successful one is the last one which apparently boots to the EFI FW program but gives a BCD error (which is not present when booting normally.)
Anthony (111 rep)
Nov 6, 2020, 08:53 PM • Last activity: Feb 25, 2024, 01:16 PM
2 votes
1 answers
1711 views
Repair Fedora GRUB after grub2-mkconfig gone wrong
I was trying to enable fractional scaling in Fedora 39 using ChatGPT and he recommended the following: # NVIDIA's proprietary driver requires DRM KMS to be disabled for Wayland to work. # Edit the file /etc/default/grub and ensure the parameter nvidia-drm.modeset=1 is not set. # If it is, change it...
I was trying to enable fractional scaling in Fedora 39 using ChatGPT and he recommended the following: # NVIDIA's proprietary driver requires DRM KMS to be disabled for Wayland to work. # Edit the file /etc/default/grub and ensure the parameter nvidia-drm.modeset=1 is not set. # If it is, change it to nvidia-drm.modeset=0 or remove it. Then update the grub configuration with: sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg I did so and ran the command, only to find my GRUB Menu only showing me the Windows Boot Manager. I can boot into Windows without problems, but now GRUB cannot find Fedora. **Solution I am trying** I created a USB bootable drive with Fedora and, after doing a quick Google search (and more ChatGPT, besides being the culprit), I stumbled upon the following plausible solution (with my /dev partitions already inputted): # Mount the root filesystem sudo mount /dev/nvme0n1p7 /mnt/root # Mount the EFI partition sudo mount /dev/nvme0n1p6 /mnt/root/boot/efi # Bind-mount the virtual filesystems for dir in /dev /proc /sys /run; do sudo mount --bind $dir /mnt/root$dir done With that /mnt set up, I run sudo chroot /mnt, which worked as intented. I edited my /etc/default/grub file back to how it originally was, and then I tried to re-generate my grub.cfg file again with the command: grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg. Nevertheless, I keep getting the following error: /usr/sbin/grub2-probe: error: cannot find a device for / (is /dev mounted?).. I have tried several combinations of the mounting procedure without success, such as this one: sudo mount --bind /dev /mnt/root/dev sudo mount --bind /dev/pts /mnt/root/dev/pts sudo mount --bind /dev/shm /mnt/root/dev/shm sudo mount --bind /dev/disk /mnt/root/dev/disk sudo mount --bind /proc /mnt/root/proc sudo mount --bind /sys /mnt/root/sys sudo mount --bind /run /mnt/root/run I also tried to follow this guide , which attempts to solve a similar problem, and there, the command works. I don't know what I could be doing wrong. Any help is appreciated! **Output of lsblk** Device Start End Sectors Size Type /dev/nvme0n1p1 2048 845151 843104 411.7M EFI System /dev/nvme0n1p2 845824 878591 32768 16M Microsoft reserved /dev/nvme0n1p3 878592 783736831 782858240 373.3G Microsoft basic data /dev/nvme0n1p4 994082816 997033681 2950866 1.4G Windows recovery environmen /dev/nvme0n1p5 997033984 1000214527 3180544 1.5G Windows recovery environmen /dev/nvme0n1p6 783736832 785833983 2097152 1G EFI System /dev/nvme0n1p7 785833984 977303551 191469568 91.3G Linux filesystem /dev/nvme0n1p8 977303552 994080767 16777216 8G Linux swap
Camilo Martínez M. (141 rep)
Jan 15, 2024, 03:00 AM • Last activity: Jan 15, 2024, 10:47 PM
1 votes
1 answers
1675 views
update-grub ignoring GRUB_GFXMODE only
I uncommented `/etc/default/grub` and changed to following: ``` GRUB_GFXMODE=2560x1440x32 ``` Then, ran `sudo update-grub` without issues. Now, the `/boot/grub/grub.cfg` still contains: ``` ... if loadfont $font ; then set gfxmode=1280x720,1280x800,auto load_video ... ``` As expected, the resolution...
I uncommented /etc/default/grub and changed to following:
GRUB_GFXMODE=2560x1440x32
Then, ran sudo update-grub without issues. Now, the /boot/grub/grub.cfg still contains:
...
if loadfont $font ; then
  set gfxmode=1280x720,1280x800,auto
  load_video
...
As expected, the resolution was 1280x720. Before someone asks: 1. I didn't touch /boot/grub/grub.cfg so far. Only cated it. 2. Modifying any other variable like GRUB_TIMEOUT in works correctly. 3. 2560x1440 instead of 2560x1440x32 didn't work either. 4. Adding GRUB_GFXPAYLOAD_LINUX=keep in /etc/default/grub got updated in /boot/grub/grub.cfg didn't help. 5. 2560x1440 is my native resolution as confirmed by xrandr and works fine. grub also is fine with it as evident below. The only thing that currently works is modifying /boot/grub/grub.cfg on previously mentioned line:
...
if loadfont $font ; then
  set gfxmode=2560x1440x32,auto
  load_video
...
**TLDR:** update-grub ignores GRUB_GFXMODE when it's updating /boot/grub/grub.cfg. Is there a way to get verbose output when running update-grub? I am on kali-linux/Debian dual booted with Windows 11.
Anutrix (441 rep)
Jan 5, 2023, 04:17 AM • Last activity: Jan 5, 2023, 04:35 AM
1 votes
0 answers
193 views
Use device tree or Kconfig to load a driver
I would like to add and enable a new device in an embedded Linux image. Is it enough to just specify the information in a device tree file and then the driver for the device will get loaded based on the information? Or must I also use Kconfig to enable this?
I would like to add and enable a new device in an embedded Linux image. Is it enough to just specify the information in a device tree file and then the driver for the device will get loaded based on the information? Or must I also use Kconfig to enable this?
Engineer999 (1233 rep)
Nov 20, 2022, 05:29 PM
1 votes
1 answers
1884 views
Low resolution grub arch nvidia
This is not a big deal but this has been frustrating for a while now. My graphic card is an RTX 3070 When I boot with grub I am stuck with a very low resolution, probably 1024. I checked the command `videoinfo` in grub prompt and it returns two possible resolutions, 860x480 or 1024x768 But when I bo...
This is not a big deal but this has been frustrating for a while now. My graphic card is an RTX 3070 When I boot with grub I am stuck with a very low resolution, probably 1024. I checked the command videoinfo in grub prompt and it returns two possible resolutions, 860x480 or 1024x768 But when I boot from a ubuntu live CD though, the resolution is fine (let's say high enough). I compared parameters passed to the kernel and tried to imitate in arch the one in ubuntu but without any success. I have tried different combination but ATM my parameters are such as:
GRUB_DISABLE_OS_PROBER=false
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX="nvidia-drm.modeset=1 quiet splash"
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
GRUB_TERMINAL_INPUT=console
GRUB_TERMINAL_OUTPUT=gfxterm
GRUB_GFXMODE=1024x768
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_COLOR_NORMAL="light-blue/black"
GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
GRUB_BACKGROUND="/boot/grub/arch.png"
GRUB_THEME="/usr/share/grub/themes/Vimix/theme.txt"
**EDIT:** I tried to set GRUB_GFXMODEwith higher resolutions, auto and to specify the depth (width x height x depth) it had no effect **EDIT2:** I used videoinfonot vbeinfo
zakrapovic (466 rep)
Oct 21, 2022, 09:32 PM • Last activity: Oct 22, 2022, 03:39 PM
0 votes
1 answers
189 views
Booting into Xen with grub2-mkconfig 2.03 on centos8 x86_64
``` Linux localhost.localdomain 4.18.0-394.el8.x86_64 #1 SMP Tue May 31 16:19:11 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux grub2-mkconfig (GRUB) 2.03 ``` On my centos8, I have installed `centos-release-openstack-xena.noarch` But I cannot boot into Xen, please help. Theoretically, after installing Xen,...
Linux localhost.localdomain 4.18.0-394.el8.x86_64 #1 SMP Tue May 31 16:19:11 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

grub2-mkconfig (GRUB) 2.03
On my centos8, I have installed centos-release-openstack-xena.noarch But I cannot boot into Xen, please help. Theoretically, after installing Xen, I should only run grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg As my /etc/grub.d has a linux_xen file and antoher large number of files hanging there: [root@localhost ~]# ls /etc/grub.d/ 00_header 01_users 10_linux 11_linux_xen 20_linux_xen 30_os-prober 35_fwupd 41_custom 00_tuned 08_fallback_counting 10_reset_boot_success 12_menu_auto_hide 20_ppc_terminfo 30_uefi-firmware 40_custom README (11_linux_xen is a symlink I created pointing to 20_linux_xen) Unfortunately, grub.cfg will have nothing in the linux_xen section. I added `echo . cat /dev/null || true` bootfs="make_system_path_relative_to_its_root / | sed -e "s,@$,,"" LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs}" ;; esac title_correction_code= linux_entry () { os="$1" version="$2" xen_version="$3" type="$4" args="$5" xen_args="$6" if [ -z "$boot_device_id" ]; then boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" fi if [ x$type != xsimple ] ; then if [ x$type = xrecovery ] ; then title="$(gettext_printf "%s, with Xen %s and Linux %s (recovery mode)" "${os}" "${xen_version}" "${version}")" else title="$(gettext_printf "%s, with Xen %s and Linux %s" "${os}" "${xen_version}" "${version}")" fi replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')" if [ x"Xen ${xen_version}>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)" title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;" grub_warn "$(gettext_printf "Please don't use old title \%s' for GRUB_DEFAULT, use \%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")" fi echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'xen-gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/" else title="$(gettext_printf "%s, with Xen hypervisor" "${os}")" echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'xen-gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/" fi if [ x$type != xrecovery ] ; then save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/" fi if [ -z "${prepare_boot_cache}" ]; then prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)" fi printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})" lmessage="$(gettext_printf "Loading Linux %s ..." ${version})" sed "s/^/$submenu_indentation/" /dev/null || grep -qx "CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then linux_list="$linux_list $i" ; fi fi done if [ "x${linux_list}" = "x" ] ; then exit 0 fi file_is_not_sym () { case "$1" in */xen-syms-*) return 1;; *) return 0;; esac } xen_list= for i in /boot/xen*; do if grub_file_is_not_garbage "$i" && file_is_not_sym "$i" ; then xen_list="$xen_list $i" ; fi done prepare_boot_cache= boot_device_id= title_correction_code= machine=uname -m case "$machine" in i?86) GENKERNEL_ARCH="x86" ;; mips|mips64) GENKERNEL_ARCH="mips" ;; mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;; arm*) GENKERNEL_ARCH="arm" ;; *) GENKERNEL_ARCH="$machine" ;; esac # Extra indentation to add to menu entries in a submenu. We're not in a submenu # yet, so it's empty. In a submenu it will be equal to '\t' (one tab). submenu_indentation="" is_top_level=true while [ "x${xen_list}" != "x" ] ; do list="${linux_list}" current_xen=version_find_latest $xen_list xen_basename=basename ${current_xen} xen_dirname=dirname ${current_xen} rel_xen_dirname=make_system_path_relative_to_its_root $xen_dirname xen_version=echo $xen_basename | sed -e "s,.gz$,,g;s,^xen-,,g" if [ -z "$boot_device_id" ]; then boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" fi if [ "x$is_top_level" != xtrue ]; then echo " submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {" fi if ($grub_file --is-arm64-efi $current_xen); then xen_loader="xen_hypervisor" module_loader="xen_module" else if ($grub_file --is-x86-multiboot2 $current_xen); then xen_loader="multiboot2" module_loader="module2" else xen_loader="multiboot" module_loader="module" fi fi while [ "x$list" != "x" ] ; do linux=version_find_latest $list gettext_printf "Found linux image: %s\n" "$linux" >&2 basename=basename $linux dirname=dirname $linux rel_dirname=make_system_path_relative_to_its_root $dirname version=echo $basename | sed -e "s,^[^0-9]*-,,g" alt_version=echo $version | sed -e "s,\.old$,,g" linux_root_device_thisversion="${LINUX_ROOT_DEVICE}" initrd= for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \ "initrd-${version}" "initramfs-${version}.img" \ "initrd.img-${alt_version}" "initrd-${alt_version}.img" \ "initrd-${alt_version}" "initramfs-${alt_version}.img" \ "initramfs-genkernel-${version}" \ "initramfs-genkernel-${alt_version}" \ "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" ; do if test -e "${dirname}/${i}" ; then initrd="$i" break fi done if test -n "${initrd}" ; then gettext_printf "Found initrd image: %s\n" "${dirname}/${initrd}" >&2 else # "UUID=" magic is parsed by initrds. Since there's no initrd, it can't work here. if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \ || [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then linux_root_device_thisversion=${GRUB_DEVICE} else linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID} fi fi if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then linux_entry "${OS}" "${version}" "${xen_version}" simple \ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}" submenu_indentation="$grub_tab$grub_tab" if [ -z "$boot_device_id" ]; then boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" fi # TRANSLATORS: %s is replaced with an OS name echo "submenu '$(gettext_printf "Advanced options for %s (with Xen hypervisor)" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {" echo " submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {" is_top_level=false fi linux_entry "${OS}" "${version}" "${xen_version}" advanced \ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}" if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then linux_entry "${OS}" "${version}" "${xen_version}" recovery \ "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}" fi list=echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' ' done if [ x"$is_top_level" != xtrue ]; then echo ' }' fi xen_list=echo $xen_list | tr ' ' '\n' | fgrep -vx "$current_xen" | tr '\n' ' ' done # If at least one kernel was found, then we need to # add a closing '}' for the submenu command. if [ x"$is_top_level" != xtrue ]; then echo '}' fi echo "$title_correction_code" EOF
Error message generated when running grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg :
[root@localhost ~]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg Generating grub configuration file ... losetup: /dev/nvme0n1p3: failed to use device: No such device /etc/grub.d/11_linux_xen: line 20: make_system_path_relative_to_its_root: command not found /etc/grub.d/11_linux_xen: line 20: make_system_path_relative_to_its_root: command not found /etc/grub.d/11_linux_xen: line 20: grub_get_device_id: command not found /etc/grub.d/11_linux_xen: line 20: gettext_printf: command not found /etc/grub.d/11_linux_xen: line 20: gettext_printf: command not found /etc/grub.d/11_linux_xen: line 20: grub_quote: command not found /etc/grub.d/11_linux_xen: line 20: grub_quote: command not found /etc/grub.d/11_linux_xen: line 20: gettext_printf: command not found /etc/grub.d/11_linux_xen: line 20: grub_quote: command not found /etc/grub.d/11_linux_xen: line 20: gettext_printf: command not found /etc/grub.d/11_linux_xen: line 20: grub_quote: command not found /etc/grub.d/11_linux_xen: line 20: prepare_grub_to_access_device: command not found /etc/grub.d/11_linux_xen: line 20: grub_add_tab: command not found /etc/grub.d/11_linux_xen: line 20: gettext_printf: command not found /etc/grub.d/11_linux_xen: line 20: gettext_printf: command not found /etc/grub.d/11_linux_xen: line 20: grub_quote: command not found /etc/grub.d/11_linux_xen: line 20: grub_quote: command not found /etc/grub.d/11_linux_xen: line 158: syntax error near unexpected token `}' ``` This question was also published at: https://xcp-ng.org/forum/topic/6113/booting-into-xen-with-grub2-mkconfig-2-03-on-centos8-x86_64 And: https://forums.centos.org/viewforum.php?f=54
Bruno Schroeder (25 rep)
Jul 18, 2022, 12:46 PM • Last activity: Jul 18, 2022, 02:03 PM
0 votes
0 answers
2772 views
System fails to boot new kernel after CentOS 9 Stream migration
I have performed a migration from `CentOS 8 Stream` to `Centos 9 Stream` on a VPS server of mine with directions I found [on Github][1] which have worked, except grub still boots the old kernel from when the system ran CentOS 8 Stream. I have tried reinstalling the kernel package which should update...
I have performed a migration from CentOS 8 Stream to Centos 9 Stream on a VPS server of mine with directions I found on Github which have worked, except grub still boots the old kernel from when the system ran CentOS 8 Stream. I have tried reinstalling the kernel package which should update grub itself and I have also tried upgrading grub. I tried the kernel reinstall with this command... # dnf reinstall kernel I also tried to update the grub configuration file, which normally will list the kernels in /boot that it puts in the configuration... # grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Adding boot menu entry for UEFI Firmware Settings ... done I also tried the above with grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg but the output was the same. Here is the generated grub.cfg file from this, which clearly has no kernels listed in it: https://dpaste.com/ATGL8C523 These are the vmlinuz files in /boot and show the new kernel is there, and there are other files in this directory as well such as initramfs, etc... /boot/vmlinuz-0-rescue-a5ff5996dcd8490680008260ff7a2d2f /boot/vmlinuz-0-rescue-f6af4a0f32be46729879177156b19b96 /boot/vmlinuz-4.18.0-240.1.1.el8_3.x86_64 /boot/vmlinuz-4.18.0-394.el8.x86_64 /boot/vmlinuz-5.14.0-109.el9.x86_64 The system has booted with the old kernel from CentOS 8 as shown in the output for uname -sr... 4.18.0-240.1.1.el8_3.x86_64 Here is the configuration for /etc/default/grub on the system... GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0" GRUB_DISABLE_RECOVERY="true" The server is a VPS I lease which runs KVM using Proxmox as the hypervisor.
John Tate (2040 rep)
Jun 18, 2022, 02:10 PM • Last activity: Jun 18, 2022, 02:15 PM
1 votes
0 answers
794 views
Fix grub to boot correctly into CentOS
I had a dual-boot computer with windows and CentOS 8 [A] on it, each one in different partitions. I created a new partition and successfully installed CentOS Stream [B] on it, but now I'm unable to boot into [A]. How can I fix it? **Further details** Disk partitions: /dev/nvm...p1: /boot /dev/nvm......
I had a dual-boot computer with windows and CentOS 8 [A] on it, each one in different partitions. I created a new partition and successfully installed CentOS Stream [B] on it, but now I'm unable to boot into [A]. How can I fix it? **Further details** Disk partitions: /dev/nvm...p1: /boot /dev/nvm...p2 to /dev/nvm...p4: not relevant /dev/nvm...p5: /home partition of [A] /dev/nvm...p6: swap /dev/nvm...p7: xfs /dev/nvm...p8: Logival volume with three subpartitions(?). - /dev/cl/root: /root of [A] - /dev/cl/home: Not in use. - /dev/cl/swap: swap created when installing [A] /dev/nvm...p9: xfs /dev/nvm...p10: Logival volume with two subpartitions(?). - /dev/cs/root: [B] - /dev/cs/swap: swap created when installing [B] What have I tried?: After booting into [B], I first substituted all references to cs/root with cl/root in the file /etc/default/grub. After that I executed grub2-mkconfig -o "$(readlink -e /etc/grub.cfg)", as I had read in this question . After rebooting, four entries with CentOS 8 appear in the grub menu. However, when I try to boot into anyone of them, the system enters an emergency mode and shows the following error: [Failed] Failed to start Switch Root. Running systemctl status initrd-switch-root.service, as proposed here , results in the error description Failed to switch root: Specified switch root path '/sysroot' does not seem to be an OS tree. os-release file is missing.. I've tried the solution proposed there (remounting /sysroot and creating an etc/os-release file inside of it), but it doesn't work. Under the main tree there is already an existing /etc/os-release file in it. At this point, /dev/cl/home is mounted in /sysroot. What else can I do? Many thanks!
Gypaets (427 rep)
Mar 28, 2022, 12:50 AM • Last activity: Mar 28, 2022, 06:59 AM
Showing page 1 of 20 total questions