You are not logged in.
Hi,
I'm running Arch on a HP ProBook 455 G7 with a dual boot setup for starting Windows 10.
When starting Windows via grub I get the following message:
Error: not a valid root device.
Press any key to continue ...
The grub config has been created automatically via "sudo grub-mkconfig -o /boot/grub/grub.cfg" and having "os-prober" installed.
I found a workaround to start Windows by using the grub command line and entering "exit" which leads to an exit of the grub boot selection and a booting of Windows.
Is there any way I can achieve this via the grub selection menu directly or what am I doing wrong ending up with the error above?
fdisk -l
sudo fdisk -l
Festplatte /dev/nvme0n1: 476,94 GiB, 512110190592 Bytes, 1000215216 Sektoren
Festplattenmodell: -
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: gpt
Festplattenbezeichner: -
Gerät Anfang Ende Sektoren Größe Typ
/dev/nvme0n1p1 2048 2099199 2097152 1G Microsoft Basisdaten
/dev/nvme0n1p2 2099200 84019199 81920000 39,1G Linux-Dateisystem
/dev/nvme0n1p3 84019200 983437311 899418112 428,9G Linux-Dateisystem
/dev/nvme0n1p4 983437312 1000214527 16777216 8G Linux Swap
Festplatte /dev/sda: 232,89 GiB, 250059350016 Bytes, 488397168 Sektoren
Festplattenmodell: -
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: gpt
Festplattenbezeichner: -
Gerät Anfang Ende Sektoren Größe Typ
/dev/sda1 2048 1085439 1083392 529M Windows-Wiederherstellungsumgebung
/dev/sda2 1085440 1290239 204800 100M EFI-System
/dev/sda3 1290240 1323007 32768 16M Microsoft reserviert
/dev/sda4 1323008 103723007 102400000 48,8G Microsoft Basisdaten
/dev/sda5 243222528 488396799 245174272 116,9G Microsoft Basisdaten
/dev/sda6 103723008 243222527 139499520 66,5G Microsoft Basisdaten
Last edited by Burner (2023-07-06 20:34:00)
Offline
It seems to be a special problem. Does anyone know if this is hardware/BIOS related or GRUB related?
Maybe I have to ask somewhere else depending on the source of the issue.
Offline
Post
lsblk -f
and the generated grub.cfg
Where is the actual GRUB binary installed?
Offline
Hi,
thanks for the answer. Below the output:
lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1
│ ntfs Wiederherstellung
│ 002693062692FBBA
├─sda2
│ vfat FAT32 7094-C078
├─sda3
│
├─sda4
│ ntfs Win10 B81A970D1A96C830
├─sda5
│ ext4 1.0 home a65df521-9553-4ca9-9a25-5367c7838bf4
└─sda6
ntfs win_home
0B83E0A65A2DE4F1
nvme0n1
│
├─nvme0n1p1
│ vfat FAT32 35C8-4EC8 986M 4% /efi
├─nvme0n1p2
│ ext4 1.0 9013e9c1-d012-4812-8272-5c72939babd6 24,3G 31% /
├─nvme0n1p3
│ ext4 1.0 153cfa42-21fd-4d3f-a03b-e9bdf28c54d8 40G 85% /home
└─nvme0n1p4
swap 1 82d2b380-9848-488a-ba44-f4a9f3efc503 [SWAP]
Since my setup is a GPT/EFI the grub main folder is located at /boot/grub
ls /boot/grub
fonts grub.cfg grubenv locale themes x86_64-efi
and the efi directory is /efi
ls /efi/EFI/
GRUB HP
grub.cfg
cat /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 ###
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
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 9013e9c1-d012-4812-8272-5c72939babd6
else
search --no-floppy --fs-uuid --set=root 9013e9c1-d012-4812-8272-5c72939babd6
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=de_DE
insmod gettext
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 ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-9013e9c1-d012-4812-8272-5c72939babd6' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 9013e9c1-d012-4812-8272-5c72939babd6
else
search --no-floppy --fs-uuid --set=root 9013e9c1-d012-4812-8272-5c72939babd6
fi
echo 'Loading Linux linux ...'
linux /boot/vmlinuz-linux root=UUID=9013e9c1-d012-4812-8272-5c72939babd6 rw loglevel=3 quiet acpi_backlight=vendor
echo 'Loading initial ramdisk ...'
initrd /boot/amd-ucode.img /boot/initramfs-linux.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-9013e9c1-d012-4812-8272-5c72939babd6' {
menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-9013e9c1-d012-4812-8272-5c72939babd6' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 9013e9c1-d012-4812-8272-5c72939babd6
else
search --no-floppy --fs-uuid --set=root 9013e9c1-d012-4812-8272-5c72939babd6
fi
echo 'Loading Linux linux ...'
linux /boot/vmlinuz-linux root=UUID=9013e9c1-d012-4812-8272-5c72939babd6 rw loglevel=3 quiet acpi_backlight=vendor
echo 'Loading initial ramdisk ...'
initrd /boot/amd-ucode.img /boot/initramfs-linux.img
}
menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-9013e9c1-d012-4812-8272-5c72939babd6' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 9013e9c1-d012-4812-8272-5c72939babd6
else
search --no-floppy --fs-uuid --set=root 9013e9c1-d012-4812-8272-5c72939babd6
fi
echo 'Loading Linux linux ...'
linux /boot/vmlinuz-linux root=UUID=9013e9c1-d012-4812-8272-5c72939babd6 rw loglevel=3 quiet acpi_backlight=vendor
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-linux-fallback.img
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-efi-7094-C078' {
insmod part_gpt
insmod fat
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt2' --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 7094-C078
else
search --no-floppy --fs-uuid --set=root 7094-C078
fi
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###
### 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 ###
Last edited by Burner (2020-09-22 21:27:44)
Offline
I recently made a dual boot installation of Windows 10 and Linux following this advice. I did as most recommended, installed Windows 10 first. When installing I set the first (EFI/boot) partition size to 1 gigabytes, as told here. I'm not sure if needed, but also set MSR partition size to 128Mb same way (automatic install suggested only 16Mb for MSR partition). Forget the recovery partition part, it you use the latest (or very fresh) install package from Microsoft, created by Windows Media Creation Tool, the Windows 10 install will create it automatically after the main Windows partition. Just remember to leave enough empty space to hard drive, do not use all empty space for Windows main partition.
Instead of grub, rEFInd boot manager is used there. Here is told some benefits of using rEFInd.
If rEFInd can offer a solution, and you have already installed Windows, and perhaps Linux too, just check the "Install the bootloader" part of the advice.
For the latest Windows, this is the recommended order of partitions, here's from my laptop.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
|-sda1 8:1 0 1G 0 part /boot/efi
|-sda2 8:2 0 128M 0 part
|-sda3 8:3 0 399.5G 0 part
|-sda4 8:4 0 505M 0 part
|-sda5 8:5 0 4G 0 part [SWAP]
|-sda6 8:6 0 150G 0 part /
`-sda7 8:7 0 350G 0 part /home
Last edited by euromatlox (2020-09-23 17:33:04)
Offline
lsblk -f sda ├─sda2 │ vfat FAT32 7094-C078 nvme0n1 │ ├─nvme0n1p1 │ vfat FAT32 35C8-4EC8 986M 4% /efi
You have boot files for windows on drive sda (another EFI system partition)
Offline
You have boot files for windows on drive sda (another EFI system partition)
Yes, and? Is that a problem?
@euromatlox
I will check your proposal later, thanks!
Offline
I am not using grub and don't have two efi system partitions, so I can only imagine, that this configuration needs some additional configuration steps (boot files for windows are on second system EFI partition, which is not mounted?).
Offline
We talk about GRUB scope it should not matter where it is mounted during runtime.
Though I agree this would likely be fixable by installing GRUB to the Windows EFI, this doesn't explain why this happens with the GRUB config as present. I do suspect it is possible that your firmware does not allow GRUB to see the second drive in this scope, but that would be hard to test for. Maybe - without having tested it - what output do you get for
drivemap -l
in the GRUB console? https://www.gnu.org/software/grub/manua … l#drivemap
Offline
I tried drivemap -l with an unexpected result (translated from german so the error message could be slightly different):
grub> drivemap -l
Error: Command "drivemap" could not be found.
Other commands are working like ls:
grub> ls
(hd0) (hd0,gpt6) (hd0,gpt5) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) (hd1) (hd1,gpt4) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1)
Do I have to install additional tools for the command drivemap?
Offline
had the same issue on a 450 G5, disable fastboot and test again
Offline
had the same issue on a 450 G5, disable fastboot and test again
I just checked, fastboot was already disabled :-( so no luck here.
Offline
Would it be possible to create a grub entry just executing the grub command "exit"?
In order to use the workaround solution?
Offline
Since I had to reinstall Windows last month I came across this topic again. After putting in another ~1h of investigation I still could not find out why GRUB is unable to boot/load/chainload/whatever the windows system. I got the same setup (all GPT partition setup, 2 separate drives etc) on my desktop machine and there it works as expected. So I am guessing my HP laptop/bios is the problem.
Therefore I am still using my workaround which is to create a custom GRUB menu entry and just skipping the first boot entry (which is GRUB) by executing "exit" in GRUB. The HP bios then loads the next boot entry which is Windows. This works for me.
TLDR
1. Setup Boot Order in Bios: 1. GRUB, 2. Windows
2. Create custom GRUB menu entry as follows in /etc/grub.d/40_custom:
menuentry "Windows 10" {
savedefault
exit
}
3. Re-create grub boot config via:
grub-mkconfig -o /boot/grub/grub.cfg
I marked the post as solved. Not sure if this makes sense since it is a workaround and not a general solution.
Last edited by Burner (2023-07-06 20:35:46)
Offline