GRUB/Restore the GRUB Bootloader
Views
Actions
Namespaces
Variants
Tools
Overview
In order to boot Manjaro, a Linux-capable boot loader such as GRUB, rEFInd or Syslinux needs to be installed to the Master Boot Record (MBR) or the GUID Partition Table (GPT) of the media containing the Operating System. The boot loader used on official Manjaro installations and generaly suggested is GRUB. Sometimes the MBR or GPT gets corrupted, erased or misconfigured for various reasons resulting to a black screen with a failure message during boot, like No boot loaders found in /dev/.... Fortunatelly, there is a way to restore GRUB without re-installing your OS or losing your data. For this, you will need to use your Manjaro installation media, such as, a CD/DVD or USB Flashdrive.
Boot the Manjaro Installation Media
1. Insert and boot your Manjaro installation media.
2. Select your preferred language (F2) and keyboard layout (F3).
3. Boot Manjaro Linux. It does not matter which boot option you choose, as the installation media is being used solely to repair/reinstate the GRUB, and not to install a fresh system.
4. Open the terminal or access the command line of the live CD.
- From the desktop environment: open a terminal from your desktop menu, and enter sudo su in the terminal.
or
- From the command line of the Manjaro Architect Edition or having used option 5. System Rescue : enter the default login username root and then the password "manjaro" to log in.
Chroot into your existing Manjaro Installation
There are 2 different ways to chroot into your exising Manjaro installation: Using mhwd-chroot or doing it manually. Please choose one:
Use manjaro-chroot
1. Start by identifying the partition where your Manjaro installation controlling the active Grub menu resides and needs repairing. If you are in Graphical mode you can use an application called GPartEd, which should be in Menu > System > GPartEd. This will provide a simple visual illustration of the partitions on your hard drive(s).
To do the same thing from terminal or TTY you can use this command
lsblk -f
2. manjaro-chroot is a tool to easily setup a functional chroot into an installed Linux installation from a live boot of a Manjaro Installation Media.
To setup the chroot use the command
sudo manjaro-chroot -a
You will be presented with a terminal. Wait until it shows a list with the available system partitions on your computer and choose the one you want to repair.
Manually Identify and Prepare the Installed Partition(s)
1. Ensure that you are using the Root account, which is identified by a hash ('#') at the beginning of the command line, rather than a dollar ('$'). To switch to Root, enter the command:
sudo su
2. List your partitions. This is necessary in order to identify the partition your Manjaro system is installed on. If you have used a separate boot partition, it will be necessary to identify this as well. For a list of your paritions, enter the command:
lsblk -f
or
sudo blkid -o list -c /dev/nul
In this particular instance, having used the assisted preparation method to install Manjaro earlier, the partitions for the author's Manjaro system are as follows:
- /dev/sda1: Boot partition
- /dev/sda2: Swap partition
- /dev/sda3: Manjaro system
- /dev/sda4: Space for personal files.
If you are still unsure, then you can also use an application called gparted, which should be in Menu > System > GPartEd. This will provide a simple visual illustration of the partitions on your hard drive(s). If a separate partition for the GRUB exists, it will be marked as 'bootable', and should only be about 100MB in size.
3. Mount your Manjaro system partition. The syntax to mount the Manjaro system partition is:
mount /dev/[partition used for Manjaro system] /mnt
In this instance, as the Manjaro system partition is /dev/sda3, this will be mounted using the following command:
mount /dev/sda3 /mnt
IF you have used a separate partition for your GRUB bootloader, then this must also be mounted. The syntax to mount a separate partition used to boot is:
mount /dev/[partition used for GRUB] /mnt/boot
In this instance, a separate partition --/dev/sda1-- has been used for the GRUB, and will be mounted using the following command:
mount /dev/sda1 /mnt/boot
4. Change to the root directory of your mounted partitions.
cd /mnt
This is undertaken so that you are working from --and with-- your installed system, rather than the installation media. To do so, it will be necessary to enter a series of commands in the following order:
mount -t proc proc /mnt/proc mount -t sysfs sys /mnt/sys mount -o bind /dev /mnt/dev mount -t devpts pts /mnt/dev/pts/ chroot /mnt
Restore GRUB
First, install the software applications mtools and os-prober. mtools is a collection of tools to access MS-DOS disks from GNU/Linux and Unix without mounting them. os-prober is a utility that detects if there are any other operating systems present. Install them both with the following command:
sudo pacman -S mtools os-prober
For BIOS Systems
1. Install a new GRUB bootloader with the following command:
grub-install /dev/sda
2. Recheck to ensure the that installation has completed without any errors:
grub-install --recheck /dev/sda
3. Finally, configure the freshly installed GRUB bootloader:
update-grub
All done! Now close the terminal and reboot your system to use your freshly re-installed GRUB.
For UEFI Systems
1.) First of all check the partition for the ESP (EFI System Partition). An ESP is a fat32 partition and contains .efi files for booting.
It can be checked using Gparted or from the terminal using fdisk -l
(Note:
If you do not have a EFI partition, you will need to create it.
Use Gparted for that.
Type- fat32
Size- 512 mb to 1 gb)
2.) Create the /boot/efi directory
sudo mkdir /boot/efi
3.) Mount the EFI partition as /boot/efi
sudo mount /dev/sdXY /boot/efi
X = Alphabet of the drive = a,b,c ... Y = Partition number of the EFI partition = 1,2,3,4...
Example - /dev/sda4
4.) Re-install Grub.
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck
5.) Update Grub configuration file.
sudo update-grub
Note
If you get something like
EFI variables are not supported on this system.
Then install the efibootmgr
, dosfstools
and grub
packages and try steps 4 and 5 again.
If it still doesn't work, then try exiting the chroot environnment by typing exit, then loading the efivarfs module:
sudo modprobe efivarfs
and in the chroot
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
And if you get something like
grub-install: error: failed to get canonical path of `union'.
means that probably you forgot to chroot.
See also
Alternative method
Mount the ext4 Manjaro root partition at /install
Mount the vfat Manjaro efi partition at /install/boot/efi
And then install Grub as:
grub-install --target=x86_64-efi --efi-directory=/install/boot/efi --bootloader-id=manjaro --boot-directory=/install/boot --recheck --debug
After the above you could chroot and try the update-grub command as earlier.
Troubleshooting
Arch Linux is not recognized
If Arch Linux wasn't recognized after an update-grub then probably your Arch installation is missing the package lsb-release.
More
Post for support at the forums