Начальный загрузчик grub — полное руководство

Загрузка в Live-режиме

Теперь нужно загрузиться с созданного диска или флешки.

Чтобы это сделать сначала нужно в BIOS выбрать приоритет загрузки с CD/DVD или с USB (если вы используете флешку).

На современных компьютерах, где используется BIOS/UEFI, для входа в BIOS нужно при включении компьютера удерживать специальную клавишу. У разных производителей клавиша может быть разной. Обычно это: F2, Del, F10, Esc, F11 или F3.

На старых компьютерах, где используется классический BIOS, чтобы войти в BIOS нужно при загрузке компьютера, в самом начале, когда появляется логотип материнской платы, нажать специальную клавишу. Для разных материнских плат клавиша может быть разной. Обычно это одна из клавиш: Del, F1, F2, F8, F10 или какая-нибудь другая, или даже сочетание клавиш. Подробности: Настройка BIOS для загрузки с CD/DVD-диска или с USB-носителя

GRUB 2

GRUB 2 (GRand Unified Bootloader / большой единый загрузчик) – это кроссплатформенный загрузчик операционных систем.

При старте системы, когда запускается GRUB 2 вы видите следующее меню:

GRUB 2 Меню для Debian 10 GRUB 2 Меню для Ubuntu 20.04

Хотя, по умолчанию в Ubuntu 20.04 вы не увидите это меню, так как система загружается сразу, не показывая его в отличие от Debian 10. А в Debian 10 по умолчанию это меню появляется на 5 секунд.

В обоих системах управление осуществляется следующими клавишами:

  • Стрелки «вверх/вниз» – переход по пунктам меню;
  • «Enter» – загрузка выбранного пункта;
  • «e» – редактирование выбранного пункта;
  • «c» – запуск командной строки.

Добавление нового пункта в меню Grub

Я собираюсь добавить в файл новую stanza (пункт меню) в самое начало, то есть между строками, первой из которых является , а вторая начинается как :

title kde4
kernel (hd0,0)/boot/mykernel root=LABEL=kde4
initrd (hd0,0)/boot/myinitrd

При добавлении нового пункта меню (stanza) необходимо оставлять перед строфой и после нее одну пустую строку, так как иначе загрузчик Grub не будет знать, где заканчивается одна запись и начинается другая.

После того, как все данные будут введены, нажимаем сочетание клавиш Ctrl+X, при этом редактор nano спросит, сохранить ли изменения в файле. Подтверждаем сохранение и выходим.

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

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

Как работает GRUB?

Загрузчик GRUB – это GNU-проект, разработанный специально для использования в качестве загрузчика по-умолчанию для систем UNIX и Linux. Для подавляющего числа дистрибутивов GRUB давно поставляется «из коробки». Его главной задачей является работа со списком (который подготавливается заранее вручную или автоматически) вариантов загрузки, из которого выбирается нужный для последующей загрузки системного ядра с определёнными для выбранного варианта параметрами.

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

GRUB читает конфигурацию загрузки при каждом запуске компьютера. Сами файлы конфигурации (в зависимости от используемой версии и дистрибутива) следующие: /boot/grub/menu.lst, /boot/grub/grub.conf или /boot/grub/grub.cfg для версии 2. В системах Red Hat используются файлы grub.conf, а для Ubuntu, SUSE и Solaris – menu.lst. Эти файлы имеют незначительные различия в синтаксисе конфигурации. Для примера, содержимое grub.conf может быть таким:

default=0
timeout=10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Enterprise Linux Server (2.6.18-92.1.10.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.1.10.el5 ro root=LABEL=/

В этом примере конфигурируется загрузка всего одной системы Red Hat, которая (согласно default=0) будет загружена автоматически по прошествии 10 секунд (timeout=10), если не будет нажата какая-либо клавиша на клавиатуре. При этом корневая файловая система должна искаться, согласно параметру (hd0,0) команды root, на первом разделе первого жесткого диска.

Для поиска файла ядра задаётся путь относительно загрузочного раздела, монтируемого в каталог /boot. Для приведённого примера ядро будет загружаться из файла /vmlinuz-2.6.18-92.1.10.el5. Затем загрузчик выведет на экран заставку из файла /boot/grub/splash.xpm.gz, находящегося, как указано в команде splashimage, на разделе (hd0,0).

Настраивать параметры загрузки можно и в интерактивном режиме, используя интерфейс командной строки. Для этого нужно на экране меню загрузки нажать клавишу «c».

После чего мы попадем в командную строку. В которой уже можно выполнять команды.

Таким образом с помощью командной строки возможны все те же действия, что выполняются по инструкциям из файлов конфигурации. Как можно видеть, для этого загрузчик предоставляет целый набор команд со своими параметрами. Это бывает очень полезным, когда необходимо загружать системы, не имеющие соответствующей конфигурации в конфигурационных файлах или когда нужно восстановить «сломанную» конфигурацию. Для ознакомления со списком самых главных команд используется клавиша <Tab> в режиме работы командной строки загрузчика. В следующей таблице представлены наиболее часто используемые команды GRUB:

Команда Назначение
reboot Перезагружает систему
find Производит поиск файла во всех смонтированных логических разделах
root Задаёт корневое устройство (логический раздел)
kernel Загружает ядро системы с корневого устройства
help Выводит интерактивную справку по команде
boot Загружает систему с указанного образа ядра

Способ 1

Перво-наперво узнаем на каком разделе у нас установлена система (если мы этого не знаем заранее). На данном этапе ничего сложного и получить информацию мы можем из вывода команды:

fdisk -l

Для дальнейшей работы нам понадобится корневой раздел (root).Смонтируем его:

mount /dev/sda1 /mntmount /dev/sda2 /mnt/boot

Также монтируем папку нашей live-системы как нашего root-раздела:

mount --bind /dev /mnt/dev

То же самое с папкой как root-раздела:

mount --bind /proc /mnt/proc

Теперь chroot-имся в примонтированный каталог:(в конце указываем интерпретатор, в моем случае по умолчанию zsh)

chroot /mnt /bin/bash

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

Установим GRUB2

grub-install /dev/sda

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

grub-install --recheck /dev/sda

Обратите внимание, что мы устанавливаем загрузчик на диск (sda), а не на раздел (sda1, sda2, etc)

После успешной установки выходим из chroot командой и демонтируем все диски и папки:

umount /mnt/devumount /mnt/procumount /mnt/bootumount /mnt

Перезагружаемся и выполняем загрузку с нашего диска (sda).

Мультисистемная конфигурация

Энтузиасты очень любят держать на одной машине несколько разных ОС. GRUB хоть и был разработан не для энтузиастов и экспериментов. Однако он универсален и мультисистемную загрузку обеспечивает в полной мере. Для того, чтобы GRUB мог работать с несколькими загрузочными конфигурациями и находить на жёстких дисках (или других устройствах хранения) разные ОС, должна быть задана соответствующая мультисистемная конфигурация. Она подобна тому примеру, что уже был рассмотрен в предыдущей главе, но только теперь необходимо иметь отдельные наборы инструкций для каждой из систем.

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

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

Конфигурация GRUB для загрузки Windows-систем несколько отличается от Linux. Так, например конфигурация запуска Windows XP может быть такой:

title Windows 10
rootnoverify (hd0,0)
chainloader +1

Здесь команда chainloader предназначена для передачи управления Windows-загрузчику, расположенному в первом секторе (+1) первого раздела первого жёсткого диска (hd0,0). А команда rootnoverify указывает GRUB, что монтировать раздел (hd0,0) не нужно, т. к. должна загружаться «неродная» система Windows. Пример мультисистемной конфигурации:

default=0
timeout=5
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
hiddenmenu
title Windows 10
rootnoverify (hd0,0)
chainloader +1
title Red Hat
root (hd0,1)
kernel /vmlinuz

В этом примере ОС Windows должна будет загружаться по-умолчанию (default=0). Через 5 секунд (в течение которых не нажата какая-либо клавиша на клавиатуре) с первого раздела первого жёсткого диска. А ОС Red Hat – со второго раздела того же диска.

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

Добавив новый вариант загрузки для нового ядра. Которое устанавливается в систему независимо от уже имеющихся в ней других ядер. Поэтому ничего удивительного в том, что пунктов меню, отражающих варианты загрузки. Cо временем (после каждого обновления ядра) становится всё больше и больше. Это довольно удобно, т. к. в случае, если с новым ядром система стала работать некорректно. Или вовсе «сломалась» – есть возможность использовать старое ядро. Воспользовавшись соответствующим пунктом меню загрузки GRUB.

Настройка Grub через конфигурационные файлы

Сразу нужно сказать, что существует два способа настройки Grub Ubuntu, через конфигурационные файлы. Первый — через конфигурационный файл утилиты grub-mkconfig, который позволяет задать общие параметры для загрузчика и ручное редактирование /boot/grub/grub.cfg.

Первый — рекомендованный, и с помощью него можно настроить большинство параметров, в этом случае настройки не собьются, когда вы обновите ядро или загрузчик. Второй вариант еще более гибкий, но после любого обновления вы потеряете свои настройки. Так что то что можно настроить через /etc/default/grub настраиваем через него, все остальное — через /boot/grub/grub.cfg. Сначала рассмотрим первый вариант.

Настройка Grub через /etc/default/grub

Как я уже сказал, настройка загрузчика через файл /etc/default/grub, на основе которого будет автоматически создан /boot/grub/grub.cfg более желательна. Давайте рассмотрим параметры, которые вы можете здесь настроить.

  • GRUB_DEFAULT — указывает какой пункт нужно загружать по умолчанию. Может быть указан номер, или полное название или же строка saved, которая значит, что нужно загрузить пункт, указанный с помощью grub-reboot;
  • GRUB_SAVEDEFAULT — загружать последнюю использованную запись по умолчанию;
  • GRUB_HIDDEN_TIMEOUT — сколько секунд ждать перед тем, как вывести меню;
  • GRUB_HIDDEN_TIMEOUT_QUIET — если установлено true, то меню не будет показано;
  • GRUB_TIMEOUT — сколько секунд будет показано меню;
  • GRUB_CMDLINE_LINUX — добавить опции ядра для всех ядер, как обычных, так и режима восстановления;
  • GRUB_CMDLINE_LINUX_DEFAULT — добавить опции ядра только для обычных ядер;
  • GRUB_CMDLINE_LINUX_RECOVERY — опции ядра, только для режима восстановления;
  • GRUB_BADRAM — указать адреса оперативной памяти, которые не нужно использовать;
  • GRUB_TERMINAL — модуль терминала для Grub. Можно использовать console, только для текстового режима или gfxterm с поддержкой графики;
  • GRUB_GFXMODE — разрешение экрана в Grub, лучшие использовать auto, чтобы система выбрала сама то что ей нужно.
  • GRUB_DISABLE_RECOVERY — не включать в меню пункты восстановления;
  • GRUB_DISABLE_OS_PROBER — не искать другие операционные системы;
  • GRUB_BACKGROUND — адрес картинки для фона, должна находиться в той же папке что и файлы grub;
  • GRUB_THEME — устанавливает тему Grub.

Например, можно использовать такую конфигурацию:

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

Своя картинка в меню

Чтобы украсить меню GRUB 2 можно на задний фон поместить какую-нибудь картинку. Для этого нужно положить файл картинки в /boot/grub и выполнить команду update-grub2. Файл должен быть обязательно в формате .png.

$ sudo cp ./linux2.png /boot/grub/

$ sudo update-grub2
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found background image: linux2.png
Found linux image: /boot/vmlinuz-5.4.0-90-generic
Found initrd image: /boot/initrd.img-5.4.0-90-generic
done

И после перезагрузки системы увидим нашу картинку:

$ sudo reboot

GRUB 2 меню с картинкой

Через терминал с загрузочного носителя

Для этого вам потребуется загрузочная флешка либо диск с записанным дистрибутивом Linux. В идеальном варианте он должен быть аналогичным системе, установленной на жёсткий диск. Но если дистрибутив — это не самый важный момент, то разрядность должна совпадать в любом случае. Иначе это чревато ещё большими последствиями, в результате которых уже точно придётся всё переустанавливать.

  1. Вставьте флешку или диск в разъём компьютера, после чего в качестве приоритетного для загрузки. Необходимая настройка находится в разделе Boot Device Priority либо First Boot Device. Чтобы запустить BIOS, при включении нажмите нужную кнопку или их комбинацию на клавиатуре. Наиболее популярными вариантами являются F2, Del, Shift + F2, F10. Чтобы не разбираться с БИОСом, можно просто нажать F11 или F12 и выбрать носитель из предложенного списка.
  2. Далее нужно выяснить, на каком разделе винчестера инсталлирована система, а какой указан в качестве загрузчика. Для этого нужно запустить терминал (аналог командной строки Windows), найдя его в меню приложений либо же нажав комбинацию клавиш Ctrl + Alt + T, либо Alt + F2. В открывшемся окошке вам нужно будет впечатать команду sudo fdisk -l. Сразу же утилита просканирует все разделы диска и отобразит информацию о каждом из них. Будет показана даже информация о других установленных на компьютер операционных системах. Вы сможете узнать название раздела, его расположение, размер, а также тип его файловой системы. При условии, что при установке Ubuntu вы совершали разметку вручную, вы без проблем поймёте, какой из разделов является загрузочным, а какой — корневым. При автоматической разметке ориентируйтесь на название Linux. Именно он и будет корнем вашей системы. Имя раздела обычно состоит из аббревиатуры sdc либо sda и цифры с порядковым номером.
  3. Далее нужно выполнить монтирование корневой файловой системы в папку /mnt. В этом вам поможет команда sudo mount /dev/sda1 /mnt, где вместо sda нужно прописать название вашего раздела.

Начиная с этого этапа, восстанавливать Grub в Linux возможно двумя методами.

Способ 1

  1. Введите команду восстановления загрузчика: sudo Grub-install -root-directory=/mnt /dev/sda.
  2. Перезагрузите Компьютер при помощи команды sudo reboot. В результате должно появиться меню выбора ОС.
  3. Если в этом меню отображается устаревшая информация, обновите загрузочную запись MBR. Для этого запустите Linux в обычном режиме, откройте терминал и используйте команду sudo update-Grub. Если это не помогает, примените sudo update-Grub —output=/mnt/boot/Grub/Grub.cfg, а затем повторите предыдущую.
  4. Ещё раз перезапустите компьютер.

Способ 2.

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

Далее вам понадобится запустить оболочку chroot. Для этого в терминале добавьте chroot /mnt /bin/bash

Первый параметр обращает внимание на корневой каталог, а второй — на специальную оболочку для преобразования команд юзера.
Далее необходимо применить команды, чтобы попасть в Ubuntu и пользоваться практически всеми её приложениями, кроме сервисов и графического интерфейса:

source /etc/profile.

  1. Выполните перезагрузку через reboot.

Восстановление через терминал

Windows не дружит с Linux, поэтому если вы ставите систему от Microsoft после Ubuntu, Mint 17 или другой линуксовской сборки, то будьте готовы к тому, что загрузчик затрется. Чтобы не теряться в этой ситуации, распечатайте инструкцию и храните её возле компьютера.

После перезаписи загрузчика необходимо перезагрузить компьютер, используйте команду «sudo reboot». После перезагрузки должно появиться окно выбора операционной системы. Если GRUB был перезаписан в результате установки новой версии Windows, но в окне выбора системы продолжает отображаться старая версия, то нужно выполнить обновление загрузочной записи. Для этого загрузитесь в Ubuntu и выполните в терминале команду «sudo update-grub».

Способы инсталляции загрузчика

Установка GRUB может быть произведена не только в MBR. По желанию, загрузчик можно расположить в любом загрузочном секторе абсолютно любого жёсткого диска. Несмотря на то, что бывают ситуации, когда такое решение оказывается неоправданным, в перечисленных ниже случаях, установка GRUB в другой раздел весьма упрощает задачу юзера.

Прибегнуть к GRUB install можно в том случае, если запуск загрузчика осуществляется посредством аналогичного устройства Windows. Также решение будет целесообразным, если на компьютере установлено несколько вариантов ОС Linux и ранее инсталлированный GRUB пользователь не собирается менять на другой загрузчик.

Предпочтительнее для оптимизации процесса выбирать системный раздел Linux. Иными словами, если операционная система находится в /dev/sda7, для правильной установки, пользователь должен использовать нижеприведённые команды. Главным различием установки GRUB в MBR или системный раздел является необходимость указать в setup вместо hd0 выбранный раздел.

Прежде чем осуществить GRUB install, следует учесть одну особенность некоторых файловых систем, так как иногда загрузочные сектора раздела не могут быть использованы загрузчиком или иным типовым приложением. В частности, одной из таких систем является XFS — инсталлированный в её загрузочный сектор GRUB, попросту разрушит всю файловую систему.

Скачивание Arch Linux ISO и создание USB

Если вам нужно переустановить Grub в Arch Linux, вам понадобится установочный ISO на USB. Если вы потеряли исходный установочный ISO-файл, вам необходимо загрузить ISO-образ и создать новый загрузочный USB-накопитель.

Примечание: если у вас все еще есть исходный установщик Arch Linux USB, вы можете пропустить этот раздел руководства.

Загрузив файл ISO, перейдите на Etcher.io и скачайте последнюю версию приложения. Etcher является кроссплатформенным и работает в Windows, Mac OS и любой ОС Linux.

После загрузки Etcher откройте его и следуйте пошаговым инструкциям ниже, чтобы создать новый файл ISO.

Шаг 1: Найдите кнопку «Flash из файла» и щелкните по ней мышью. Когда вы выбираете кнопку «Flash from file», Etcher откроет окно файлового браузера. В этом окне найдите файл ISO Arch Linux и выберите его, чтобы добавить в приложение.

Шаг 2. Вставьте USB-накопитель в USB-порт компьютера. Вставив его, нажмите кнопку «Выбрать цель» и откройте область выбора устройства. Затем используйте его, чтобы щелкнуть USB-накопитель, который вы будете использовать для установки Arch Linux ISO.

Шаг 3. Найдите «Вспышка!» кнопку и щелкните по ней мышью. При нажатии на «Вспышка!» Нажмите кнопку, Etcher начнет записывать ISO-файл Arch Linux на USB-накопитель.

Когда перепрошивка будет завершена, отсоедините USB от запасного ПК и подключите его к вашей системе Arch Linux. Затем загрузитесь в BIOS Arch PC и настройте его для загрузки с USB.

По умолчанию: GRUB2

Emerge

Если используется старая материнская плата, BIOS которой поддерживает только таблицу разделов MBR, для установки GRUB не нужно никаких дополнительных настроек:

Заметка для пользователей UEFI: запущенная команда выведет включенные значения в переменной GRUB_PLATFORMS, перед компиляцией. Если используется более новая UEFI-совместимая материнская плата, пользователям сперва нужно убедиться, что включено (обычно это уже сделано по умолчанию). Если это не так, добавьте в файл /etc/portage/make.conf до компиляции GRUB2, что позволит собрать пакет с поддержкой EFI:

Если GRUB2 был каким-то образом был установлен до включения , то добавьте строку (из примера выше) в make.conf, после чего повторно переопределите зависимости для для набора пакетов world с помощью emerge :

GRUB2 теперь установлен в системе, но еще не активирован.

Установка GRUB2 на диск

Далее установим необходимые для GRUB2 файлы в каталог /boot/grub/ с помощью команды grub-install. Если предположить, что первый диском (тот, с которого будет загружаться система) является /dev/sda, то одна из следующих команд сделает это:

Когда используется BIOS:

Когда используется UEFI:

ВажноУбедитесь, что системный раздел EFI был смонтирован перед запуском grub-install. grub-install может установить файл GRUB EFI (grubx64.efi) в неправильном каталоге без каких-либо сообщений, о том, что использовался неправильный каталог

ЗаметкаИзмените параметр на корневой каталог системного раздела EFI. Это необходимо, если раздел /boot не был отформатирован как FAT.

ВажноЕсли grub_install вернёт ошибку , необходимо перемонтировать специальную точку монтирования efivars в режим чтения-записи:

Некоторые производители материнских плат поддерживают только каталог /efi/boot/ для расположения файла .EFI в системном разделе EFI (ESP). Установщик GRUB может выполнить эту операцию автоматически, если использовать параметр . Убедитесь, что ESP смонтирован до запуска следующих команд. Предполагая, что ESP смонтирован в /boot (как было предложено ранее), выполните:

Это создает каталог по умолчанию, определенный спецификацией UEFI, а затем скопирует файл grubx64.efi в каталог EFI «по умолчанию», определенный той же спецификацией.

Настройка

Далее, нужно сгенерировать конфигурационный файл GRUB2 на основе настроек пользователя, указанных в файле /etc/default/grub и сценариях /etc/grub.d. В большинстве случаев ничего не нужно настраивать, так как GRUB2 автоматически определяет, какое ядро есть для загрузки (самый высокий приоритет у /boot/) и какая файловая система у rootfs. Здесь также можно добавить параметры ядра в /etc/default/grub, используя переменную GRUB_CMDLINE_LINUX.

Для создания окончательной конфигурации GRUB2, запустите команду grub-mkconfig:

Generating grub.cfg ...
Found linux image: /boot/vmlinuz-4.9.16-gentoo
Found initrd image: /boot/initramfs-genkernel-amd64-4.9.16-gentoo
done

Вывод команды должен содержать по крайней мере один образ Linux, так как он необходим для загрузки системы. Если используется initramfs или ядро создавалось с помощью genkernel, также должен быть указан правильный образ initrd. Если это не так, перейдите в /boot/ и проверьте содержимое, используя команду ls. Если файлы действительно отсутствуют, вернитесь к инструкции по настройке и установке ядра.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: