GRUB/Восстановление загрузчика GRUB
Для загрузки операционной системы необходимо установить загрузчик, поддерживающий Linux, такой как GRUB, rEFInd или Syslinux, в главную загрузочную запись (MBR) или таблицу разделов GUID (GPT) носителя, содержащего операционную систему. Установки, созданные с помощью Manjaro ISO, по умолчанию используют GRUB.
По разным причинам загрузчик может быть поврежден, стерт или неправильно настроен, что приводит к появлению черного экрана с сообщением об ошибке при загрузке, например, No boot loaders found in /dev/. . Для восстановления работы системы без переустановки ОС и потери данных вам потребуется использовать установочный носитель Manjaro, например, CD/DVD или USB Flashdrive.
Процесс загрузки Archlinux Большая информация о процессе загрузки в дистрибутивах на базе Archlinux доступна на Archwiki
Определите тип системы, которую вы пытаетесь восстановить, так как команды немного отличаются.
Переопределение загрузки системы Для переопределения порядка загрузки системы у каждого есть специальная клавиша. Большинство клавиатур ноутбуков имеют множественное назначение функциональных клавиш, и основная функция может быть изменена на противоположную. В таком случае вместе с функциональной клавишей необходимо использовать клавишу FN . Если вы не знаете — обратитесь к документации вашей системы. Имена пользователей и пароли Manjaro ISO по умолчанию
Имя по-умолчанию | Пароль по-умолчанию |
---|---|
manjaro | manjaro |
root | manjaro |
Чтобы определить разделы и их назначение необходимо запустить менеджер разделов. В зависимости от окружения существуют различные инструменты. ISO на базе GTK предлагает GpartEd, ISO на базе QT предлагает KParted, и общим для всех является CLI.
Более полную информацию можно найти с помощью fdisk (требуется суперпользователь), и вы можете ограничить исследуемое устройство, например, /dev/sda или /dev/nvme0n1.
Подсказки, на которые следует обратить внимание, это mbr против gpt и наличие небольшого раздела (обычно первого), отформатированного в файловой системе vfat, за которым следует больший раздел, отформатированный как ext4.
Info Этот документ и его содержание никогда не должны использоваться в качестве ресурса для копирования/вставки. В оставшейся части этого документа будут использоваться псевдоимена и нумерация разделов. Устройства будут называться /dev/sdy, а разделы /dev/sdyA, и вам придется подставить в них реальные значения из вашей системы.
После загрузки живого ISO — в зависимости от окружения — откройте терминал и переключитесь в контекст root. Используйте вышеупомянутую комбинацию root:password.
Chroot — это метод ограничения различных задач в ограниченной области, например, установка пакетов и другие задачи по обслуживанию системы. Перейдите по ссылке [1], чтобы прочитать больше о chroot в Arch wiki.
Идентификация системных разделов
Из вышесказанного мы предполагаем, что вы определили соответствующие разделы в вашей системе, и в этом документе разделы будут упоминаться следующим образом. Разделы, которые не нужны для обслуживания такого рода, намеренно опущены (например, home, swap).
Раздел | ! Использование | Комментарий |
---|---|---|
/dev/sdyA | EFI система | Требуется для EFI системы и монтируется в /boot/efi. |
/dev/sdyB | boot | Необязателен, но монтируется в /boot В основном используется, когда GRUB не может быть записан в / (например, в f2fs). |
/dev/sdyC | root | Требуется для корневой файловой системы и монтируется в / — обычно форматируется в ext4. |
Использование manjaro-chroot
Manjaro развертывает скрипт под названием manjaro-chroot , который принимает необязательный аргумент и выполняет поиск видимых устройств — сканирует разделы на наличие признаков операционной системы. Если найдено более одной операционной системы Linux — Вам будет предложено выбрать, какая система будет chroot, иначе файл /etc/fstab из системы будет использоваться для монтирования разделов и chroot в эту систему. Этот скрипт по умолчанию доступен только в live iso, но вы можете получить его в установленной системе, установив пакет manjaro-tools-base .
Ручной chroot
(Нет необходимости, если вы использовали manjaro-chroot ) Монтируйте разделы, используя назначенную временную точку монтирования, и всегда начинайте с root.
Info При использовании файловой системы BTRFS следует учитывать, что субтома должны быть смонтированы. В таком случае:
Затем, если необходимо, смонтируйте boot.
А после по необходимости и efi
Создайте среду chroot и используйте bash в качестве оболочки
Одна из возможных причин, по которой вы читаете этот документ — это незавершенное обновление, которое, в свою очередь, может быть вызвано несколькими ситуациями, в которые мы не будем углубляться. Чтобы исправить причину Вам следует запустить полное обновление системы, включая grub, чтобы убедиться, что все на месте.
После завершения операции продолжите, используя раздел, соответствующий вашей системе
Система BIOS
В системе BIOS/GPT нет MBR и, следовательно, нет места для хранения загрузчика. Спецификация разделов GPT допускает наличие неформатированного раздела типа загрузочного раздела BIOS (0xEF02). Размер этого раздела может составлять всего 1 мегабайт. Программа установки Calamares использует фиксированный размер 32 мегабайта. В системе BIOS/MBR часть загрузчика записывается в Master Boot Record основного диска.
Устройство — это диск (не раздел)
root # grub-install —force —target=i386-pc —recheck —boot-directory=/boot /dev/sdy COPY TO CLIPBOARD
Убедитесь что конфигурация grub обновлена
Система EFI
root # grub-install —target=x86_64-efi —efi-directory=/boot/efi —bootloader-id=manjaro —recheck COPY TO CLIPBOARD
Обновление конфигурации grub
Проверьте существование системного раздела EFI
Убедитесь, что файловая система efi загружена
Попробуйте загрузить файловую систему efi
Повторно войдите в chroot
Затем смонтируйте файловую систему efi
Убедитесь, что файловая система efi загружена
В случае успеха повторно выполните вышеуказанные команды установки
Manjaro не распознается
Если Manjaro не распознается после обновления grub, то, вероятно, в вашей установке отсутствует пакет lsb-release.
Cookie-файлы помогают нам предоставлять наши услуги. Используя наши сервисы, вы соглашаетесь с использованием cookie-файлов.
Восстановление GRUB
GRUB — это основной загрузчик Ubuntu начиная с версии 9.10. Ранее он был известен как GRUB2 и пришёл он на смену старой версии GRUB, известной теперь как GRUB Legacy. Если вам необходимо восстановить GRUB Legacy, например поскольку у Вас стоит версия Ubuntu старше 9.10, то вам необходимо прочитать соответствующую статью.
Несмотря на то, что это фактически две версии одного приложения с названием GRUB, они не имеют ничего общего и являются совершенно разными программами.
На любом загрузочном винчестере есть так называемая Главная загрузочная запись (англ. master boot record, MBR), к которой обращается BIOS при загрузке компьютера. В эту область загрузчик системы и должен записать информацию об основных файлах, которые хранятся уже на разделах винчестера.
Каждый раз при установке или восстановлении систем от Microsoft загрузчики Linux заменяются и их необходимо заново устанавливать.
Восстановление с помощью LiveCD/USB
Первый способ
Запустите систему с LiveCD/USB и откройте терминал. Для этого можно нажать Alt + F2 и ввести команду:
Далее необходимо узнать Вашу таблицу разделов. Используйте команду:
На экран должна быть выведена примерно такая таблица:
/dev/sda3 239616 233392328 233152713 111,2G Microsoft basic data /dev/sda4 233394176 234438655 1044480 510M Windows recovery environment . Disk identifier: 0x7d6fe43d Device Boot Start End Sectors Size Id Type /dev/sdc1 * 2048 29304782 29302735 14G 83 Linux /dev/sdc2 29304832 1953523711 1924218880 917,6G 83 Linux
Из таблицы видим, что Linux (загрузочный /-корень отмечен звёздочкой) стоит, в нашем случае, на разделе /dev/sdc1.
Теперь подключим этот раздел в /mnt следующей командой (следим за пропусками между кодами и порядковыми номерами разделов):
Затем, для записи grub в MBR, вводите следующую команду:
sudo grub-install --root-directory=/mnt /dev/sdc
В случае, если нужно только восстановить MBR диска (например, после переустановки Windows), то этого достаточно, закрываем терминал и перезагружаем.
Если нужно обновить и меню grub (например, после установки Windows), то нужно сделать:
sudo update-grub --output=/mnt/boot/grub/grub.cfg
Восстановление используя chroot
Запустите систему с LiveCD/USB и откройте терминал. Для этого можно нажать Alt + F2 и ввести команду:
Далее необходимо узнать Вашу таблицу разделов. Используйте команду:
На экран должна быть выведена примерно такая таблица:
/dev/sda1 29 8369 66999082+ 83 Linux /dev/sda2 * 8370 13995 45190845 7 HPFS/NTFS /dev/sda3 13996 14593 4803435 5 Extended
Теперь нужно примонтировать Ваш Linux раздел (здесь это sda1) и еще несколько важных директорий:
sudo mount /dev/sda1 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys
Если раздел /boot или /var находится отдельно, то Вам необходимо примонтировать их в /mnt/boot и /mnt/var
Теперь перейдем в окружающую среду chroot:
Теперь необходимо установить GRUB, используя команду:
grub-install --recheck /dev/sda
Также в некоторых случаях может помочь вариант:
grub-install --recheck --no-floppy /dev/sda
Если все прошло успешно, выходим из chroot командой:
Теперь необходимо отмонтировать разделы:
sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt
Если Вы монтировали раздел /boot воспользуйтесь командой:
Затем перезагрузим Ваш компьютер командой:
При необходимости Вы можете обновить меню загрузчика командой:
Восстановление в rescue mode
При отсутствии загрузочного диска, можно восстановить Grub из его консоли. Восстановление происходит следующим образом: сначала нужно подгрузить все модули, чтобы стала доступна вся функциональность Grub, а затем уже запуститься с нужного раздела. Как известно, Grub состоит из двух частей. Первая часть записана в MBR диска. Она содержит базовую функциональность, то есть в ней есть консоль в rescue mode и ничего больше. Вначале нужно определить, на каком разделе находится вторая часть груба (она лежит в каталоге /boot/grub), подгрузить недостающие модули. И только потом можно будет дать команду запуска с нужного раздела. В rescue mode доступно всего четыре команды:
Вначале следует дать команду:
В ответ она выведет, например, следующее:
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1)
Иногда Grub может неправильно опеределить, какие файловые системы находятся на разделах дисков. В данном случае определяет их как msdos. Нам нужно постараться угадать, какие диски мы видим. В данном случае видно два диска. Диск с индексом 0 содержит три раздела, диск с индексом 1 содержит два раздела. Зная структуру своих дисков несложно определить нужный диск.
Grub называет разделы в обратном порядке. И становится непонятно, что имеется в виду под (hd0,msdos3) — первый раздел или третий? Тут можно выкрутиться, использовав синтаксис (hd0,1). Нужно помнить, что в Grub счет дисков начинается с 0, а счет разделов — с 1. Предположим, что Линукс установлен на первый диск в первый раздел, то есть (hd0,1). Даем команду:
set prefix=(hd0,1)/boot/grub set root=(hd0,1)
Этими командами мы указываем использовать диск (hd0,1) для дальнейших команд. После чего нужно проверить, действительно ли на этом разделе есть то, что нам нужно. Даем команду:
если в ответ получаем список всех файлов в этой директории, то диск и раздел выбраны правильно. Подгружаем модули:
insmod ext2 insmod normal normal
set prefix=(hd0,1)/@/boot/grub set root=(hd0,1)
insmod btrfs insmod normal
После чего Grub перейдёт в полнофункциональный режим. Он автоматически найдет все операционки, которые можно подгружать, и покажет своё Grub-меню.
Дальнейшее восстановление сводится к тому, чтобы загрузить нужный нам Linux, и в нем от рута дать команду:
Где sdX, диск, на который нужно установить Grub.