Как восстановить загрузчик grub

Включение устройства

В момент запуска компьютера, в первую очередь начинает запускаться непосредственно сам BIOS. В этот момент происходит считывание данных, хранящихся в MBR первого диска. Спустя несколько секунд, содержимое «идёт» к оперативной памяти, где происходит проверка на наличие в последних байтах шестнадцатеричных кодов 55 АА. Такая проверка заключается в необходимости идентифицировать носители для их последующей загрузки. Небольшая программка, хранящаяся в MBR, необходима при совпадении представленных кодов. Первая программа «цепляет» следующую, расположенную в загрузочном секторе активного раздела, чтобы впоследствии активировать её, и, как следствие, запустить ОС Windows.

В случае наличия не одного жёсткого диска, пользователь может настроить в BIOS порядок, согласно которому будет производиться запуск конкретных жёстких дисков в момент загрузки системы. Благодаря этой особенности, новые ПК имеют возможность загружать систему как с внешнего диска, так и с USB-накопителя. Естественно, изменив порядок загрузки в BIOS, юзер может загружать систему посредством CD и DVD-дисков.

С помощью BIOS вы можете отрегулировать порядок загрузки носителей

Чтобы в будущем не приходилось разбираться с загрузчиками и думать о том, каким образом должна осуществляться настройка GRUB, пользователь должен знать, как установить две операционные системы от разных производителей таким образом, чтобы они не конфликтовали между собой. Как показывает практика, разумнее всего установить изначально загрузчик системы Linux, чтобы впоследствии иметь возможность выбора относительно запускаемой системы.

Однако, если на устройстве стоит одна из последних версий ОС от компании Microsoft (позднее 9х/ME), то в загрузчике системы можно сделать так, чтобы он самостоятельно «беспокоился» о GRUB. Огромным преимуществом такой возможности является отсутствие необходимости лишний раз разбираться с особенностями MBR. Правда, далеко не каждый современный юзер сможет самостоятельно произвести такую манипуляцию, так как процесс этот достаточно сложный. Всё придётся делать вручную.

Среди прочих способов, настроить нормальную работоспособность двух систем, можно прибегнув к дополнительной установке GRUB. Загрузчик необходимо расположить непосредственно в загрузочном секторе главного раздела и впоследствии отметить его в качестве активного. Этот метод также исключает необходимость использовать MBR, однако он может сработать только с основными разделами и файловыми системами, не влияющими на загрузочный сектор раздела.

Создание дополнительного меню загрузки

Установка файлов GRUB на раздел с Linux

How to update grub

Ubuntu and many other Linux distributions provide a handy command line utility called update-grub.

To update grub, all you have to do is to run this command in the terminal with sudo.

You should see an output like this:

You may see a similar command called update-grub2. No need to be alarmed or confused between update-grub and update-grub2. Both of these commands do the same action.

Around ten years ago, when grub2 was just introduced, update-grub2 command was also introduced. Today, update-grub2 is just a symbolic link to update-grub and both update grub2 configuration (because grub2 is the default).

Can’t find update-grub command? Here’s what to do in that case

It’s possible that your Linux distribution might not have update-grub command available.

What do you do in that case? How do you update grub on such a Linux distribution?

There is no need to panic. The update-grub command is simply a stub for running ‘grub-mkconfig -o /boot/grub/grub.cfg’ to generate grub2 config file.

Which means that you can update grub with the following command on any Linux distribution:

Of course, remembering update-grub command is a lot easier than the above command and this is the reason why it was created in the first place.

GRUB 2 и UEFI

Машины с прошивками UEFI (т.е., практически все машины, продающиеся в течение нескольких последних лет) добавили новый уровень сложности в процесс диагностики проблем системного загрузчика GRUB 2. Несмотря на то, что процедура восстановления работоспособности системного загрузчика GRUB 2, установленного на машине с прошивкой UEFI, не значительно отличается от процедуры восстановления работоспособности этого же загрузчика на машине без прошивки UEFI, в новые версии прошивок вносятся различные изменения, которые являются причиной различных результатов процесса восстановления работоспособности системного загрузчика.

В системах на основе UEFI вам не придется устанавливать что-либо в основную загрузочную запись. Вместо этого вы должны будете установить загрузчик Linux с поддержкой EFI в системный раздел EFI (EFI System Partition, ESP) и выбрать данный загрузчик в качестве используемого по умолчанию с помощью такого инструмента, как efibootmgr в Linux или bcdedit в Windows.

На данный момент системный загрузчик GRUB 2 должен корректно устанавливаться в процессе установки любого из популярных дистрибутивов Linux, что позволяет последнему успешно сосуществовать с ОС Windows 8. Однако, в том случае, если вы получите в результате неработоспособный системный загрузчик, вы сможете восстановить работоспособность системы с помощью live-образа дистрибутива Linux. В процессе загрузки live-образа дистрибутива вам следует убедиться в том, что вы осуществляете загрузку в режиме UEFI. Меню загрузки компьютера должно содержать по два элемента для каждого из съемных носителей — для загрузки в обычном режиме и в режиме UEFI. Используйте последний режим для организации доступа к переменным EFI посредством файлов из директории /sys/firmware/efi/.

Из live-окружения следует смонтировать корневую файловую систему неудачно установленного дистрибутива таким образом, как описано в данном руководстве. Вам также придется смонтировать системный раздел EFI (ESP). Если предположить, что данному разделу соответствует файл устройства /dev/sda1, то вы можете смонтировать данный раздел с помощью следующей команды:

sudo mount /dev/sda1 /mnt/boot/efi

После этого необходимо загрузить модуль ядра efivars с помощью команды modprobe efivars перед созданием окружения chroot с корневой файловой системой неудачно установленного дистрибутива таким образом, как описано в данном руководстве.

Теперь в том случае, если вы используете дистрибутив Fedora, вы можете переустановить системный загрузчик с помощью следующей команды:

yum reinstall grub2-efi shim

После нее следует выполнить команду для генерации нового файла конфигурации системного загрузчика:

grub2-mkconfig -o /boot/grub2/grub.cfg

Пользователи дистрибутива Ubuntu могут выполнить эту же операцию с помощью команды:

apt-get install --reinstall grub-efi-amd64

После восстановления системного загрузчика следует выйти из окружения chroot, отмонтировать все смонтированные разделы жесткого диска и перезагрузить компьютер, перейдя в меню GRUB 2.

Для деактивации сценария из директории /etc/grub.d вам нужно всего лишь убрать бит исполнения, с помощью команды, аналогичной команде chmod -x /etc/grub.d/20_memtest86+, которая позволяет убрать строку «Memory Test» из меню загрузки

Как отучить GRUB2 запоминать последний выбранный пункт?[править]

Удаление Grub в UEFI

Чтобы реализовать задуманное, пользователю снова потребуется программа, которая была рассмотрена в предыдущем пункте. Единственная разница заключается в том, что теперь нужно будет скачать на сайте 64-битную версию утилиты.

В UEFI совсем необязательно удалять ненужный загрузчик. Вы можете оставить обе программы в системе, переместив ненужный вариант ниже основного. То есть, нужно сделать так, чтобы Grub оказался запасным инструментом.

Пошаговое руководство:

  1. Запустите программу Bootice на своём ПК.
  2. Далее вам понадобится вкладка UEFI.
  3. Перейдите туда и нажмите на кнопку «Edit Boot Enteries». Перед вами откроется новое окошко.

Теперь пользователь может пойти одним из двух доступных путей:

  1. Опустите загрузчик Grub, воспользовавшись для этих целей клавишей Down. Это позволит сделать загрузчик Windows основной программой в системе.
  2. Альтернативный вариант: удалите запись о загрузчике Grub, воспользовавшись клавишей Del.

Удаление загрузчика Grub с флешки

Чтобы удалить программу с флешки, пользователи часто прибегают к распространенной ошибке. Они интуитивно выполняют действие, первое пришедшее им на ум. Что это может быть? Конечно же, форматирование флешки. Однако подобный способ не приносит нужных результатов. Дело в том, что Grub записывается в таблицу MBR, а потому требуется создание новой таблицы.

Дельнейшие процессы выполняются в Linux. Чтобы узнать имя устройства у вашей флешки, задайте в терминале специальную команду. Впишите в строке текст, указанный ниже:

Далее выполните удаление существующей таблицы. Еще раз воспользуйтесь строкой терминала Линукс:

Чтобы создать новую таблицу разделов, потребуется программа Gparted. Добавьте раздел на флешке и выполните форматирование в файловую систему FAT32. Готово! Еще раз напоминаем о том, что нельзя стирать загрузчик с жёсткого диска. Его восстановление – очень непростой и энергозатратный процесс.

Заключение

Для успешного удаления стандартного загрузчика Grub в Линукс достаточно следовать инструкциям, предоставленным в данной статье.

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

загрузчик Grub 2

Эта инструкция поможет когда:

  • Переустанавливали Windows и кроме него был ещё linux, который стал невиден
  • Linux перестал загружаться, даже будучи единственной ОС

1) Загружаемся с LiveCD (LiveDVD, LiveUSB)

2) Смотрим таблицу разделов:

$ sudo fdisk -l

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *           1          13      102400    7  HPFS/NTFS
Раздел 1 не заканчивается на границе цилиндра.
/dev/sda2              14        7749    62139420    7  HPFS/NTFS
/dev/sda3            7750       23607   127377020    7  HPFS/NTFS
/dev/sda4           23607       30402    54577153    5  Расширенный
/dev/sda5           23607       30119    52301824   83  Linux
/dev/sda6           30119       30402     2274304   82  Linux своп / Solaris

/dev/sdb1   *           1        5099    40957686    7  HPFS/NTFS
/dev/sdb2            5100       16142    88701952    7  HPFS/NTFS
/dev/sdb3           16143       19457    26627737+  83  Linux

/dev/sdc1               1       30401   244196001    7  HPFS/NTFS

Ответ команды сокращён для наглядности. Видно, что в системе есть три диска. На двух первых есть загрузочные области и несколько разделов как Linux так и Windows (HPFS/NTFS). Нужно определиться какой из них будет восстанавливать (можно по очереди, отключив временно остальные диски). В случае с одним жёстким диском ситуация проще. Это будет /dev/sda

3) Монтируем Linux-раздел (здесь sda5, но если есть отдельный boot рездел, то нужно монтировать его), добавляем в него устройства и процессы, переходим в него, таким образом попадая в окружение ОС, которая установлена на компьютере:

$ sudo mount /dev/sda5 /mnt
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo chroot /mnt

После перехода вам не придется использовать sudo, т.к. теперь все команды выполняются от рута (root):

4) Устанавливаем загрузчик

# grub-install /dev/sda

Если получили сообщение об ошибке, то обновляем информацию об устройсве /dev/sda и пробуем установить снова:

# grub-install --recheck /dev/sda
# grub-install /dev/sda

5) Выходим в окружение LiveCD ОС, отмонтируем разделы и перезагружаем компьютер:

# exit
$ sudo umount /mnt/dev
$ sudo umount /mnt/proc
$ sudo umount /mnt
$ sudo reboot

последняя команда может быть заменена на альтернативную:

$ sudo shutdown -r now

Сноски

  1. Программа Bootsect.exe обновляет основной загрузочный код разделов диска, чтобы обеспечить переключение между Bootmgr и загрузчиком NT (NTLDR). Это средство можно использовать для восстановления загрузочного сектора компьютера. Это средство заменяет FixFAT и FixNTFS.

Как дописать свои собственные пункты меню?[править]

Способ 2

Грузимся с LiveCD с поддержкой grub2.В отличие от предыдущего способа, мы не будем запускать установщик через chroot, что позволит сократить количество требуемых действий. Вместо использования chroot мы воспользуемся ключом . Но для начала убедимся, что данная опция поддерживается нашей live-системой.

man grub-install

Если в описании опций присутствует вышеупомянутый ключ — все в порядке.

Монтируем корневой раздел:

mount /dev/sda1 /mnt

Если у нас выделен отдельный boot-раздел, примонтирум его тоже.Допустим это sda2:

mount /dev/sda2 /mnt/boot

Теперь переходим к установке grub2. Ключ позволяет указать что использовать в качестве корневой директории. Нам нужен корневой раздел нашей системы, который примонтирован в .Поэтому выполняем:

grub-install --root-directory=/mnt /dev/sda

Как и в предыдущем способе, grub2 устанавливается на физический диск, а не на раздел. В качестве диска нужно указать тот диск, который установлен загрузочным в BIOS. Если все пройдет успешно, то установщик выведет сообщение об успешном завершении и список обнаруженных разделов, которые были добавлены в . Если все это есть — отмонтируем диски и перезагружаемся. Если будет выведен неполный список разделов — отредактируем файл в корневой папке установленной системы (в описанном примере — ) поправляем его, добавив остальные диски и скорректировав нумерацию.Файл должен иметь вид:

(hd0) /dev/sda (hd1) /dev/sdb

При необходимости повторяем операции для всех жестких дисков. Сохраняем файл и повторно выполняем команду:

grub-install --root-directory=/mnt /dev/sda

Теперь должен отобразиться правильный список дисков.Демонтируем диски и перезагружаемся.

Поиск поврежденного файла

Первое, что необходимо знать, это — на каком жестком диске и на каком разделе данного жесткого диска установлена операционная система PCLinuxOS. И загрузчик Grub поможет нам в этом вопросе. После загрузки LiveCD-диска на компьютер, открываем терминал и получаем права администратора (root) командой:

su

У вас будет запрошен пароль суперпользователя. Это пароль администратора (root) системы, но не пароль вашей пользовательской учетной записи. После того, как вы зайдете под учетной записью root, помните о том, что необходимо быть предельно осторожным при вводе любой команды в терминале, так как пользователь root обладает абсолютными правами. Он может все, поэтому любая ошибочная команда приведет к краху системы.

Затем вводим команду:

grub

В результате произойдет переход в командную оболочку загрузчика Grub, где можно выполнить переустановку резидентной части Grub. Оболочка Grub имеет ограниченный набор поддерживаемых команд, список которых можно просмотреть, нажав клавишу «Tab».

GNU GRUB version 0.97 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ]

grub>

Теперь приступим к поиску резидентной части Grub, файла . В строке приглашения введем команду:

find /boot/grub/stage2

Отобразится список разделов, на которых расположен файл . В большинстве случаев этот список будет состоять только из одного раздела, но если на вашем компьютере настроена мультизагрузка нескольких операционных систем Linux, то все эти разделы будут отображены в терминале. Все найденные разделы представлены в виде записи или похожей на нее, так как Grub не понимает отображение разделов в виде или . Он видит разделы только как устройства. Порядковый номер устройств в Grub начинается с нуля, а не с единицы. В записи первое значение — это порядковый номер устройства (жесткого диска), а второе значение (после запятой) — это порядковый номер раздела на этом жестком диске. Поэтому запись вида расшифровывается как — «первый жесткий диск, первый раздел этого жесткого диска». Введем команду , чтобы выйти из оболочки Grub.

Теперь, когда мы знаем, на каком жестком диске и на каком разделе этого диска установлена операционная система, можно подмонтировать его, чтобы зайти внутрь. Я подразумеваю, что — это первый раздел первого жесткого диска. В терминале, оставаясь под учетной записью root, ввожу команду:

mkdir /a
mount /dev/sda1 /a

В вашем случае, если жесткий диск имеет интерфейс IDE, необходимо изменить наименование этого диска с на . Если вы вдруг не знаете, какой интерфейс имеет ваш жесткий диск, введите в терминале команду , чтобы увидеть список все найденных в системе устройств.

Вернемся к двум предыдущим командам. Первой из них было создано устройство с именем , второй командой раздел был смонтирован на устройство . Таким образом, теперь ядро () и образ файловой системы () PCLinuxOS располагаются по пути . Как правило, имена ядер и образов файловой системы достаточно длинные и сложные, чтобы их набирать в командной строке. Поэтому проще ввести ссылки (ярлыки), чтобы получить список этих файлов. Имена ядер () начинаются со слова , а имена образов файловой системы () начинаются со слова . Отобразим в терминале список этих двух файлов, введя две команды:

ls /a/boot/vmlinuz*
ls /a/boot/initrd*

В этом списке имена, оканчивающиеся на символ являются ссылками, которые можно использовать в конфигурационном файле загрузчика Grub.

Настройка Grub через /boot/grub/grub.cfg

Файл /etc/boot/grub/grub.cfg управляет непосредственно работой загрузчика, здесь указаны все его параметры и настройки, а также сформировано меню. Поэтому, изменяя этот файл, мы можем настроить Grub как угодно. Сначала попытаемся разобраться с синтаксисом файла. Он очень напоминает синтаксис bash и состоит из нескольких команд, которые что-то делают, загружают и настраивают.

Команды могут быть объединены в функции или блоки с помощью инструкций if else, синтаксис которых аналогичен bash. Рассмотрим основные из этих команд:

  • load_env — загрузить переменные окружения из файла;
  • set — установить значение переменной окружения. Используется как set имя_переменной=значение;
  • insmod — загрузить модуль из папки с модулями Grub;
  • linux — загружает ядро Linux;
  • initrd — подготавливает образ initrd для загрузки ядра;
  • boot — пытается загрузить систему;
  • chainloader — запускает загрузчик из другого раздела;
  • search — установить значение переменной выполнив поиск по заданным параметрам, например, может найти диск по его UUID или метке;
  • menuentry — позволяет создать пункт меню;

Это все команды, которые вам понадобятся. Но две последние нужно рассмотреть подробнее, так как они будут использоваться чаще всего.

Команда search используется для поиска дисков и имеет такой синтаксис:

$ search опции_поиска —set=имя_переменной —hint приметы_устройства основной_параметр

  • Опции поиска задают по какому критерию нужно искать, например, —fs-uuid — искать по UUID, —label — по метке, —no-floppy — не искать в схемных носителях.
  • Приметы устройства дают программе дополнительные подсказки для более быстрого поиска;
  • Основной параметр — значение, по которому будем выполнять поиск.

Например, команда может выглядеть вот так:

Вторая команда, которая нам очень понадобится, это menuentry. Она используется для создания пунктов меню, с помощью которых будут загружаться операционные системы и дистрибутивы linux. Синтаксис этой команды такой:

menuentry имя_пункта {команды установки переменных окружениязагрузка модулейlinux файл_ядра параметры_ядраinitrd файл_initrd}

Обычно, для нормальной загрузки операционной системы сначала необходимо установить корневой раздел, для этого, возможно, нужно загрузить некоторые модули, дальше нужно запустить ядро с нужными параметрами и добавить образ initrd если это требуется. Самый простой пример пункта меню:

Теперь давайте попробуем собрать всю информацию воедино и создадим самый просто конфигурационный файл для Grub вручную:

# Время показа меню 5 секунд

set timeout=5

# Установим разрешение экрана и укажем что это же разрешение нужно сохранять для ядра:

set gfxmode=»1280×800″
set gfxpayload=keep

# Загрузим необходимые модули для работы видео режима, нужно для использования фоновой картинки

insmod vbe
insmod gfxterm
terminal_output gfxterm

# Установка шрифта с поддержкой Unicode:

font «/boot/grub2/fonts/unicode.pf2»
loadfont unicode

# Загрузим модуль работы с jpeg и зададим фоновый рисунок:

insmod jpeg
background_image «/boot/fon.jpg»

# Установим переменные окружения для настройки цвета меню:

set menu_color_normal=red/black
set menu_color_highlight=yellow/black
set color_normal=yellow/black

menuentry «Ubuntu» {
root=(hd0,1)
linux /casper/vmlinuz boot=casper noeject noprompt splash
initrd /casper/initrd.lz
}

menuentry «OpenSUSE» {
insmod gzio
insmod part_msdos
insmod ext2
set root=’hd0,msdos5′
linux /boot/vmlinuz-4.1.31-30-default root=UUID=c52ca066-e48f-4df2-bc7e-4d885a354090 resume=/dev/sda7 splash=silent quiet showopts
initrd /boot/initrd-4.1.31-30-default
}

Теперь, когда вы знаете как примерно выглядит конфигурационный файл Grub, вы сможете разобраться с файлом, созданным автоматически. Пункты меню выводятся по порядку, поэтому чтобы поменять их местами будет достаточно поменять местами команды в файле

Программа настройки Grub — это хорошо, но также важно понимать как все работает на низком уровне

Что все это значит

Четыре первые строки в файле выполняют следующие функции.

Команда устанавливает временной промежуток, в течении которого загрузчик Grub будет ожидать действий пользователя, которые укажут ему, какой пункт меню загружать. Если он не дождется такого указания в течении установленного времени, то будет произведена загрузка пункта меню, установленного по умолчанию. А если такой не определен в конфигурационном файле, то первого по списку пункта меню. Чтобы остановить счетчик времени, достаточно нажать любую клавишу на клавиатуре.

Команда устанавливает цветовую раскраску текстового меню (в которое можно войти, нажав клавишу «Esc», если в данный момент вы находитесь в графическом меню Grub. Просто иногда бывают случаи, когда вам потребуется войти в текстовое меню загрузчика). Первая пара значений задает цвета переднего (foreground) и заднего (background) фона всего меню, а вторая пара служит для установки цветов выделенного пункта меню.

Команда указывает загрузчику Grub, где располагается графическое меню.

Команда устанавливает пункт меню для загрузки по умолчанию, при этом отсчет ведется с нуля.

Для того, чтобы улучшить слишком упрощенный фрагмент строфы в конфигурационном файле, мы добавим несколько параметров в строку .

Добавление параметра в конец этой строки позволит установленной графической теме Plymouth скрыть строки текста, появляющиеся на экране монитора при загрузке системы. Число является разрешением монитора, которое наиболее оптимально для большинства компьютеров.

Если вы намереваетесь использовать режим гибернации («спящий режим») при выключении своей машины, вам необходимо указать загрузчику Grub, где находятся данные, нужные для восстановления сессии. Такие данные хранятся на разделе подкачки (), поэтому этот раздел должен быть немного больше оперативной памяти (ОЗУ) компьютера по размеру. В этом случае режим гибернации будет выполняться без ошибок. Если, к примеру, раздел подкачки на вашем жестком диске располагается по адресу , то в конце строки необходимо добавить параметр . Мы можем указать раздел таким образом, так как Grub распознает файловые системы и записи устройств к тому моменту, когда они появятся в этом конфигурационном файле.

Установка PCLinuxOS по умолчанию предлагает три пункта меню загрузчика.

  • Первый пункт предоставляет полностью графическое меню загрузки, вплоть до окна входа в систему.
  • Второй пункт называется или каким-либо иным похожим образом. Он выполняет загрузку системы без графической заставки, что позволяет видеть все системные сообщения во время ее загрузки. Такой способ может быть полезен при неполадках в системе. Процесс загрузки можно приостановить в любой момент нажатием клавиши ScrollLock на клавиатуре.
  • Последний третий пункт называется . Фактически он также служит для контроля неполадок в системе. В этом режиме система загружается в однопользовательскую командную оболочку, внутри которой можно выполнять некоторые административные задачи, такие как проверка файловой системы или смена пароля root. Когда все необходимые задачи будут выполнены, вводим в командной строке , что вернет нас обратно к окну входа в систему.

Все три вышеназванных режима можно включить, добавив одну из перечисленных ниже команд в строку между параметром и параметром корневой раздел :

BOOT_IMAGE = linux
BOOT_IMAGE = linux-nonfb
BOOT_IMAGE = failsafe

Когда вы добавляете в конфигурационный файл Grub новый пункт меню, проверьте его работоспособность. Если система успешно загружается через этот пункт, вы можете удалить старый, но перед этим сделайте резервную копию файла так, чтобы в любой момент он был вам доступен. Если перед строкой вы поставите знак решетки , то пункт меню, в котором находится эта строка, не будет отображаться при загрузке. Grub воспринимает любую строку, начинающуюся с символа как комментарий и не выполняет ее.

Encountering the dreaded GRUB 2 boot prompt

XFS and LVM NoteSince recent versions of Fedora and even RHEL/CentOS have started using xfs and lvm by default,
it’s worth noting that these steps outlined here may need to be preceded with the necessary step to load the XFS and/or LVM module(s).

If improperly configured, GRUB 2 may fail to load and subsequently drop to a boot prompt. To address this issue, proceed as follows:

0. Load the XFS and LVM modules

insmod xfs
insmod lvm

1. List the drives which GRUB 2 sees:

grub2> ls

2. The output for a dos partition table /dev/sda with three partitons will look something like this:

(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

3. While the output for a gpt partition table /dev/sda with four partitions will look something like this:

(hd0) (hd0,gpt4) (hd0,gpt3)  (hd0,gpt2) (hd0,gpt1)

4. With this information you can now probe each partition of the drive and locate your vmlinuz and initramfs files:

ls (hd0,1)/ 

Will list the files on /dev/sda1. If this partition contains /boot, the output will show the full name of vmlinuz and initramfs.

5. Armed with the location and full name of vmlinuz and initramfs you can now boot your system.

5a. Declare your root partition:

grub> set root=(hd0,3)

5b. Declare the kernel you wish to use:

grub> linux (hd0,1)/vmlinuz-3.0.0-1.fc16.i686 root=/dev/sda3 rhgb quiet selinux=0 
# NOTE : add other kernel args if you have need of them
# NOTE : change the numbers to match your system

5c. Declare the initrd to use:

  
grub> initrd (hd0,1)/initramfs-3.0.0-1.fc16.i686.img
# NOTE : change the numbers to match your system

5d. Instruct GRUB 2 to boot the chosen files:

grub> boot

6. After boot, open a terminal.

7. Issue the grub2-mkconfig command to re-create the grub.cfg file grub2 needed to boot your system:

grub2-mkconfig -o /boot/grub2/grub.cfg

8. Issue the grub2-install command to install grub2 to your hard drive and make use of your config:

grub2-install --boot-directory=/boot /dev/sda
# Note: your drive may have another device name. Check for it with mount command output.

How does update-grub work?

When you install a Linux distribution, it (usually) asks you to install the grub boot loader.

Part of grub is installed on the MBR/ESP partition. Rest of the grub lies in /boot/grub directory of the Linux distributions.

As per its man page, update-grub works by looking into the /boot directory. All the files starting with vmlinuz- will be treated as kernels and they will get a grub menu entry. It will also add initrd lines for ramdisk images found with the same version as kernels found.

It also looks into all disk partitions for other operating systems with os-prober. If it finds other operating systems, it adds them to the grub menu.


Representational image of Grub Menu

Что представляет собой загрузочный сектор?

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

GRUB 2 и UEFI

Как установить пароль на редактирование параметров ядра?[править]

По умолчанию при загрузке любой пользователь может добавить/изменить параметры.
Этого можно избежать, если установить пароль. Проще всего сделать это в центре управления системой. Для этого потребуется пакет alterator-grub и выполнить следующие действия:

  • Зайдите в ЦУС (acc), перейдите в режим эксперта, и в разделе «Система» откройте «Загрузчик GRUB».
  • Установите флажок «Установить или сбросить пароль» и введите необходимый пароль.

Примечание: Логин/пароль (последний в хэшированном виде) записываются в файл /etc/grub.d/50_password:

#!/bin/sh
cat << EOF
set superusers="boot"
password_pbkdf2 boot grub.pbkdf2.sha512.10000.<hash>
EOF

Также для ограничения загрузки (как с изменением параметров, так и без) можно добавить в файл /etc/grub.d/40_custom строки:

set superusers="user"
password user password
GRUB_TERMINAL_OUTPUT='console'

После подобных операций следует перегенерировать конфигурацию командой grub-mkconfig -o /boot/grub/grub.cfg (либо grub-mkconfig, в зависимости от дистрибутива). В случае использования alterator-grub — это не требуется.

Быстрое исправление

Если исполнение команды grub2-install не приводит к каким-либо положительным изменениям и вы не можете загрузить дистрибутив Linux, вам придется полностью переустановить и перенастроить системный загрузчик. Для выполнения этой задачи можно воспользоваться полезной утилитой chroot, которая позволяет временно заменить корневую директорию live-окружения на корневую директорию установленной системы Linux, работоспособность которой необходимо восстановить. Вы можете использовать для этой цели Live CD любого дистрибутива Linux, на котором присутствует утилита chroot. Однако, вам следует убедиться в том, что вы используете Live CD для той же архитектуры центрального процессора, что и установленный на жестком диске дистрибутив. Таким образом, если вы желаете использовать утилиту chroot для восстановления работоспособности 64-битной установленной системы, вам понадобится Live CD для 64-битных систем.

После загрузки Live-окружения в первую очередь следует проверить разделы жесткого диска машины. Используйте команду fdisk -l для вывода списка всех разделов жесткого диска и выясните номер раздела, на котором установлен системный загрузчик GRUB 2, работоспособность которого вы желаете восстановить.

Давайте предположим, что вам нужно восстановить работоспособность системного загрузчика дистрибутива, установленного на разделе жесткого диска, который представлен файлом устройства/dev/sda5. Откройте эмулятор терминала и смонтируйте этот раздел:

sudo mount /dev/sda5 /mnt

Теперь вам придется смонтировать директории, которые должны быть доступны системному загрузчику GRUB 2 для корректного выявления других установленных на компьютере операционных систем:

$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /dev/pts /mnt/dev/pts
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys

Теперь вы можете покинуть live-окружение и перейти в окружение установленного на разделе, представленном файлом устройства /dev/sda5, дистрибутива с помощью утилиты chroot:

$ sudo chroot /mnt /bin/bash

Все готово для установки, проверки и обновления системного загрузчика GRUB 2. Как и ранее, для переустановки системного загрузчика следует использовать команду:

sudo grub2-install /dev/sda

Ввиду того, что команда grub2-install не затрагивает файл конфигурации grub.cfg, вам придется создать его вручную с помощью следующей команды:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Эта последовательность команд должна помочь исправить проблемы системного загрузчика. Теперь на вашей машине будет установлена новая копия системного загрузчика GRUB 2 со списком всех установленных на ней операционных систем и дистрибутивов. Перед тем, как перезагрузить компьютер, следует покинуть окружение chroot и отмонтировать все использованные файловые системы в следующем порядке:

$ exit
$ sudo umount /mnt/sys 
$ sudo umount /mnt/proc
$ sudo umount /mnt/dev/pts
$ sudo umount /mnt/dev 
$ sudo umount /mnt

После этого вы можете безопасно перезагрузить машину, которая должна вновь вернуться под контроль системного загрузчика GRUB 2, находящегося под вашим полным контролем!

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий