Difference between revisions of "GRUB/Restore the GRUB Bootloader"
Views
Actions
Namespaces
Variants
Tools
m (added languages and translate tags) |
m (hit shift) |
||
(11 intermediate revisions by 5 users not shown) | |||
Line 2: | Line 2: | ||
__TOC__ | __TOC__ | ||
<translate> | <translate> | ||
==Overview== | ==Overview== <!--T:1--> | ||
In order to load the operating system, 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. Installations created using Manjaro ISO defaults to GRUB. | In order to load the operating system, 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. Installations created using Manjaro ISO defaults to GRUB. | ||
<!--T:2--> | |||
For various reasons - it happens the bootloader get's corrupted, erased or misconfigured resulting to a black screen with a failure message during boot, like '''No boot loaders found in /dev/...'''. To restore system operation without re-installing your OS or losing your data you will need to use your Manjaro installation media, such as, a CD/DVD or USB Flashdrive. | For various reasons - it happens the bootloader get's corrupted, erased or misconfigured resulting to a black screen with a failure message during boot, like '''No boot loaders found in /dev/...'''. To restore system operation without re-installing your OS or losing your data you will need to use your Manjaro installation media, such as, a CD/DVD or USB Flashdrive. | ||
{{BoxSecondary|Archlinux Boot Process|More information about the boot process on Archlinux based distributions is available at [https://wiki.archlinux.org/index.php/Arch_boot_process Archwiki]}} | {{BoxSecondary|Archlinux Boot Process|More information about the boot process on Archlinux based distributions is available at [https://wiki.archlinux.org/index.php/Arch_boot_process Archwiki]}} | ||
==Preparation== | ==Preparation== <!--T:3--> | ||
Identify the type of system you are attempted to resque as the commands involved are slightly different. | Identify the type of system you are attempted to resque as the commands involved are slightly different. | ||
* BIOS/MBR/GPT system | * BIOS/MBR/GPT system | ||
* EFI/GPT system | * EFI/GPT system | ||
==Load Manjaro Installation Media== | ==Load Manjaro Installation Media== <!--T:4--> | ||
{{BoxSecondary|System Boot Override|To override system boot order the vendor has a dedicated key. Most laptop keyboard has multiple use for the function keys and the primary function may be reversed. In such case a <kbd>Fn</kbd> key must be used with the function key. If you don't know consult your system documentation. Manjaro ISO default usernames and passwords | {{BoxSecondary|System Boot Override|To override system boot order the vendor has a dedicated key. Most laptop keyboard has multiple use for the function keys and the primary function may be reversed. In such case a <kbd>Fn</kbd> key must be used with the function key. If you don't know consult your system documentation. Manjaro ISO default usernames and passwords | ||
<table> | <table> | ||
Line 22: | Line 23: | ||
}} | }} | ||
==Identify partitions== | ==Identify partitions== <!--T:5--> | ||
To identify your partitions and their designated use you need to run a partition manager. Depending on environment there is various tools. GTK based ISO offers GpartEd, QT based ISO offers KParted and common to all is the CLI tools. | To identify your partitions and their designated use you need to run a partition manager. Depending on environment there is various tools. GTK based ISO offers GpartEd, QT based ISO offers KParted and common to all is the CLI tools. | ||
{{UserCmd|command=lsblk -o PATH,PTTYPE,PARTTYPE,FSTYPE,PARTTYPENAME}} | {{UserCmd|command=lsblk -o PATH,PTTYPE,PARTTYPE,FSTYPE,PARTTYPENAME}} | ||
Line 29: | Line 30: | ||
The clues to look for is ''mbr'' vs. ''gpt'' and the presence of a small partition - usually the first - formatted with the ''vfat'' filesystem followed by a larger partition formatted as ''ext4''. | The clues to look for is ''mbr'' vs. ''gpt'' and the presence of a small partition - usually the first - formatted with the ''vfat'' filesystem followed by a larger partition formatted as ''ext4''. | ||
<!--T:6--> | |||
{{Important|This document and the content should '''never''' be used as a copy/paste resource. The remainder of this document will use pseudo names and partition numbering. Devices will be referred as '''/dev/sdy''' and partitions referred as '''/dev/sdyA''' and you will have to subtitute those with the real values from your system.}} | {{Important|This document and the content should '''never''' be used as a copy/paste resource. The remainder of this document will use pseudo names and partition numbering. Devices will be referred as '''/dev/sdy''' and partitions referred as '''/dev/sdyA''' and you will have to subtitute those with the real values from your system.}} | ||
==Use root context== | ==Use root context== <!--T:7--> | ||
When you have loaded the live ISO - depending on environment - open a terminal and switch to ''root'' context. Use above mentioned root:password combination. | When you have loaded the live ISO - depending on environment - open a terminal and switch to ''root'' context. Use above mentioned root:password combination. | ||
{{UserCmd|command=su}} | {{UserCmd|command=su}} | ||
==Chroot environment== | ==Chroot environment== <!--T:8--> | ||
Chroot is a method to restrict various tasks to a restricted area e.g. package installation and other system maintenance tasks. Follow the [https://wiki.archlinux.org/index.php/Change_Root link] to read more about chroot on the Arch wiki. | Chroot is a method to restrict various tasks to a restricted area e.g. package installation and other system maintenance tasks. Follow the [https://wiki.archlinux.org/index.php/Change_Root link] to read more about chroot on the Arch wiki. | ||
===Identify system partitions=== | ===Identify system partitions=== | ||
Line 51: | Line 53: | ||
{{Important|If your system is a BIOS/MBR system there is no efi partition. If your system is a BIOS/GPT system you will find an unformatted partion size 1-32MB of the bios boot partition type.}} | {{Important|If your system is a BIOS/MBR system there is no efi partition. If your system is a BIOS/GPT system you will find an unformatted partion size 1-32MB of the bios boot partition type.}} | ||
===Manual chroot=== | ===Use manjaro-chroot=== <!--T:10--> | ||
Manjaro deploys a script called {{ic|manjaro-chroot}} takes an optional argument which will search the visible devices - scan the partitions for signs of an operating system. If more than one Linux operating system is found you will get a choice of which system to chroot otherwise the file ''/etc/fstab'' from the system is used to mount the partitions and chroot into this system.This script is only available in live iso by default but you can get it in an installed system by installing {{Ic|manjaro-tools-base}} package. | |||
{{RootCmd|command=pamac install manjaro-tools-base}} | |||
{{RootCmd|command=manjaro-chroot -a}} | |||
===Manual chroot=== <!--T:9--> | |||
(Unnecessary if you have used {{ic|manjaro-chroot}}) | |||
Mount the partitions using the designated temporary mountpoint and '''always''' start with ''root'' | Mount the partitions using the designated temporary mountpoint and '''always''' start with ''root'' | ||
<!--T:17--> | |||
{{RootCmd|command=mount /dev/sdyC /mnt}} | {{RootCmd|command=mount /dev/sdyC /mnt}} | ||
{{Important|With a [[Btrfs|BTRFS filesystem]], you should note that the subvolumes must be mounted. That would be in such a case:{{RootCmd|command=mount -o subvol=@ /dev/sdyC /mnt}}}} | |||
Then - if applicable - mount ''boot'' | Then - if applicable - mount ''boot'' | ||
{{RootCmd|command=mount /dev/sdyB /mnt/boot}} | {{RootCmd|command=mount /dev/sdyB /mnt/boot}} | ||
Line 61: | Line 72: | ||
{{RootCmd|command=manjaro-chroot /mnt /bin/bash}} | {{RootCmd|command=manjaro-chroot /mnt /bin/bash}} | ||
==Reinstall GRUB== | ==Reinstall GRUB== <!--T:11--> | ||
One possible cause why you are reading this document - is an unfinished update - which in turn can be caused by several situations - situation we will not dive into. To fix what ever caused this you should run a full system update including grub to ensure everything is in place. | One possible cause why you are reading this document - is an unfinished update - which in turn can be caused by several situations - situation we will not dive into. To fix what ever caused this you should run a full system update including grub to ensure everything is in place. | ||
{{RootCmd|command=pacman -Syu grub}} | {{RootCmd|command=pacman -Syu grub}} | ||
Line 72: | Line 80: | ||
On a BIOS/GPT system there is no MBR and therefore no place to store the loader. The GPT partition specification allows for an unformatted partition of the BIOS boot partition type (0xEF02). The size of this partition can be as small as 1 mebibyte. The Calamares installer uses a fixed size of 32 mebibyte. On a BIOS/MBR system a part of the bootloader is written to the Master Boot Record for the primary disk. | On a BIOS/GPT system there is no MBR and therefore no place to store the loader. The GPT partition specification allows for an unformatted partition of the BIOS boot partition type (0xEF02). The size of this partition can be as small as 1 mebibyte. The Calamares installer uses a fixed size of 32 mebibyte. On a BIOS/MBR system a part of the bootloader is written to the Master Boot Record for the primary disk. | ||
<!--T:12--> | |||
The device is the '''disk''' ('''not a partition''') | The device is the '''disk''' ('''not a partition''') | ||
{{RootCmd|command=grub-install --force --target=i386-pc --recheck --boot-directory=/boot /dev/sdy}} | {{RootCmd|command=grub-install --force --target=i386-pc --recheck --boot-directory=/boot /dev/sdy}} | ||
Line 77: | Line 86: | ||
{{RootCmd|command=grub-mkconfig -o /boot/grub/grub.cfg}} | {{RootCmd|command=grub-mkconfig -o /boot/grub/grub.cfg}} | ||
===EFI System=== | ===EFI System=== <!--T:13--> | ||
{{Important|You need to be in chroot for this procedure.}} | {{Important|You need to be in chroot for this procedure.}} | ||
Reinstall grub | Reinstall grub | ||
Line 84: | Line 93: | ||
{{RootCmd|command=grub-mkconfig -o /boot/grub/grub.cfg}} | {{RootCmd|command=grub-mkconfig -o /boot/grub/grub.cfg}} | ||
<!--T:14--> | |||
{{BoxWarning|EFI grub install messages|EFI variables are not supported on this system.}} | {{BoxWarning|EFI grub install messages|EFI variables are not supported on this system.}} | ||
Verify the existance of an EFI system partition | Verify the existance of an EFI system partition | ||
Line 101: | Line 111: | ||
If successfull re-run above installation commands | If successfull re-run above installation commands | ||
==Troubleshooting== | ==Updating grub== | ||
=== | Sometimes there is an update for the GRUB package itself. So far, the grub package is updated, but the new GRUB Version is not automatically installed in the boot area. | ||
If | |||
You can do this manually following the instructions above. Or you can install the Grub Maintainer Script ''install-grub''. It should work flawless for the majority of people, but SecureBoot, ZFS and fancy encryptions are not supported yet. | |||
{{RootCmd|command=pacman -Syu install-grub}} | |||
Then once run | |||
{{RootCmd|command=install-grub}} | |||
The package includes a hook that will reinstall the bootloader when needed from now on at every update of grub. | |||
===Additional Information=== | |||
Some things around grub can be confusing. | |||
====package version of grub==== | |||
Its the version of the grub-package present in your filesystem. But this version changing does ''not'' update the installed grub-bootloader. | |||
====grub-bootloader version==== | |||
This can only been shown while you are in the Grub menu (that won’t show up while booting by default, you need to hit [shift] during boot). Hit the key [E] and your will see the Grub version on top. | |||
====update-grub==== | |||
Does ''not'' update the installed bootloader. The ‘update’ is more about updating configuration. Think of this more as ‘applying settings’. | |||
(~ equal to grub-mkconfig -o /boot/grub/grub.cfg) | |||
===install-grub=== | |||
is the script (background maintainer) that does update the installed bootloader when you download a Stable Release/Unstable Release Version, which included a new Grub Version. | |||
==Troubleshooting== <!--T:15--> | |||
=== Manjaro is not recognized === | |||
If Manjaro wasn't recognized after an update-grub then probably your Manjaro installation is missing the package lsb-release. | |||
==See also== | ==See also== <!--T:16--> | ||
* [http://wiki.manjaro.org/index.php?title=UEFI_-_Install_Guide UEFI Install Guide] | * [http://wiki.manjaro.org/index.php?title=UEFI_-_Install_Guide UEFI Install Guide] | ||
* [https://wiki.archlinux.org/index.php/GRUB GRUB on Arch wiki] | * [https://wiki.archlinux.org/index.php/GRUB GRUB on Arch wiki] | ||
</translate> | </translate> | ||
[[Category:Contents Page{{#translation:}}]] | [[Category:Contents Page{{#translation:}}]] |
Latest revision as of 07:07, 11 January 2024
Overview
In order to load the operating system, 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. Installations created using Manjaro ISO defaults to GRUB.
For various reasons - it happens the bootloader get's corrupted, erased or misconfigured resulting to a black screen with a failure message during boot, like No boot loaders found in /dev/.... To restore system operation without re-installing your OS or losing your data you will need to use your Manjaro installation media, such as, a CD/DVD or USB Flashdrive.
Preparation
Identify the type of system you are attempted to resque as the commands involved are slightly different.
- BIOS/MBR/GPT system
- EFI/GPT system
Load Manjaro Installation Media
Identify partitions
To identify your partitions and their designated use you need to run a partition manager. Depending on environment there is various tools. GTK based ISO offers GpartEd, QT based ISO offers KParted and common to all is the CLI tools.
More comprehensive information can be found using fdisk
(requires superuser) and you can limit the probed device e.g. /dev/sda or /dev/nvme0n1
The clues to look for is mbr vs. gpt and the presence of a small partition - usually the first - formatted with the vfat filesystem followed by a larger partition formatted as ext4.
Use root context
When you have loaded the live ISO - depending on environment - open a terminal and switch to root context. Use above mentioned root:password combination.
Chroot environment
Chroot is a method to restrict various tasks to a restricted area e.g. package installation and other system maintenance tasks. Follow the link to read more about chroot on the Arch wiki.
Identify system partitions
From the above we assume you have identified the relevant partitions on your system and this document will refer the partitions as follows. Partitions not needed for this kind of maintenance has intentionally been left out (e.g. home, swap).
Partition | Usage | Comment |
---|---|---|
/dev/sdyA |
EFI system | Required for EFI system and mounted on /boot/efi |
/dev/sdyB |
boot | Optional but mounted on /boot The primary use is when GRUB cannot write to / (eg. f2fs) |
/dev/sdyC |
root | Required and for the root filesystem and mounted on / - usually formatted using ext4 |
Use manjaro-chroot
Manjaro deploys a script called manjaro-chroot
takes an optional argument which will search the visible devices - scan the partitions for signs of an operating system. If more than one Linux operating system is found you will get a choice of which system to chroot otherwise the file /etc/fstab from the system is used to mount the partitions and chroot into this system.This script is only available in live iso by default but you can get it in an installed system by installing manjaro-tools-base
package.
Manual chroot
(Unnecessary if you have used manjaro-chroot
)
Mount the partitions using the designated temporary mountpoint and always start with root
Then - if applicable - mount boot
Then - if applicable - mount efi
Create the chroot environment and use bash as shell
Reinstall GRUB
One possible cause why you are reading this document - is an unfinished update - which in turn can be caused by several situations - situation we will not dive into. To fix what ever caused this you should run a full system update including grub to ensure everything is in place.
When the transaction as completed continue below using the section matching your system
BIOS System
On a BIOS/GPT system there is no MBR and therefore no place to store the loader. The GPT partition specification allows for an unformatted partition of the BIOS boot partition type (0xEF02). The size of this partition can be as small as 1 mebibyte. The Calamares installer uses a fixed size of 32 mebibyte. On a BIOS/MBR system a part of the bootloader is written to the Master Boot Record for the primary disk.
The device is the disk (not a partition)
Make sure the grub configuration is up-to-date
EFI System
Reinstall grub
Update the grub configuration
Verify the existance of an EFI system partition
Verify the efi filesystem is loaded
Exit chroot
Try loading the efi filesystem
Re-enter chroot
Then mount the efi filesystem
Verify the efi filesystem is loaded
If successfull re-run above installation commands
Updating grub
Sometimes there is an update for the GRUB package itself. So far, the grub package is updated, but the new GRUB Version is not automatically installed in the boot area.
You can do this manually following the instructions above. Or you can install the Grub Maintainer Script install-grub. It should work flawless for the majority of people, but SecureBoot, ZFS and fancy encryptions are not supported yet.
Then once run
The package includes a hook that will reinstall the bootloader when needed from now on at every update of grub.
Additional Information
Some things around grub can be confusing.
package version of grub
Its the version of the grub-package present in your filesystem. But this version changing does not update the installed grub-bootloader.
grub-bootloader version
This can only been shown while you are in the Grub menu (that won’t show up while booting by default, you need to hit [shift] during boot). Hit the key [E] and your will see the Grub version on top.
update-grub
Does not update the installed bootloader. The ‘update’ is more about updating configuration. Think of this more as ‘applying settings’. (~ equal to grub-mkconfig -o /boot/grub/grub.cfg)
install-grub
is the script (background maintainer) that does update the installed bootloader when you download a Stable Release/Unstable Release Version, which included a new Grub Version.
Troubleshooting
Manjaro is not recognized
If Manjaro wasn't recognized after an update-grub then probably your Manjaro installation is missing the package lsb-release.