Skip to main content
Topic: os-prober and libfuse3.so.3 problem (os-prober cannot detect win10 partitions) (Read 447 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

os-prober and libfuse3.so.3 problem (os-prober cannot detect win10 partitions)

I am trying to setup a dual-boot Artix/win10 system
When setting up grub, os-prober does not find the win10 partition (which is /dev/nvme0n1p2)
I think I traced the problem to missing libfuse3.so.3, because:

[artix-live mnt]# grub-mount /dev/nvme0n1p2 /mnt/win10
grub-mount: error while loading shared libraries: libfuse3.so.3: cannot open shared object file: No such file or directory

and

[artix-live mnt]# ldd /usr/bin/grub-mount
   linux-vdso.so.1 (0x00007900bcae8000)
   libdevmapper.so.1.02 => /usr/lib/libdevmapper.so.1.02 (0x00007900bc8fa000)
   libfuse3.so.3 => not found
   libc.so.6 => /usr/lib/libc.so.6 (0x00007900bc70c000)
   libudev.so.1 => /usr/lib/libudev.so.1 (0x00007900bc6c5000)
   libm.so.6 => /usr/lib/libm.so.6 (0x00007900bc5cb000)
   /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007900bcaea000)
   libcap.so.2 => /usr/lib/libcap.so.2 (0x00007900bc5bf000)
   libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007900bc590000)

The package world/fuse-common is installed ( version 3.16.2-1)
If that package does not provide libfuse3.so.3, then which package does provide it?

(edit) I found it, it's world/fuse3.
I installed it, but now I have another problem. When I try to use os-prober I get a segfault. And I traced that to grub-mount causing the segfault:

[artix-live mnt]# grub-mount /dev/nvme0n1p2 /mnt/win10
Segmentation fault

How do I solve this?
(this is on a freshly installed system, install done this morning)

 

Re: os-prober and libfuse3.so.3 problem (os-prober cannot detect win10 partitions)

Reply #1
I'd assume you should use the in-kernel paragon's ntfs3 module, just mount the drive directly in fstab as such:

Code: [Select]
UUID="PARTITIONID"        /mnt/ntfs/WIN_E     ntfs3 defaults,exec,uid=1000,gid=1000,iocharset=utf8 0 0

You can check the partiton uuid with gparted or something.

Re: os-prober and libfuse3.so.3 problem (os-prober cannot detect win10 partitions)

Reply #2
If all else fails and no one that uses grub can help you another option is to create a rEFInd boot usb. Boot from it. If it finds both your Linux and Windows installs, and can boot into them both,  consider replacing grub with rEFInd.

Re: os-prober and libfuse3.so.3 problem (os-prober cannot detect win10 partitions)

Reply #3
I'd assume you should use the in-kernel paragon's ntfs3 module, just mount the drive directly in fstab as such:

Code: [Select]
UUID="PARTITIONID"        /mnt/ntfs/WIN_E     ntfs3 defaults,exec,uid=1000,gid=1000,iocharset=utf8 0 0

You can check the partiton uuid with gparted or something.
Yeah I tried with ntfs-3g installed and the partition mounted, the problem wasn't that but the missing libfuse3.so.3
Weirdly enough, even though grub-mount segfaults, it works *just*enough* to allow os-prober to see the NTFS partition and add a grub.cfg entry for it before b0rking out. So in the end my problem was umm... *fixed*
I guess the main problems remaining are:
1. why is grub-mount segfaulting with the included libfuse3.so.3, and
2. why isn't fuse3 a dependency of grub since one of the components of grub depends on a library found in that package (and it's not automatically pulled in by pacman when installing grub)

Re: os-prober and libfuse3.so.3 problem (os-prober cannot detect win10 partitions)

Reply #4
Welp, I trigger os-prober differently with:
Code: [Select]
sudo grub-mkconfig -o /boot/grub/grub.cfg

This does indeed properly insert my Win 8.1 installation into grub. I have no idea why libfuse3.so.3 is segfaulting, but I thought i'd share how I do it.

Re: os-prober and libfuse3.so.3 problem (os-prober cannot detect win10 partitions)

Reply #5
well yes eventually that's exactly how I got my installation finalized, only with a couple of segfault messages inserted in the output as well. But it worked nonetheless.
However if I don't install the fuse3 package, that does not work. And fuse3 is not pulled in automatically by grub.
With fuse3 installed, it segfaults - twice in fact, but it does get the job done.

Re: os-prober and libfuse3.so.3 problem (os-prober cannot detect win10 partitions)

Reply #6
fuse3 is an optional depencency:
Code: [Select]
pacman -Si grub
So it should (thankfully) not be installed automatically. Or am I missing something?

Re: os-prober and libfuse3.so.3 problem (os-prober cannot detect win10 partitions)

Reply #7
When running update-grub, os-prober calls grub-mount, and in my case grub-mount runs for a while using an entire CPU core making the process quite slow, although it's much faster than it used to be. This is with partitions formatted in BTRFS, it works better with some file systems than others. However there is a simple workaround which would probably help you too - mount the additional partitions yourself first, then it might be OK and skip the problem.

grub-mount is part of the Grub project, so if it is segfaulting then that's a Grub issue, but os-prober is a separate project maintained by someone else and there might be some question about whether os-prober should be using grub-mount at all when the system is up and running and normal mount is available, but possibly it's done like that for security reasons or something, who knows.

You can make a simple script to do this automatically, you will need to adapt it for the name and number of other partitions which have operating systems installed:
Code: [Select]
#!/bin/sh
mkdir /tmp/somenameabc123
mkdir /tmp/somenamedef456
mount /dev/nvme0n1p2 /tmp/somenameabc123
mount /dev/nvme0n1p3 /tmp/somenamedef456
grub-mkconfig -o /boot/grub/grub.cfg
# umount the dir not the device in case something else mounted it while this script was running
umount /tmp/somenameabc123
umount /tmp/somenamedef456
rmdir /tmp/somenameabc123
rmdir /tmp/somenamedef456
Put it in /usr/local/bin and name the file update-grub, make it executable (# chmod a+x /usr/local/bin/update-grub) and then when you run update-grub this will get called as /usr/local/bin appears in $PATH before /usr/bin, OK so it's not the real fix but it might help for now, it certainly speeds up my update-grub completion times.