Восстановление загрузчика GRUB

From Manjaro Linux
Jump to: navigation, search


Обзор

Как и в случае с любой другой операционной системой Linux, GRUB (GRand Unified Bootloader) умеет загружать Manjaro. Если по какой-то причине ваш GRUB не работает (из-за того, что поврежден, неверно сконфигурирован или даже удален), не нужно переустанавливать Manjaro. Вместо этого GRUB можно полностью починить и восстановить в рамках установленной системы Manjaro. Для этого необходимо использовать установочный носитель Manjaro - CD/DVD или накопитель USB.

Загрузитесь с установочного носителя Manjaro

1. Вставьте установочный носитель Manjaro и выполните загрузку с него.

2. Выберите язык (F2) и раскладку клавиатуры (F3).

Совет: Настройка языка и клавиатурной раскладки осуществляется нажатием функциональных клавиш. Поскольку у многих компьютеров каждой функциональной клавише могут быть назначены различные функции, может быть необходимо для их использования удерживать нажатой другую клавишу. Например, на ноутбуке HP G62 для использования функциональных клавиш необходимо нажать и удерживать клавишу 'fn'.


3. Загурзите Manjaro Linux. Не имеет значения, какую опцию загрузки вы выберете, так как установочный носитель будет применён только для исправления или восстановления GRUB, а не для установки системы.

4. Откройте терминал или получите доступ к командной строке live CD.

  • Из графической среды рабочего стола: откройте из меню терминал и наберите в нём sudo su.
 или
  • Из командной строки NET-Edition или при использовании опции Boot in Text mode: введите стандартное имя пользователя root и пароль "manjaro" для входа.

Сделайте chroot в вашу установленную на компьютер Manjaro

note: Прочтите здесь подробнее о chroot.

Существует 2 способа осуществить chroot в существующую установку Manjaro: используя mhwd-chroot или вручную. Выберите один из них:


Использование mhwd-chroot

1. Сначала воспользуйтесь приложением gparted из Меню > Система > GPartEd. Оно предоставляет простой визуальный обзор разделов на вашем жёстком диске (или нескольких дисках).

Или можно использовать

lsblk -f

для вывода списка всех ваших разделов.


2. mhwd-chroot - это инструмент, упрощающий chroot в установленный Linux с live-носителя Manjaro. Установите его командой

sudo pacman -S mhwd-chroot

Запустите mhwd-chroot из стартового меню или в терминале одной из следующих команд:

sudo mhwd-chroot
sudo mhwd-chroot-shell

Затем выберите корневой раздел вашей установленной на компьютер Manjaro.


Идентификация и подготовка установленных разделов вручную

1. Убедитесь, что вы используете учётную запись Root. Это можно определить по символу решётки ('#') вместо доллара ('$') в начале командной строки. Чтобы переключиться на учётную запись Root, введите команду:

sudo su


2. Просмотрите список разделов. Это необходимо для идентификации раздела, в который установлена ваша система Manjaro. Если вы используете отдельный раздел boot, его также необходимо идентифицировать. Для получения списка разделов введите команду:

lsblk -f
  или
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.


Если вы не уверены, можно воспользоваться приложением gparted, которое можно найти в Меню > Система > GPartEd. Оно предоставляет простое визуальное отображение разделов на жёстких дисках. Если существует отдельный раздел для GRUB, то он должен быть помечен как 'bootable' и иметь размер около 100 МБ.


3. Смонтируйте системный раздел Manjaro. Синтаксис команды таков:

mount /dev/[раздел для системы Manjaro] /mnt


В данном примере, поскольку системный раздел Manjaro - это /dev/sda3, он монтируется следующей командой:

mount /dev/sda3 /mnt


Если у вас отдельный раздел для загрузчика GRUB, то его тоже нужно смонтировать. Синтаксис команды таков:

mount /dev/[раздел для GRUB] /mnt/boot


В данном примере отдельный раздел --/dev/sda1-- используется для GRUB, и он будет смонтирован следующей командой:

mount /dev/sda1 /mnt/boot
note: Если вы не используете отдельный раздел 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
note: sda is the disk device where you want to install GRUB. You can check it using lsblk -f or using GParted as explained before.


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

Warning: You need to be chrooted for this procedure as mentioned in the previous step.


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

UEFI Install Guide

Arch Wiki:GRUB#UEFI_systems_2

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

Forum topic

The Arch Wiki

Post for support at the forums