Rescue mode
Процесс восстановления в режиме grub rescue происходит в несколько этапов.
Загрузите все модули, чтобы доступ к функциям системы открылся.
Rrescue mode имеет четыре команды
- ls;
- set;
- unset;
- insmod.
Сначала включаем первую:
ls
После этого на экране появится подобное:
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1)
Иногда система Grub неверно определяет файловые системы на дисках. Попытайтесь угадать диски, которые видите. Это не составит труда зная их структуру.
В примере видно, что загрузчик показывает их как msdos, где два доступных диска. На первом три раздела, а на втором два.
Обычно загрузчик нумерует разделы в обратном порядке. Чтобы было понятнее используйте вид hd0,1. Если в Grub отсчет разделов идет с 1, а дисков с 0, то сразу будет понятно в какой раздел установлена операционная система. Применяем следующую команду:
set prefix-(hd0,1)boot/grub set root-(hd 0,1)
Так система будет использовать конкретный диск для выполнения всех предыдущих операций. Для проверки наличия загрузчика на данном диске выполняем следующие действия:
ls /boot/grub
О том, что все сделано правильно подскажет появление списков и папок.
Для загрузки всех необходимых модулей выполните команды:
insmod ext2 insmod normal normal
После этого система будет работать в полноценном режиме.
Для закрепления результата зайдите в терминал Linux и с root-правами выполните следующую команду:
grub-install / dev/sdX
sdX — диск, на который должен быть установлен Grub.
При расположении ОС в разделе btrfs выполните другое действие:
set prefix-(hd0,1)/@/boot/grub set root-(hd 0,1)
Затем подгрузите модули
insmod btrfs insmod normal
И запустите Grub:
normal
Данная утилита позволяет запускать систему быстро и без проблем.
Почему система не загрузилась
Теперь рассказываю, что было в моем случае. Корень системы / располагался на lvm разделе вместе с /boot разделом. В какой-то момент корневой раздел был увеличен в размере за счет расширения тома lvm еще одним диском. Все это было сделано на лету, без перезагрузки системы. Причем сделано было мной давно, и с тех пор сервер ни разу не перезагружался до настоящего времени. Я не знаю почему, но данная операция привела к тому, что grub перестал загружаться с этого lvm раздела.
UUID физического тома и логического раздела не поменялись. То есть там информация, в начале загрузки, с ошибкой загрузки диска с lvmid, верная. Уиды правильные. Я понял, что причина в изменении размера диска только по аналогичным сообщениям в интернете. Наткнулся на несколько человек, которые обращались с похожей проблемой, где перед этим они тоже изменяли корневой раздел. Похоже это какой-то системный баг, возможно даже конкретной системы.
В моем случае на диске почему-то оказался отдельный раздел на 500 мб с файловой системой ext2. На нем как раз и был загрузчик, с которого я загрузился в rescue boot. Откуда взялся этот раздел, я не знаю. По идее, если он был создан автоматически во время установки системы, на нем бы и должен быть актуальный раздел /boot. Но нет, его не было в fstab и он не использовался. Я не стал долго разбираться, почему так получилось, а просто подмонтировал этот раздел в систему, обновил на нем grub и записал обновленный grub в MBR. После этого система благополучно загрузилась с этого раздела.
Если кто-то знает, почему мой загрузчик не смог загрузиться с lvm раздела, при том, что uuid указан правильно, прошу подсказки. Самому очень интересно, так как ситуация получилась неприятная и совершенно мне не понятная. Я часто расширяю корневой lvm раздел на ходу, но первый раз сталкиваюсь с тем, что это приводит к поломке загрузчика. Grub уже давно умеет грузиться с lvm раздела и каких-то дополнительных действий для этого делать не надо.
Installation Options (LiveCD)
Using the Entire Drive ( «Erase disk and install Ubuntu» ):
Install on entire drive: The user should select a drive on which Ubuntu and GRUB 2 will be installed. GRUB 2 will overwrite the drive’s boot information and place the GRUB 2 files in the appropriate locations.
Installing Ubuntu to a Specific Partition («Something Else»):
When using the «Something Else» option, you will be offered to choose the «Device for bootloader installation». Please select: * either the disk (eg /dev/sdX, not /dev/sdXY) on which the BIOS is setup to boot (recommended for normal use) * OR the partition (eg /dev/sdXY, not /dev/sdX) on which Ubuntu (/boot, else /) will be installed (only if you want to chainload it from another bootloader; if any doubt, do NOT choose this)
Never choose any other partition! (this may break the boot of your other systems, see Bug #1049549).
On a system with multiple drives and OS’s, the user can preserve the original bootloader by installing GRUB 2 on another drive. To accomplish this:
- specify the disk (eg /dev/sdX, not /dev/sdaXY) not currently used to boot the system for the bootloader location.
- After the installation is complete, change the boot order (via BIOS setup) so that the disk to which the GRUB information was written is the one booted first.
- If the user wishes to restore booting with the original bootloader, change the boot order back to the original drive.
BIOS/MBR Notes
GRUB 2 normally writes its bootloader information to an area just beyond the Master Boot Record and before the first partition. Some software on non-Linux operating systems also used this embedded area and broke the system by overwriting the GRUB 2 information on dual-boot systems. GRUB 2 now can recognize this potential problem and avoid it.
The bootloader information does not have to be installed to the embedded area of the MBR. It may also bypass the MBR entirely and be installed to a specific partition. In doing this, the location of the GRUB 2 files are specified by using blocklists. This option is not available via an Ubuntu GUI installation but can be made via the terminal after installation. Even then this method is not as reliable as writing to the MBR and is not recommended by the GRUB developers.
BIOS/GPT Notes
If the BIOS is setup to boot the disk in , installing GRUB2 on a GPT (GUID Partition Table) disk requires a dedicated BIOS boot partition with a recommended size of at least 1 MiB. This partition can be created via GParted or other partitioning tools, or via the command line. It must be identified with a bios_grub flag. The necessary GPT modules are automatically included during installation when GRUB 2 detects a GPT scheme.
UEFI
GRUB 2 is compatible with EFI/UEFI and will load the necessary modules during installation. For information on this topic, please visit the UEFI community documentation.
Как удалить загрузчик Grub в UEFI
Эта проблема тоже решается с помощью утилиты Bootice. Только на это раз вам нужна именно 64-битная версия программы.
Одно из преимуществ UEFI на MBR в том, что здесь можно устанавливать сразу несколько загрузчиков на специальный раздел. Для удаления загрузчика Grub и восстановления функциональности Windows достаточно переместить Grub чуть ниже в очереди загрузки UEFI.
Откройте программу, перейдите на вкладку UEFI и нажмите Edit Boot Enteries. Откроется такое окно:
Здесь у вас есть два варианта действий. Либо опустить Grub ниже загрузчика Widnows кнопкой Down, либо полностью удалить запись о загрузчике кнопкой Del. Но в обоих случаях файлы загрузчика останутся на диске. Полностью удалить загрузчик Grub со всеми его файлами нужно из командной строки. Это немного сложный процесс, но всё же мы его разберём.
Кликните в левом нижнем углу экрана правой кнопкой мыши, в открывшемся контекстном меню выберите Командная строка от имени администратора.
Далее нам понадобится утилита diskpart, все действия мы выполним с помощью неё. Запустите её командой:
Затем смотрим доступные диски:
И выбираем наш единственный диск, на котором сейчас установлена Windows, а раньше была установлена Ubuntu:
После того, как был выбран диск, мы можем посмотреть список разделов на нём:
Среди этих разделов есть и раздел с файлами EFI, для обычной системы он скрыт, но не для этой утилиты. В нашем случае это Volume 2. Как правило, это небольшой раздел с файловой системой FAT32 и отмеченный как системный.
Мы выбрали этот раздел текущим с помощью команды:
Затем назначим ему букву, чтобы можно было с ним работать:
Утилиту можно закрывать. Дальше продолжаем выполнять действия в консоли. Сделать всё с помощью проводника вы не сможете, потому что нужны права администратора. Переходим на диск E:
Переходим в папку EFI:
Удаляем папку с файлами загрузчика Ubuntu:
Готово: удаление загрузчика Grub завершено, и теперь его файлов больше нет в системе.
Определение разделов
Теперь нужно определить раздел диска, на котором был установлен GRUB.
Выведем список разделов, для этого выполняем команду (в конце команды стоит строчная буква L
): sudo fdisk -l
Вывод fdisk для BIOS
Пример вывода команды:
В моем случае мы видим 2 диска: /dev/sda (SSD диск) и /dev/sdb (флешка, с которой сейчас загружена Live-система).
Нас интересует диск /dev/sda. На диске /dev/sda создано несколько разделов. В моем случае /dev/sda4, на котором установлен Windows, а также 4 раздела с пометкой Linux
(см. последний столбец таблицы). У вас скорее всего может быть один раздел Linux (корневой раздел) или два раздела (корневой и home). На одном из этих разделов установлен GRUB.
То есть из таблицы вы должны определить какой раздел является корневым, на нем скорее всего у вас установлен GRUB. В моем случае GRUB установлен в раздел /dev/sda2. Далее по тексту я буду его использовать (вы должны будете указывать свой раздел).
Иногда бывает, что для загрузчика GRUB выделен отдельный раздел (он называется boot-раздел). Если это так, то на следующем шаге вам нужно будет примонтировать корневой раздел и раздел с загрузчиком.
Вывод fdisk для UEFI
Для новых компьютеров с UEFI вывод команды fdisk -l может быть примерно следующим:
Нам нужно определить, на каком разделе установлен Linux (корневой раздел), а также определить EFI-раздел. В моем случае это разделы: /dev/nvme0n1p5 и /dev/nvme0n1p1, которые расположены на диске /dev/nvme0n1.
Что все это значит
Четыре первые строки в файле menu.lst выполняют следующие функции.
Команда Timeout = 10 устанавливает временной промежуток, в течении которого загрузчик Grub будет ожидать действий пользователя, которые укажут ему, какой пункт меню загружать. Если он не дождется такого указания в течении установленного времени, то будет произведена загрузка пункта меню, установленного по умолчанию. А если такой не определен в конфигурационном файле, то первого по списку пункта меню. Чтобы остановить счетчик времени, достаточно нажать любую клавишу на клавиатуре.
Команда Color white/blue yellow/blue устанавливает цветовую раскраску текстового меню (в которое можно войти, нажав клавишу «Esc», если в данный момент вы находитесь в графическом меню Grub. Просто иногда бывают случаи, когда вам потребуется войти в текстовое меню загрузчика). Первая пара значений задает цвета переднего (foreground) и заднего (background) фона всего меню, а вторая пара служит для установки цветов выделенного пункта меню.
Команда gfxmenu (hd0,0)/boot/gfxmenu указывает загрузчику Grub, где располагается графическое меню.
Команда default 0 устанавливает пункт меню для загрузки по умолчанию, при этом отсчет ведется с нуля.
Для того, чтобы улучшить слишком упрощенный фрагмент строфы в конфигурационном файле, мы добавим несколько параметров в строку kernel.
Добавление параметра aplash=silent vga=788 в конец этой строки позволит установленной графической теме Plymouth скрыть строки текста, появляющиеся на экране монитора при загрузке системы. Число 788 является разрешением монитора, которое наиболее оптимально для большинства компьютеров.
Если вы намереваетесь использовать режим гибернации («спящий режим») при выключении своей машины, вам необходимо указать загрузчику Grub, где находятся данные, нужные для восстановления сессии. Такие данные хранятся на разделе подкачки (swap), поэтому этот раздел должен быть немного больше оперативной памяти (ОЗУ) компьютера по размеру. В этом случае режим гибернации будет выполняться без ошибок. Если, к примеру, раздел подкачки на вашем жестком диске располагается по адресу /dev/sdb1, то в конце строки kernel необходимо добавить параметр resume=/dev/sdb1. Мы можем указать раздел таким образом, так как Grub распознает файловые системы и записи устройств к тому моменту, когда они появятся в этом конфигурационном файле.
Установка PCLinuxOS по умолчанию предлагает три пункта меню загрузчика.
- Первый пункт предоставляет полностью графическое меню загрузки, вплоть до окна входа в систему.
- Второй пункт называется linux-nonfb или каким-либо иным похожим образом. Он выполняет загрузку системы без графической заставки, что позволяет видеть все системные сообщения во время ее загрузки. Такой способ может быть полезен при неполадках в системе. Процесс загрузки можно приостановить в любой момент нажатием клавиши ScrollLock на клавиатуре.
- Последний третий пункт называется failsafe. Фактически он также служит для контроля неполадок в системе. В этом режиме система загружается в однопользовательскую командную оболочку, внутри которой можно выполнять некоторые административные задачи, такие как проверка файловой системы или смена пароля root. Когда все необходимые задачи будут выполнены, вводим в командной строке init 5, что вернет нас обратно к окну входа в систему.
Все три вышеназванных режима можно включить, добавив одну из перечисленных ниже команд в строку kernel между параметром kernel и параметром корневой раздел root:
BOOT_IMAGE = linux BOOT_IMAGE = linux-nonfb BOOT_IMAGE = failsafe
Когда вы добавляете в конфигурационный файл Grub новый пункт меню, проверьте его работоспособность. Если система успешно загружается через этот пункт, вы можете удалить старый, но перед этим сделайте резервную копию файла так, чтобы в любой момент он был вам доступен. Если перед строкой вы поставите знак решетки #, то пункт меню, в котором находится эта строка, не будет отображаться при загрузке. Grub воспринимает любую строку, начинающуюся с символа # как комментарий и не выполняет ее.
Восстановление в rescue mode
При отсутствии загрузочного диска, можно восстановить Grub из его консоли. Восстановление происходит следующим образом: сначала нужно подгрузить все модули, чтобы стала доступна вся функциональность Grub, а затем уже запуститься с нужного раздела.
Как известно, Grub состоит из двух частей.
Первая часть записана в MBR диска. Она содержит базовую функциональность, то есть в ней есть консоль в rescue mode и ничего больше. Вначале нужно определить, на каком разделе находится вторая часть груба (она лежит в каталоге /boot/grub), подгрузить недостающие модули. И только потом можно будет дать команду запуска с нужного раздела.
В rescue mode доступно всего четыре команды:
ls set unset insmod
Вначале следует дать команду:
ls
В ответ она выведет, например, следующее:
(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) для дальнейших команд. После чего нужно проверить, действительно ли на этом разделе есть то, что нам нужно. Даем команду:
ls /boot/grub
если в ответ получаем список всех файлов в этой директории, то диск и раздел выбраны правильно.
Подгружаем модули:
insmod ext2 insmod normal normal
Проверьте правильность написания первой команды для файловых систем ext3 и ext4
Если ОС расположена на разделе, отформатированном в btrfs,
то выполняем следующие команды:
set prefix=(hd0,1)/@/boot/grub set root=(hd0,1)
подгружаем модули:
insmod btrfs insmod normal
запускаем GRUB:
normal
После чего Grub перейдёт в полнофункциональный режим. Он автоматически найдет все операционки, которые можно подгружать, и покажет своё Grub-меню.
Дальнейшее восстановление сводится к тому, чтобы загрузить нужный нам Linux, и в нем от рута дать команду:
grub-install /dev/sdX
Где sdX, диск, на который нужно установить Grub.
Установить настройщик Grub
В этом руководстве мы будем использовать приложение Grub Customizer, чтобы упростить изменение и настройку записей в меню загрузки Grub и предоставить простой графический пользовательский интерфейс, который пользователи могут использовать для изменения Grub без запутанных файлов конфигурации или чего-то еще. как это.
Приложение Grub Customizer по умолчанию не установлено ни в одном дистрибутиве, поэтому вам нужно будет пройти процесс установки, прежде чем научиться использовать его для удаления загрузочных записей. Чтобы установить последнюю версию Grub Customizer, откройте окно терминала, нажав Ctrl + Alt + T на клавиатуре. Оттуда следуйте инструкциям командной строки, которые соответствуют вашему дистрибутиву Linux ниже.
Ubuntu
Долгое время пользователям Ubuntu, желающим использовать Grub Customizer, приходилось работать с репозиторием PPA. Начиная с Ubuntu 19.04, это изменилось, и Canonical включила программное обеспечение в официальные источники программного обеспечения для упрощения установки.
Чтобы установить Grub Customizer в Ubuntu 19.04, используйте команду Apt ниже.
sudo apt install grub-customizer
Вы используете вместо этого Ubuntu 18.04 LTS или Ubuntu 16.04 LTS? Хотите заполучить последнюю версию Grub Customizer? Добавьте программный PPA в Ubuntu с помощью следующей команды.
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
После добавления программного PPA запустите команду обновления.
sudo apt update
Наконец, установите приложение на свой компьютер с помощью:
sudo apt install grub-customizer
Debian
Как и в случае с Ubuntu, заставить Grub Customizer работать в Debian Linux было довольно утомительно. Однако, начиная с последней версии Debian 10, пользователи могут легко установить приложение без особых проблем, поскольку оно включено в репозиторий программного обеспечения «Debian Main». Чтобы начать установку, используйте команду Apt-get ниже.
sudo apt-get install grub-customizer -y
Вам нужно установить настройщик Grub на Debian 8 или 9? Мы настоятельно рекомендуем обновить ваш выпуск до версии 10, чтобы установить программное обеспечение, поскольку Debian 10 — это новый стабильный выпуск со всем необходимым!
Arch Linux
Grub Customizer можно установить в Arch Linux, если вы включили программный репозиторий «Сообщество». Чтобы включить это репо, откройте файл конфигурации Pacman с помощью текстового редактора Nano.
sudo nano -w /etc/pacman.conf
Внутри Nano перейдите в раздел «Сообщество» и удалите символы # спереди. Также сделайте это для любого текста прямо под ним. Затем сохраните изменения в Nano с помощью Ctrl + O и выйдите с помощью Ctrl + X.
Выйдя из Nano, установите Grub Customizer прямо из репозитория «Сообщество» с помощью:
sudo pacman -Syy grub-customizer
Fedora
Начиная с версии 29, Grub Customizer доступен пользователям Fedora Linux. Если вы хотите установить программное обеспечение, откройте окно терминала и используйте команду Dnf ниже.
sudo dnf install grub-customizer
OpenSUSE
Чтобы установить приложение Grub Customizer в Open SUSE, щелкните здесь. Оказавшись на странице, найдите свою версию SUSE и нажмите кнопку установки, чтобы начать работу.
grub rescue
В grub rescue mode доступно всего четыре команды:
- ls
- set
- unset
- insmod
Для начала воспользуемся командой ls и посмотрим, какие разделы видит grub.
В моем случае несколько отдельных разделов диска и lvm том. К слову сказать, в моем случае раздел /boot расположен на lvm разделе, но по какой-то причине загрузчик не смог с него загрузиться. У вас может вообще не быть lvm, а проблема в чем-то другом. Например, если у вас в grub.cfg указан UUID раздела, с которого надо грузиться (это может быть массив mdadm), а раздел этот по какой-то причине исчез, или изменил свой uuid, вы как раз получите эту ошибку.
Сейчас нам нужно найти раздел, на котором расположен загрузчик. Первая часть загрузчика, которая записана в MBR диска очень примитивная и почти ничего не умеет. Она даже разделы диска толком не определила, решив почему-то, что там файловая система msdos, хотя это не она. Нам нужно проверить все разделы диска hd0 и найти реальный загрузчик. Проверяем это командами:
> ls (hd0,msdos5)/ > ls (hd0,msdos1)/
Я нашел на msdos1 искомый раздел /boot. Понял это по содержимому. В разделе есть директория /grub, где располагается вторая часть загрузчика. Искомая директория может называться /grub2 или /boot/grub. Указываем загрузчику использовать этот раздел при выполнении дальнейших команд.
> set prefix=(hd0,msdos1)/grub > set root=(hd0,msdos1)
Далее загружаем необходимые модули. Какие будут нужны, зависит от конкретной ситуации. На всякий случай показываю самые популярные:
> insmod ext2 > insmod lvm > insmod part_msdos
Начать стоит вообще без модулей, а потом добавлять, в зависимости от вашей ситуации. В завершении загружаем модуль normal и вводим одноименную команду:
> insmod normal > normal
После этого вы должны увидеть стандартное меню загрузчика grub. Дальше вы загрузитесь в операционную систему.
Через терминал с загрузочного носителя
Для этого вам потребуется загрузочная флешка либо диск с записанным дистрибутивом Linux. В идеальном варианте он должен быть аналогичным системе, установленной на жёсткий диск. Но если дистрибутив — это не самый важный момент, то разрядность должна совпадать в любом случае. Иначе это чревато ещё большими последствиями, в результате которых уже точно придётся всё переустанавливать.
- Вставьте флешку или диск в разъём компьютера, после чего в BIOS выставьте носитель в качестве приоритетного для загрузки. Необходимая настройка находится в разделе Boot Device Priority либо First Boot Device. Чтобы запустить BIOS, при включении нажмите нужную кнопку или их комбинацию на клавиатуре. Наиболее популярными вариантами являются F2, Del, Shift + F2, F10. Чтобы не разбираться с БИОСом, можно просто нажать F11 или F12 и выбрать носитель из предложенного списка.
- Далее нужно выяснить, на каком разделе винчестера инсталлирована система, а какой указан в качестве загрузчика. Для этого нужно запустить терминал (аналог командной строки Windows), найдя его в меню приложений либо же нажав комбинацию клавиш Ctrl + Alt + T, либо Alt + F2. В открывшемся окошке вам нужно будет впечатать команду sudo fdisk -l. Сразу же утилита просканирует все разделы диска и отобразит информацию о каждом из них. Будет показана даже информация о других установленных на компьютер операционных системах. Вы сможете узнать название раздела, его расположение, размер, а также тип его файловой системы. При условии, что при установке Ubuntu вы совершали разметку вручную, вы без проблем поймёте, какой из разделов является загрузочным, а какой — корневым. При автоматической разметке ориентируйтесь на название Linux. Именно он и будет корнем вашей системы. Имя раздела обычно состоит из аббревиатуры sdc либо sda и цифры с порядковым номером.
- Далее нужно выполнить монтирование корневой файловой системы в папку /mnt. В этом вам поможет команда sudo mount /dev/sda1 /mnt, где вместо sda нужно прописать название вашего раздела.
Начиная с этого этапа, восстанавливать Grub в Linux возможно двумя методами.
Способ 1
- Введите команду восстановления загрузчика: sudo Grub-install —root-directory=/mnt /dev/sda.
- Перезагрузите Компьютер при помощи команды sudo reboot. В результате должно появиться меню выбора ОС.
- Если в этом меню отображается устаревшая информация, обновите загрузочную запись MBR. Для этого запустите Linux в обычном режиме, откройте терминал и используйте команду sudo update-Grub. Если это не помогает, примените sudo update-Grub —output=/mnt/boot/Grub/Grub.cfg, а затем повторите предыдущую.
- Ещё раз перезапустите компьютер.
Способ 2.
- После монтирования корня файловой системы в раздел /mnt, нужно дополнительно смонтировать папку с загрузочными файлами, а также другие компоненты взаимодействия с ядром. Для этого одну за другой выполните команды:
Далее вам понадобится запустить оболочку chroot. Для этого в терминале добавьте chroot /mnt /bin/bash
Первый параметр обращает внимание на корневой каталог, а второй — на специальную оболочку для преобразования команд юзера.
Далее необходимо применить команды, чтобы попасть в Ubuntu и пользоваться практически всеми её приложениями, кроме сервисов и графического интерфейса:
env-update
source /etc/profile.
- Выполните перезагрузку через reboot.