GRUB error: unknown file system

I had to upgrade Windows 10 - hasn’t been upgraded since day 1.
They told me there would be no issues with it, even when I had pinpointed my dual-boot system.

silly me…

I have followed this tutorial:

Unfortunately, it was a one time win, every time I reboot it says: unknown file system

I seem to have found a solution on another forum that says:

umount /boot/efi
mount /dev/sdXY /boot/efi
grub-install
cp /boot/grub/x86_64-efi/core.efi /boot/efi/EFI/boot/bootx64.efi
efibootmgr -c -d /dev/sdY -p 2 -L “manjaro” -l “EFIManjarogrubx64.efi”

but I am too noobish to go ahead without a guide, all those partitions make me nervous…

If that screenshot is from your own computer, then you’ve installed Manjaro in legacy BIOS mode, not in UEFI mode.

If you’re going to use legacy BIOS mode on a GPT-partitioned drive, then you need to create a special partition of type bios, about 2 MiB in size, marked with the boot flag, and not formatted with any filesystem. This partition will then be used by GRUB to store its core.img stage, or else GRUB will overwrite the partition boundary right behind the GPT headers.

Apparently you do not have a partition of type bios on your drive, and therefore the GRUB installer throws up an error.

That all said, if you have Windows 10 on your computer, then odds are that Windows will have been installed in UEFI mode. And as such, you need to install Manjaro in UEFI mode too. You already do have an EFI system partition.

You will have to enter the UEFI firmware settings first and disable legacy BIOS “CSM” mode. Then, boot up from the Manjaro USB, open up a terminal window, use su - to become root, and then issue the following commands…

mkdir /manjaro
mount /dev/sda6 /manjaro
mount /dev/sda1 /manjaro/boot/efi
manjaro-chroot /manjaro
grub-install --recheck --no-rs-codes --modules="part_gpt part_msdos" --efi-directory="/boot/efi" --target="x86_64-efi"
update-grub
exit

After this, it should be safe to properly reboot your computer.

4 Likes

before doing this by chroot ( required )
you can check that you have boot in UEFI

inxi  -Fxza ( check for UEFI only , not UEFI[legacy] or Bios )
test -d /sys/firmware/efi && echo efi || echo bios
3 Likes

Here goes:

[estudio@Dell ~]$ test -d /sys/firmware/efi && echo efi || echo bios
bios

> System:    Kernel: 5.4.64-1-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 
>            parameters: BOOT_IMAGE=/boot/vmlinuz-5.4-x86_64 root=UUID=3a63b7ba-0224-4eab-a2df-01dec97b0ba2 
>            rw quiet splash 
>            Desktop: KDE Plasma 5.19.5 tk: Qt 5.15.0 wm: kwin_x11 dm: SDDM Distro: Manjaro Linux 
> Machine:   Type: Portable System: Dell product: Vostro 14-5459 v: 1.0.4 serial: <filter> Chassis: type: 8 
>            serial: <filter> 
>            Mobo: Dell model: 01KK0Y v: A00 serial: <filter> UEFI [Legacy]: Dell v: 1.0.4 date: 01/07/2016 
> Battery:   ID-1: BAT0 charge: 9.2 Wh condition: 15.8/44.5 Wh (35%) volts: 11.7/11.4 model: SIMPLO Dell 
>            type: Li-ion serial: <filter> status: Discharging 
>            Device-1: hidpp_battery_0 model: Logitech M585/M590 Multi-Device Mouse serial: <filter> 
>            charge: 100% (should be ignored) rechargeable: yes status: Discharging 
> CPU:       Topology: Dual Core model: Intel Core i7-6500U bits: 64 type: MT MCP arch: Skylake family: 6 
>            model-id: 4E (78) stepping: 3 microcode: D6 L2 cache: 4096 KiB 
>            flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 20810 
>            Speed: 500 MHz min/max: 400/3100 MHz Core speeds (MHz): 1: 500 2: 500 3: 501 4: 500 
>            Vulnerabilities: Type: itlb_multihit status: KVM: Split huge pages 
>            Type: l1tf mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable 
>            Type: mds mitigation: Clear CPU buffers; 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: Vulnerable: No microcode 
>            Type: tsx_async_abort status: Not affected 
> Graphics:  Device-1: Intel Skylake GT2 [HD Graphics 520] vendor: Dell driver: i915 v: kernel 
>            bus ID: 00:02.0 chip ID: 8086:1916 
>            Device-2: NVIDIA GM108M [GeForce 930M] driver: N/A alternate: nouveau bus ID: 01:00.0 
>            chip ID: 10de:1346 
>            Device-3: Sunplus Innovation Integrated_Webcam_HD type: USB driver: uvcvideo bus ID: 1-7:5 
>            chip ID: 1bcf:2b90 
>            Display: x11 server: X.Org 1.20.8 compositor: kwin_x11 driver: intel display ID: :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: eDP1 res: 1920x1080 hz: 60 dpi: 157 size: 310x170mm (12.2x6.7") diag: 354mm (13.9") 
>            OpenGL: renderer: Mesa Intel HD Graphics 520 (SKL GT2) v: 4.6 Mesa 20.1.7 direct render: Yes 
> Audio:     Device-1: Intel Sunrise Point-LP HD Audio vendor: Dell driver: snd_hda_intel v: kernel 
>            alternate: snd_soc_skl bus ID: 00:1f.3 chip ID: 8086:9d70 
>            Sound Server: ALSA v: k5.4.64-1-MANJARO 
> Network:   Device-1: Intel Wireless 3165 driver: iwlwifi v: kernel port: f040 bus ID: 02:00.0 
>            chip ID: 8086:3165 
>            IF: wlp2s0 state: down mac: <filter> 
>            Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169 v: kernel 
>            port: d000 bus ID: 03:00.0 chip ID: 10ec:8168 
>            IF: enp3s0 state: up speed: 100 Mbps duplex: full mac: <filter> 
> Drives:    Local Storage: total: 232.89 GiB used: 145.80 GiB (62.6%) 
>            ID-1: /dev/sda vendor: Crucial model: CT250MX200SSD1 size: 232.89 GiB block size: 
>            physical: 4096 B logical: 512 B speed: 6.0 Gb/s serial: <filter> rev: MU03 scheme: GPT 
>            SMART Message: Unknown smartctl error. Unable to get data. 
> Partition: ID-1: / raw size: 29.30 GiB size: 28.71 GiB (98.00%) used: 23.36 GiB (81.4%) fs: ext4 
>            block size: 4096 B dev: /dev/sda6 
> Swap:      Alert: No Swap data was found. 
> Sensors:   System Temperatures: cpu: 33.0 C mobo: 29.8 C 
>            Fan Speeds (RPM): cpu: 0 
> Info:      Processes: 187 Uptime: 12h 22m Memory: 7.66 GiB used: 1.24 GiB (16.2%) Init: systemd v: 246 
>            Compilers: gcc: 10.2.0 clang: 10.0.1 Packages: pacman: 1803 lib: 466 flatpak: 0 Shell: Bash 
>            v: 5.0.18 running in: konsole inxi: 3.1.05 

It clearly shows you boot in Legacy mode on a UEFI system, with a GPT partition table.
See @Aragorn comment again.

3 Likes

Thank you for the feedback.

Now… knowing I have never done this type of operation, i.e. the bootable USB drive.

Tell me what to avoid.
Tell me if there’s another way to fix this under W10 EasyBCD perhaps? or
Boot-Repair-Disk?

Tell me if it’s possible the above-mentioned step-by-step method can screw my rig.
Tell me if it’s reversible.
Is there a video on YT with a tutorial?

For all of this I am truly grateful.

Edit
I allowed W10 to upgrade itself
Now when I enter the boot menu all I can see it GRUB and blinking underscore

Am I doomed?

Negative. This is a misconfiguration in your GNU/Linux setup due to another misconfiguration in your UEFI firmware setup. How could you ever expect Microsoft Windows to fix that?

It won’t screw your rig.

The instructions on how to fix your problem were in post #2. :arrow_down:

1 Like

Roger!

  1. In my BIOS UEFI is already chosen
    Is that what you mean?
  2. I don’t see CSM in my BIOS, should I activate Secure Boot now?
  3. I literally enter manjaro on my usb stick, not the grub initiated with letter C?

If that were the case, then there wouldn’t have been any error message about a missing bios partition. So please check that again. It must be set to UEFI only, not “UEFI + CSM”.

CSM might be called “legacy BIOS mode”, “compatibility mode”, or something similar.

Secure Boot must be disabled.

I have no idea what you mean by that. :confused:

Your UEFI should normally allow you to boot up from a USB drive. You may need to press a key at boot time to get the UEFI boot menu ─ just as whatever you did when you installed Manjaro on that machine.

1 Like

The usb boots up, confirmed.

It is and has always been UEFI only mate

What I mean by that is that I should carry on until I see Manjaro desktop, then enter the terminal and continue, as described above.
No more GRUB configuration for now, right?

Does that mean I can follow through with the procedure now?

I seriously doubt that, because of… :arrow_down:

… and your screenshot, which confirms in several places that your system was booting in legacy BIOS mode.

Yes. Issue the commands as I gave them to you, and then cleanly reboot your system with the USB drive removed.

1 Like

Wait wait hold it please

There is another one called
Load Legacy Option Rom Enabled

Sighs

Set to Disabled and then go ahead?
Attention

Warning

Your OS may become unbootable it says.

1 Like

Yes, disable that. That’s your CSM (“compatibility support module”) ─ it is legacy BIOS emulation.

Yes, of course it says that, because an OS installed in legacy BIOS mode won’t know how to boot in UEFI mode.

1 Like

I am trembling what if I not only have no Manjaro but also have no W10
But that’s not going to happen, right?
Right.
I am using USB now, the Terminal is opened, copy / paste your commands one by one…

Mount: /manjaro/boot/efi: mount point does not exist.

Is that good?

Continue or stop?

All pre-installed versions of Microsoft Windows from Windows 8 onward require UEFI.

Besides…

  1. The UEFI setup utility is always available, so it’s always easy to revert the settings; and…

  2. The commands I’ve given you do not touch Microsoft Windows or the UEFI settings. They merely write a UEFI-aware version of the GRUB boot loader to the EFI system partition, which itself was designed to allow for that.

1 Like

Mount: /manjaro/boot/efi: mount point does not exist.

Is that good? It cannot be any good. My luck.

Continue or stop?

Okay, then you have to create it first. :arrow_down:

mkdir /manjaro/boot/efi

Then proceed with mounting it and setting up GRUB… :arrow_down:

mount /dev/sda1 /manjaro/boot/efi
manjaro-chroot /manjaro
grub-install --recheck --no-rs-codes --modules="part_gpt part_msdos" --efi-directory="/boot/efi" --target="x86_64-efi"
update-grub
exit
1 Like

Roger.

Sth is not correct.

After pasting manjaro-chroot /manjaro

sh-5.0#

Appeared

Okay, try this then… :arrow_down:

exit

This will get you out of the chroot environment.

We will now set things up manually. It’s a little more work, but at least this way it will work. :arrow_down:

I’m assuming that you still have /dev/sda6 mounted at /manjaro and /dev/sda1 at /manjaro/boot/efi. Check whether this is still the case with the following command… :arrow_down:

mount | grep manjaro

If they are mounted, skip this next step, but if they are not mounted, then you have to mount them again… :arrow_down:

mount /dev/sda6  /manjaro
mount /dev/sda1 /manjaro/boot/efi

Now we will manually set up the chroot:arrow_down:

for i in dev proc sys ; do ! [ -d "$i" ] && mkdir $i ; done
mount -t procfs proc /manjaro/proc
mount -t sysfs sys /manjaro/sys
mount --bind /dev /manjaro/dev
chroot /manjaro /usr/bin/bash

And then we proceed again with the rest… :arrow_down:

grub-install --recheck --no-rs-codes --modules="part_gpt part_msdos" --efi-directory="/boot/efi" --target="x86_64-efi"
update-grub
exit
umount -R /manjaro

Im on it!
Don’t leave me please

Mount says:
Dev/sda6 on Manjaro type ext4 rw real-time
Dev/sda1 on Manjaro/boot/efi type vfat (many words here…

Continue?

1 Like