Broke /boot and system failing to start

Hello.

After recent update, my resolution was borked and decided to search for help.

Tried this: [Stable Update] 2025-12-08 - 25.1 Anh-Linh Preview - #272 by Mirdarthos

I was already on my snapshot system (before update), tried to remove video-linux and use video-nvidia again, until a new update.

But, when I restarted, I was stuck on a black screen.

Tried to chroot and I verified that my kernel was not the nvidia one.

So, use a live usb, open my backup HD and click to restore. But, I messed up and set the option to put /boot on the primary partition (the main one, with 500GB of space…) and now even manjaro-chroot don’t recognize my system!!

I am right now trying to restore my entire inslation from my snapshot, but I don’t now if it will work.

Can I repair my boot files?

When I ran sudo parted -l on live usb, my man disk was like this:

Model: ATA WDC WDS500G2B0A (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B
Partition table: msdos
Disk flags:

Number  Start  End   Size   Type    File system    Flags 
1       1049kb 491GB 491GB  primary ext4           boot
2       491GB  500GB 9449MB primary linux-swap(v1) swap

Please, help me. I cant reinstall my system right now.

Thanks.

Are you booting MBR/legacy?

How are you using manjaro-chroot? I believe the automatic/(-a) option doesn’t work with the above.

Just mount it first:

sudo mount /dev/sdb1 /mnt
sudo manjaro-chroot /mnt /bin/bash

Then you can repair/rollback from there.

1 Like

The problem with manjaro-chroot is that it wasn’t designed to work with btrfs. It should work with ext4, because that’s what it was designed against.

So, I can now access chroot again: I just deleted everything on my main drive when I changed the /boot partition. Now it is working again on live USB.

But, can’t start my system, I am stuck on grub screen.

After some research, I realized that my kernel version are from open source, not nvidia. And my graphics drivers are from nvidia.

Remenber: always used nvidia, changed to open drivers for a test and tried to go back.

Right now this is the scenario:

So, I believe that this is my problem but I don’t know how to solve.

Install open drivers, go back to my system and then install nvidia? Or update the whole system in chroot and than installing nvidia?

Please, somebody help me. Almost 4 years of Manjaro and this is my first real bad problem!

EDIT: I use gpt (I believe) but BIOS/Legacy, not uefi

None are listed installed there. Use mhwd -l to see which ones are available to install.

Then attempt to install it again. But pick from the list you get, not from his post. (Also, https://wiki.manjaro.org/index.php/Configure_Graphics_Cards.)

[manjaro-gnome /]# mhwd -l
> 0000:08:00.0 (0300:10de:1c82) Display controller nVidia Corporation:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
          video-nvidia            2025.09.29               false            PCI
    video-nvidia-575xx            2025.09.29               false            PCI
    video-nvidia-570xx            2025.09.29               false            PCI
    video-nvidia-470xx            2023.03.23               false            PCI
    video-nvidia-390xx            2023.03.23               false            PCI
           video-linux            2024.05.06                true            PCI
     video-modesetting            2020.01.13                true            PCI
            video-vesa            2017.03.12                true            PCI


[manjaro-gnome /]# sudo mhwd --install pci video-nvidia
Warning: a version of config 'video-nvidia' is already installed!
Use -f/--force to force installation...

I already have my video-nvidia installed.

I believe that I deleted the /boot folder in the previous snapshot.

So, or my kernel version is not matching my driver one, or I need to rebuild my /boot files.

Need a direction right now. My relief is that mt drive have my files and chroot is working. So I believe that it can be solved.

This is my main drive on GParted (using live usb to access)

Maybe my /boot is broke, but I dont know if this is my problem…

If you boot legacy you won’t have a FAT32 UEFI partition. Doesn’t look like there’s room for a partition anyway?

Is it intact? From within the chroot, ls -lh /boot

Your kernel and initramfs to start:

One of mine for example:

-rw------- 1 root root 147M Dec 13 17:11 initramfs-6.18-x86_64.img
-rw-r--r-- 1 root root  16M Dec 13 17:11 vmlinuz-6.18-x86_64

Next step, we have to be 100% you are booting UEFI or legacy..

The contents of /boot/grub/grub.cfg may help too. (It is large, but it can clear some things up.)

.

[manjaro-gnome /]# ls -lh /boot
total 226M
-rw-r--r-- 1 root root 180K Sep 17 18:42 amd-ucode.img
drwxr-xr-x 6 root root 4.0K Dec 13 22:21 grub
-rw------- 1 root root  31M Sep 30 11:02 initramfs-5.15-x86_64-fallback.img
-rw------- 1 root root 8.8M Sep 30 11:02 initramfs-5.15-x86_64.img
-rw------- 1 root root  39M Sep 30 11:03 initramfs-6.1-x86_64-fallback.img
-rw------- 1 root root 9.2M Sep 30 11:02 initramfs-6.1-x86_64.img
-rw------- 1 root root  38M Sep 30 11:02 initramfs-6.12-x86_64-fallback.img
-rw------- 1 root root 9.1M Sep 30 11:02 initramfs-6.12-x86_64.img
-rw------- 1 root root  36M Sep 30 11:03 initramfs-6.6-x86_64-fallback.img
-rw------- 1 root root 9.1M Sep 30 11:03 initramfs-6.6-x86_64.img
-rw-r--r-- 1 root root   23 Sep 12 21:55 linux515-x86_64.kver
-rw-r--r-- 1 root root   22 Sep 19 13:08 linux61-x86_64.kver
-rw-r--r-- 1 root root   22 Sep 19 13:11 linux612-x86_64.kver
-rw-r--r-- 1 root root   22 Sep 19 13:08 linux66-x86_64.kver
drwxr-xr-x 2 root root 4.0K Feb  6  2025 memtest86+
-rw-r--r-- 1 root root  11M Sep 30 11:02 vmlinuz-5.15-x86_64
-rw-r--r-- 1 root root  12M Sep 30 11:02 vmlinuz-6.1-x86_64
-rw-r--r-- 1 root root  14M Sep 30 11:02 vmlinuz-6.12-x86_64
-rw-r--r-- 1 root root  13M Sep 30 11:02 vmlinuz-6.6-x86_64

and nano /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="${saved_entry}"
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
}

set menu_color_normal=light-gray/black
set menu_color_highlight=green/black

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd1,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-bareme>
else
  search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=hidden
  set timeout=5
# Fallback hidden-timeout code in case the timeout_style feature is
# unavailable.
elif sleep --interruptible 5 ; then
  set timeout=0
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Manjaro Linux' --class manjaro --class gnu-linux --class gnu --class os $menuentry_id_opt>
        savedefault
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hin>
        else
          search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
        fi
        linux   /boot/vmlinuz-6.12-x86_64 root=UUID=d6ecda09-ff35-416a-9f44-94f281802154 rw  nvidia_>
        initrd  /boot/amd-ucode.img /boot/initramfs-6.12-x86_64.img
}
submenu 'Advanced options for Manjaro Linux' $menuentry_id_option 'gnulinux-advanced-d6ecda09-ff35-4>
        menuentry 'Manjaro Linux (Kernel: 6.12.48-1-MANJARO x64)' --class manjaro --class gnu-linux >
        savedefault
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos
                insmod ext2
                set root='hd1,msdos1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdo>
                else
                  search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
                fi
                linux   /boot/vmlinuz-6.12-x86_64 root=UUID=d6ecda09-ff35-416a-9f44-94f281802154 rw >
                initrd  /boot/amd-ucode.img /boot/initramfs-6.12-x86_64.img
        }
        menuentry 'Manjaro Linux (Kernel: 6.12.48-1-MANJARO x64 - fallback initramfs)' --class manja>
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos
                insmod ext2
                set root='hd1,msdos1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdo>
                else
                  search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
                fi
                linux   /boot/vmlinuz-6.12-x86_64 root=UUID=d6ecda09-ff35-416a-9f44-94f281802154 rw >
                initrd  /boot/initramfs-6.12-x86_64-fallback.img
        }
        menuentry 'Manjaro Linux (Kernel: 6.6.107-1-MANJARO x64)' --class manjaro --class gnu-linux >
        savedefault
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos
                insmod ext2
                set root='hd1,msdos1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdo>
                else
                  search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
                fi
                linux   /boot/vmlinuz-6.6-x86_64 root=UUID=d6ecda09-ff35-416a-9f44-94f281802154 rw  >
                initrd  /boot/amd-ucode.img /boot/initramfs-6.6-x86_64.img
        }
        menuentry 'Manjaro Linux (Kernel: 6.6.107-1-MANJARO x64 - fallback initramfs)' --class manja>
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos
                insmod ext2
                set root='hd1,msdos1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdo>
                else
                  search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
                fi
                linux   /boot/vmlinuz-6.6-x86_64 root=UUID=d6ecda09-ff35-416a-9f44-94f281802154 rw  >
                initrd  /boot/amd-ucode.img /boot/initramfs-6.6-x86_64.img
        }
        menuentry 'Manjaro Linux (Kernel: 6.6.107-1-MANJARO x64 - fallback initramfs)' --class manja>
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos
                insmod ext2
                set root='hd1,msdos1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdo>
                else
                  search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
                fi
                linux   /boot/vmlinuz-6.6-x86_64 root=UUID=d6ecda09-ff35-416a-9f44-94f281802154 rw  >
                initrd  /boot/initramfs-6.6-x86_64-fallback.img
        }
        menuentry 'Manjaro Linux (Kernel: 6.1.153-1-MANJARO x64)' --class manjaro --class gnu-linux >
        savedefault
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos
                insmod ext2
                set root='hd1,msdos1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdo>
                else
                  search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
                fi
                linux   /boot/vmlinuz-6.1-x86_64 root=UUID=d6ecda09-ff35-416a-9f44-94f281802154 rw  >
                initrd  /boot/amd-ucode.img /boot/initramfs-6.1-x86_64.img
        }
        menuentry 'Manjaro Linux (Kernel: 6.1.153-1-MANJARO x64 - fallback initramfs)' --class manja>
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos
                insmod ext2
                set root='hd1,msdos1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdo>
                else
                  search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
                fi
                linux   /boot/vmlinuz-6.1-x86_64 root=UUID=d6ecda09-ff35-416a-9f44-94f281802154 rw  >
                initrd  /boot/initramfs-6.1-x86_64-fallback.img
        }
        menuentry 'Manjaro Linux (Kernel: 5.15.193-1-MANJARO x64)' --class manjaro --class gnu-linux>
        savedefault
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos
                insmod ext2
                set root='hd1,msdos1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdo>
                else
                  search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
                fi
                linux   /boot/vmlinuz-5.15-x86_64 root=UUID=d6ecda09-ff35-416a-9f44-94f281802154 rw >
                initrd  /boot/amd-ucode.img /boot/initramfs-5.15-x86_64.img
        }
        menuentry 'Manjaro Linux (Kernel: 5.15.193-1-MANJARO x64 - fallback initramfs)' --class manj>
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos
                insmod ext2
                set root='hd1,msdos1'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdo>
                else
                  search --no-floppy --fs-uuid --set=root d6ecda09-ff35-416a-9f44-94f281802154
                fi
                linux   /boot/vmlinuz-5.15-x86_64 root=UUID=d6ecda09-ff35-416a-9f44-94f281802154 rw >
                initrd  /boot/initramfs-5.15-x86_64-fallback.img
        }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/15_ostree ###
### END /etc/grub.d/15_ostree ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/25_bli ###
if [ "$grub_platform" = "efi" ]; then
  insmod bli
fi
### END /etc/grub.d/25_bli ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
if [ "$grub_platform" = "efi" ]; then
        menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
                fwsetup
                }
fi
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/35_fwupd ###
### END /etc/grub.d/35_fwupd ###

### 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 ###

### BEGIN /etc/grub.d/41_snapshots-btrfs ###
### END /etc/grub.d/41_snapshots-btrfs ###

### BEGIN /etc/grub.d/60_memtest86+ ###
if [ "${grub_platform}" == "pc" ]; then
    menuentry "Memory Tester (memtest86+)" --class memtest86 --class gnu --class tool {
        search --fs-uuid --no-floppy --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint->
        linux16 /boot/memtest86+/memtest.bin 
    }
fi
### END /etc/grub.d/60_memtest86+ ###


I am (almost) pretty sure that I use Legacy/BIOS, it was a mistake in the installation, since that I don`t make any changes.

I’m guessing legacy BIOS boot with a GPT partition layout. In that case, a special unformatted partition is needed of type bios_grub, with the boot flag set. grub will then use this partition to store its core.img. Without such a partition, the core.img would overwrite the partition boundary of the first partition.

In the screenshot, this bios_grub partition is missing, and thus grub can’t find its core.img stage anymore.

The solution is to boot up from the live USB, recreate the bios_grub partition and mark it with the boot flag, and to then chroot into the installed system and reinstall grub from inside the chroot.

Great, so it can be fixed!

How can I do that?

Recreate the lost partition in the same space as where it was earlier — that 2.49 MiB region at the end of the drive — as an unformatted partition of type bios_grub, and mark it with the boot flag. Save the changes and exit the partitioning tool.

Then, assuming you are still in the live USB session, open up a terminal window and issue the following commands… :backhand_index_pointing_down:

sudo -i
mount -t ext4 /dev/sdb1 /mnt
manjaro-chroot -a
grub-install --recheck --no-rs-codes --target=i386-pc /dev/sdb
update-grub

That should normally do it.

If you are going these lengths, why not just resize and make the 300MB FAT32 /boot/efi partition. It’s the most modern compatible way to do it.

Now is the perfect chance to use your (newer) GPT partition layout with booting legacy. It is a weird combination, having GPT boot MBR.

If the machine cannot boot in UEFI mode, then there is no reason for doing that.

Furthermore, an EFI partition should never be mounted at /boot. The proper mountpoint for an EFI partition in Manjaro is /boot/efi — Arch mounts it at /efi.

(Sorry, getting distracted. Shouldn’t be posting on my phone. I had that part already fixed before you posted.)

I want to reply, but it’s hard.

These hybrid setups cause nothing but headaches!

1 Like

How can I chose this type bios-grub in GParted? I didn’t find the option.

I tried without selecting the type but it didn’t even touched the 2.49MiB region.

But there is a way to change to UEFI right now, since I am already rebuilding my /boot? My motherboard is a modern one, with support with UEFI.

You will want a new 300 MB FAT32 partition. The installer puts it in the first partition, but there’s nothing wrong with putting it at the end. And there are less steps, and no need to move data around. (MBR has a 2TB limit from where it can boot, but you are already on GPT.)

We can easily create the swap partition from scratch, so we can just delete it.

1. Gparted

a) Delete /dev/sdb3 (legacy boot partition)

b) Delete /dev/sdb2 (swap partition)

You should just have a single /dev/sdb1 (ext4/boot), and empty space at this point.

c) (Optional) Resize /dev/sdb1

Since the installer only uses 300MB for /boot/efi (with plently of room to spare), I would just leave this untouched. Your 8.80GB swap won’t mind being 0.3GB smaller. But you if want a bigger swap, or smaller root, you can shrink this now.

d) Create a second partition

Name Mount flags size
boot /boot/efi boot Fill in the “Free space following (MiB)” with: 300

e) Create a third partition

Name Mount flags size
swap none swap Should default to taking the rest of the space

Swap should be /dev/sdb3, and /boot/efi /dev/sdb2

2. Create file system

a) /boot/efi

sudo mkfs.fat -F 32 /dev/sdb2

3. Install GRUB

Like before we have to specify the boot architecture here.

Mount /boot/efi before you manjaro-chroot

sudo mount /dev/sdb2 /mnt/boot/efi
sudo manjaro-chroot /mnt /bin/bash
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi

(Once installed and booted normally, the update-grub script remembers that.)

4. Set up mount

Still in the chroot, grab the UUID of the new boot partition.

Grab the UUID with:

lsblk -f /dev/sdb2

And add the line (and proper UUID):

/etc/fstab


UUID=XXXX-XXXX                             /boot/efi           vfat      umask=0077 0 2

4. Swap

Create swap:

sudo mkswap /dev/sdb3

You can change /etc/fstab to the new swap UUID, or change the UUID of your new swap. (I don’t have either of the UUIDs.)

Here’s changing the swap UUID:

grep swap /etc/fstab
# grab the UUID and put it in:
sudo swaplabel -U xxxx-xx-xxxx /dev/sdb3

5. Reboot

  • Exit chroot
  • Unmount file systems
  • Reboot
1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.