Os-prober gets stuck (runs for 12h+)

TL;DR: the generation of a grub config gets stuck for 12h+ (as in generates no more output in the terminal). Also sudo parted -l and sudo fdisk -l get stuck too after sdc.

Hello there :slight_smile:

I installed manjaro (the xfce flavour) alongside windows 10 a few weeks ago. Everything worked fine until I tried switching to a newer kernel (5.15). I think I noticed grub getting stuck while generating a new grub config. Which looked something like this:

[dermuuux@OldButGold ~]$ sudo update-grub
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-5.15-x86_64
Found initrd image: /boot/intel-ucode.img /boot/initramfs-5.15-x86_64.img
Found initrd fallback image: /boot/initramfs-5.15-x86_64-fallback.img
Found linux image: /boot/vmlinuz-5.10-x86_64
Found initrd image: /boot/intel-ucode.img /boot/initramfs-5.10-x86_64.img
Found initrd fallback image: /boot/initramfs-5.10-x86_64-fallback.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.

The os-prober then gets stuck for even 12h+ (I let it run overnight one time, because I read the os-prober can take some time on certain machines).

So I researched this os-prober thing and ended up changing GRUB_DISABLE_OS_PROBER=false to GRUB_DISABLE_OS_PROBER=true in /etc/grub/default.
After doing that grub generated it’s config as it should and I managed to upgrade the kernel.

But now I can’t boot into my windows 10. And I can’t figure out why or where os-prober gets stuck. That’s why I’m coming to you asking for help.

Here are some informations about my system:

[dermuuux@OldButGold ~]$ inxi -Fxxxza --no-host
System:
  Kernel: 5.15.7-1-MANJARO x86_64 bits: 64 compiler: gcc v: 11.1.0
    parameters: BOOT_IMAGE=/boot/vmlinuz-5.15-x86_64
    root=UUID=e11c8490-f553-479b-ac67-d931f7cd81d8 rw quiet
    udev.log_priority=3
  Desktop: Xfce 4.16.0 tk: Gtk 3.24.29 info: xfce4-panel wm: xfwm 4.16.1
    vt: 7 dm: LightDM 1.30.0 Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Desktop Mobo: ASUSTeK model: P7P55D-E PRO v: Rev 1.xx
    serial: <superuser required> BIOS: American Megatrends v: 1703
    date: 06/26/2012
CPU:
  Info: model: Intel Core i7 K 875 bits: 64 type: MT MCP arch: Nehalem
    family: 6 model-id: 0x1E (30) stepping: 5 microcode: 0xA
  Topology: cpus: 1x cores: 4 tpc: 2 threads: 8 smt: enabled cache:
    L1: 256 KiB desc: d-4x32 KiB; i-4x32 KiB L2: 1024 KiB desc: 4x256 KiB
    L3: 8 MiB desc: 1x8 MiB
  Speed (MHz): avg: 1440 high: 2152 min/max: 1200/2934 boost: enabled
    scaling: driver: acpi-cpufreq governor: schedutil cores: 1: 1204 2: 1341
    3: 1204 4: 2152 5: 1204 6: 1222 7: 1204 8: 1992 bogomips: 47097
  Flags: ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities:
  Type: itlb_multihit status: KVM: VMX disabled
  Type: l1tf
    mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable
  Type: mds status: Vulnerable: Clear CPU buffers attempted, no microcode;
    SMT vulnerable
  Type: meltdown mitigation: PTI
  Type: spec_store_bypass
    mitigation: Speculative Store Bypass disabled via prctl and seccomp
  Type: spectre_v1
    mitigation: usercopy/swapgs barriers and __user pointer sanitization
  Type: spectre_v2 mitigation: Full generic retpoline, IBPB: conditional,
    IBRS_FW, STIBP: conditional, RSB filling
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: AMD Ellesmere [Radeon RX 470/480/570/570X/580/580X/590]
    vendor: Sapphire Limited Nitro+ driver: amdgpu v: kernel bus-ID: 01:00.0
    chip-ID: 1002:67df class-ID: 0300
  Display: x11 server: X.Org 1.21.1.2 compositor: xfwm4 v: 4.16.1 driver:
    loaded: amdgpu,ati unloaded: modesetting alternate: fbdev,vesa
    display-ID: :0.0 screens: 1
  Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x285mm (20.0x11.2")
    s-diag: 582mm (22.9")
  Monitor-1: HDMI-A-0 res: 1920x1080 hz: 60 dpi: 44
    size: 1107x623mm (43.6x24.5") diag: 1270mm (50")
  Message: Unable to show advanced data. Required tool glxinfo missing.
Audio:
  Device-1: Intel 5 Series/3400 Series High Definition Audio vendor: ASUSTeK
    driver: snd_hda_intel v: kernel bus-ID: 00:1b.0 chip-ID: 8086:3b56
    class-ID: 0403
  Device-2: AMD Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]
    vendor: Sapphire Limited driver: snd_hda_intel v: kernel bus-ID: 01:00.1
    chip-ID: 1002:aaf0 class-ID: 0403
  Sound Server-1: ALSA v: k5.15.7-1-MANJARO running: yes
  Sound Server-2: JACK v: 1.9.19 running: no
  Sound Server-3: PulseAudio v: 15.0 running: yes
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
    vendor: ASUSTeK M4A785/P7P55 driver: r8169 v: kernel port: d800
    bus-ID: 05:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: enp5s0 state: up speed: 100 Mbps duplex: full mac: <filter>
Drives:
  Local Storage: total: 5.46 TiB used: 62.69 GiB (1.1%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 850 EVO 1TB
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 3.0 Gb/s
    type: SSD serial: <filter> rev: 2B6Q scheme: MBR
  ID-2: /dev/sdb maj-min: 8:16 vendor: Seagate model: ST31000525SV
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 3.0 Gb/s
    type: HDD rpm: 7200 serial: <filter> rev: CV12 scheme: MBR
  ID-3: /dev/sdc maj-min: 8:32 vendor: Seagate model: ST31000525SV
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 3.0 Gb/s
    type: HDD rpm: 7200 serial: <filter> rev: CV12 scheme: MBR
  ID-4: /dev/sdd maj-min: 8:48 vendor: Western Digital
    model: WD30EURS-63R8UY0 size: 2.73 TiB block-size: physical: 4096 B
    logical: 512 B speed: 3.0 Gb/s type: N/A serial: <filter> rev: 0A80
    scheme: GPT
Partition:
  ID-1: / raw-size: 98.1 GiB size: 96 GiB (97.86%) used: 62.69 GiB (65.3%)
    fs: ext4 dev: /dev/sda4 maj-min: 8:4
Swap:
  Alert: No swap data was found.
Sensors:
  System Temperatures: cpu: 30.5 C mobo: 30.0 C gpu: amdgpu temp: 34.0 C
  Fan Speeds (RPM): cpu: 878 psu: 0 case-1: 0 case-2: 0 gpu: amdgpu
    fan: 1618
  Power: 12v: 12.15 5v: N/A 3.3v: 3.42 vbat: N/A gpu: amdgpu watts: 40.24
Info:
  Processes: 256 Uptime: 1h 21m wakeups: 0 Memory: 7.76 GiB
  used: 2.56 GiB (33.0%) Init: systemd v: 249 tool: systemctl Compilers:
  gcc: 11.1.0 Packages: pacman: 958 lib: 283 Shell: Bash v: 5.1.12
  running-in: xfce4-terminal inxi: 3.3.10
[dermuuux@OldButGold ~]$ sudo parted -l
[sudo] password for dermuuux: 
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 
Number  Start   End     Size   Type     File system  Flags
 1      1049kB  106MB   105MB  primary  ntfs
 2      106MB   894GB   894GB  primary  ntfs
 3      894GB   894GB   597MB  primary  ntfs         msftres
 4      894GB   1000GB  105GB  primary  ext4         boot
Model: ATA ST31000525SV (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 
Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1000GB  1000GB  primary  ntfs
Model: ATA ST31000525SV (scsi)
Disk /dev/sdc: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 
Number  Start   End     Size    Type     File system  Flags
 1      32,3kB  1000GB  1000GB  primary
[dermuuux@OldButGold ~]$ sudo fdisk -l
Disk /dev/sda: 931,51 GiB, 1000204886016 bytes, 1953525168 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: dos
Disk identifier: 0xcacd885d
Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1             2048     206847     204800   100M  7 HPFS/NTFS/exFAT
/dev/sda2           206848 1745711259 1745504412 832,3G  7 HPFS/NTFS/exFAT
/dev/sda3       1745713152 1746878463    1165312   569M 27 Hidden NTFS WinRE
/dev/sda4  *    1746878914 1952600063  205721150  98,1G 83 Linux
Disk /dev/sdb: 931,51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: ST31000525SV    
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: 0x6391841b
Device     Boot Start        End    Sectors   Size Id Type
/dev/sdb1        2048 1953521663 1953519616 931,5G  7 HPFS/NTFS/exFAT
Disk /dev/sdc: 931,51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: ST31000525SV    
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: 0x2e092a02
Device     Boot Start        End    Sectors   Size Id Type
/dev/sdc1          63 1953523119 1953523057 931,5G 42 SFS
[dermuuux@OldButGold ~]$ efibootmgr -v
EFI variables are not supported on this system.
[dermuuux@OldButGold ~]$ test -d /sys/firmware/efi && echo efi || echo bios
bios
[dermuuux@OldButGold ~]$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 931,5G  0 disk 
├─sda1   8:1    0   100M  0 part 
├─sda2   8:2    0 832,3G  0 part 
├─sda3   8:3    0   569M  0 part 
└─sda4   8:4    0  98,1G  0 part /
sdb      8:16   0 931,5G  0 disk 
└─sdb1   8:17   0 931,5G  0 part 
sdc      8:32   0 931,5G  0 disk 
├─sdc1   8:33   0    99M  0 part 
└─sdc2   8:34   0 931,4G  0 part 
sdd      8:48   0   2,7T  0 disk 
sr0     11:0    1  1024M  0 rom

Now, after gathering these informations about my system, I noticed that sudo parted -l and sudo fdisk -l both get stuck (as in don’t generate anymore output in the terminal) after sdc. That’s why I included the output for lsblk.

I don’t know if os-prober gets stuck on the same thing as parted and fdisk, but I thought I mention it.

Big thanks in advance for any help!

edit1: spelling
edit2: switched german console output to it’s english equivalent

Hello @MrWonderland and welcome :wink:

You can avoid that by typing export LANG=C before. Then everything following will be in English.

Looks like it identifies the filesystem as SFS for AMIGO OS and stuck there… Maybe unplug this device and run grub-update could solve it… However, if it is really SFS, then it is really uncommon to use, although grub should support to read it. Maybe that is the problem?

Ah thanks, I will edit the outputs in the original post to their english equivalents.

About the SFS filesystem. All disks should be NTFS. Except for sda4, which is ext4.

I’m going to try the unplugging of sdc and sdd.

Now that I have unplugged sdc and sdd os-prober generates the following output:

[dermuuux@OldButGold ~]$ sudo os-prober
[sudo] password for dermuuux: 
/dev/sda1:Windows 10:Windows:chain
error: invalid volume.
grub-probe: error: cannot find a GRUB drive for /dev/sdb1.  Check your device.map.
/dev/sdb1:Windows 7:Windows1:chain
error: invalid volume.
grub-probe: error: cannot find a GRUB drive for /dev/sdb2.  Check your device.map.
error: invalid volume.
grub-probe: error: cannot find a GRUB drive for /dev/sdb2.  Check your device.map.

Well is it possible that you use or used LDM of Windows? Grub cannot access Dynamic Disks of Windows and there is then no workaround that I know. Just disable the the os-prober in grub and use the UEFI/BIOS to boot each OS, otherwise convert them back to Basic Disks.

No wonder it takes so long when you have a slow CPU and a huge number of partitions on several slow disks - they all will be analysed for mountable OS.

Nevertheless, I hope someone capable in doing so might be able to improve os-prober to allow flagging some partitions not to be tested to speed up this process, some day.

Yes, I noticed 2 of my drives where dynamic disks. How would I go about booting an os with bios?

My workaround for now is to disable os-prober in /etc/default/grub and using custom entries in grub.d:

[dermuuux@OldButGold Downloads]$ cat /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# 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.
if [ "${grub_platform}" == "pc" ]; then
	menuentry "Microsoft Windows 10 BIOS/MBR" {
		insmod part_msdos
		insmod ntfs
		insmod ntldr
		search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 82FEA4D5FEA4C331
		ntldr /bootmgr
	}
fi
menuentry "System herunterfahren" {
	echo "System shutting down..."
	halt
}