Linux зачем нужен загрузчик grub

Знакомство с загрузчиком GRUB в дистрибутивах Linux

Любой пользователь дистрибутивов Linux слышал про GRUB (граб). Он встречается и во время установки дистрибутива, и после нее, во время загрузки системы. Однако для начинающих пользователей GRUB сродне терминалу — сложно, непонятно и черт знает, как пользоваться. Страха также добавляет и тот факт, что неправильная настройка GRUB может привести к тому, что дистрибутив просто-напросто не запуститься при старте ПК. Но на канале Просто Код мы не бежим от непонятного и сложного, а пытаемся разобраться и научиться. Поэтому сегодня начнем знакомиться с GRUB и это будет первым шагом к работе с ним.

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

Немного о загрузчиках ОС

Прежде чем переходить конкретно к GRUB нужно разобраться с тем, что такое загрузчик операционной системы. Если совсем просто, то это специальное программное обеспечение, которое обеспечивает загрузку операционной системы после того, как пользователь нажал на кнопку включения на системном блоке и после того, как осуществилась начальная загрузка. Загрузчик выполняет пять простых (для понимания, а не по технической сути) действий:

  1. Позволяет пользователю выбрать операционную систему для загрузки.
  2. Приводит внутреннее оборудование компьютера в состояние, которое необходимо для старта ядра ОС.
  3. Загружает ядро системы.
  4. Формирует параметры, которые передает загружаемому ядру.
  5. Передает управление загруженному ядру

Вариантов загрузчиков множество: например для загрузки Windows XP использовался NTLDR, в Windows 7/8/10/11 стали использовать Windows Boot Manager, дистрибутивы Linux используют как-раз таки GRUB.

Швейцарский нож в мире загрузчиков

GRUB расшифровывается как GRand Unified Bootloader (унифицированный загрузчик GRand). Что же в нем такого «унифицированного» и почему GRUB называют эталоном среди загрузчиков?

Во-первых, он может загрузить большое количество операционных систем, среди которых можно назвать дистрибутивы Linux, FreeBSD, Solaris и многие другие. Во-вторых, он может передавать управление загрузкой ОС другому загрузчику. Это позволяет использовать, например, Windows 10 и Linux на одном ПК. Получается, что GRUB не сам загружает Windows, но позволяет работать их загрузчикам. При этом, тот же загрузчик Windows ответить взаимностью не может и при первой возможности с радостью «затирает» любые упоминания GRUB. Любовь зла, как говорится… И, в-третьих, GRUB позволяет пользователю при загрузке задавать произвольные параметры и передавать их ядру совместимых с загрузчиком систем для дальнейшей обработки.

Читайте также:  Linux set permission to all files

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

GRUB и Linux Mint

Давайте взглянем на этот самый загрузчик. По-умолчанию и при наличии у пользователя только одного дистрибутива загрузчик GRUB внешне никак не отображается при запуске Linux Mint. Это сделано специально, чтобы не путать/пугать начинающего пользователя. Чтобы меню загрузчика отображалось я произвел небольшие манипуляции с его конфигурационным файлом, после применил эти настройки и вот уже после перезагрузки дистрибутива на экране появилось знакомое многим опытным пользователям окно.

Меню на скриншоте позволяет выполнить весь перечень действий, про которые мы говорили выше: можно загрузить установленную Linux Mint 21.1, можно просмотреть дополнительные варианты загрузки дистрибутива или перейти в режим восстановления (очень удобно использовать этот вариант при наличии нескольких версий ядра), также можно отредактировать параметры загрузки, передав их ядру Linux.

Источник

GRUB — загрузчик системы

GRUB

GRUB (GRand Unified Bootloader 1) ) — программа-загрузчик операционных систем.
GRUB является эталонной реализацией загрузчика, соответствующего спецификации Multiboot и может загрузить любую совместимую с ней операционную систему. Среди них: Linux, FreeBSD, Solaris и многие другие. Кроме того, GRUB умеет по цепочке передавать управление другому загрузчику, что позволяет ему загружать Windows (через загрузчик NTLDR), MS -DOS, OS /2 и другие системы.
После настройки GRUB пользователь при включении компьютера видит список операционных систем, которые установлены на его компьютер и которые можно загрузить, выбрав подходящую и нажав Enter .
GRUB позволяет пользователю при загрузке задавать произвольные параметры и передавать их в ядро Multiboot-совместимой ОС для дальнейшей обработки.
GRUB — самый популярный загрузчик в мире Linux и является загрузчиком по умолчанию в большинстве известных дистрибутивов.

Здесь и далее в иных статьях под названием программы GRUB подразумевается GRUB 2, который используется в операционных системах семейства Ubuntu начиная с версии 9.10, до него использовался GRUB первой версии, сейчас известный как GRUB Legacy. GRUB 2 полностью переписан с нуля и не имеет ничего общего с GRUB Legacy, разработка которого была остановлена в пользу более совершенного и мощного GRUB.

Читайте также:  Линукс удалить повторяющиеся строки

Первые шаги

При первом сравнении GRUB со старым GRUB Legacy самым весомым различием оказывается измененная структура файлов конфигурации.

Настройка GRUB производится теперь принципиально иным способом — основным файлом конфигурации является «/boot/grub/grub.cfg«. Однако же, не торопитесь править его так, как привыкли это делать с «menu.lst» в GRUB Legacy. При внимательном прочтении мы видим в начале файла «grub.cfg» такие строки:

# # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub #

И об этом нас предупреждают не просто так. Ведь «grub.cfg» генерируется автоматически с использованием нескольких скриптов. Поэтому после следующего обновления GRUB ваш «grub.cfg» будет создан заново, и все ваши правки будут утрачены.

Кроме файла «grub.cfg», отвечающего за загрузочное меню, имеются файл «/etc/default/grub» и папка «/etc/grub.d«. Рассмотрим их подробнее.

/etc/default/grub

Данный файл содержит в себе основные настройки для GRUB. Через него, собственно, они и изменяются. Для наглядности ниже приводится примерное содержимое этого файла:

GRUB_DEFAULT=6 #GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT="2" GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entrys #GRUB_DISABLE_LINUX_RECOVERY="true"

Файл представляет из себя набор опций в понятном формате ОПЦИЯ=ЗНАЧЕНИЕ.
Наиболее часто встречающаяся потребность при настройке GRUB — изменение стандартного пункта загрузки и/или времени показа меню. Рассмотрим же, как это делается.

Изменение стандартного пункта загрузки

По умолчанию стандартный пункт (выделенный при показе меню) — верхний в списке. После установки Ubuntu она окажется наверху, а Windows, например, будет последним пунктом.

Значением «GRUB_DEFAULT» является номер пункта меню, который должен быть выбран стандартным. Чтобы выбрать другой пункт, нам нужно узнать, каким по счету он будет в списке. Есть два варианта:

Нумерация пунктов меню начинается с нуля. Значение по умолчанию — 0, поэтому и выбирается первый пункт.

Пятому сверху пункту будет соответствовать значение 4, второму — 1, первому — 0. В вышеприведенном примере установлено значение 6, то есть стандартным задан седьмой пункт меню.

Читайте также:  Очистить диск linux shred

Команда sudo grub-reboot 1 однократно выбирает второй пункт меню по-умолчанию (только для следующей загрузки),

Или же можно указать значение идентификатора (id), оно должно быть именно таким, каким мы его видим в «/boot/grub/grub.cfg«. Данный способ удобен тем, что после обновления ядра не придется изменять настройки из-за сбившейся нумерации.

Пример

Если в «grub.cfg» пункт меню выглядит так:

menuentry ‘Example GNU/Linux distribution’ —class gnu-linux —id example-gnu-linux

То значение параметра «GRUB_DEFAULT» должно указываться именно в виде:

GRUB_DEFAULT=example-gnu-linux

Ранее документацией предлагалось указывать название пункта меню загрузки (так, как он отображается в самом меню). Хотя этот способ по-прежнему работает, использовать его не рекомендуется, поскольку эти названия могут меняться, например, при обновлении ядра/версии ОС

Изменение времени отображения меню

По умолчанию меню загрузки отображается 10 секунд (при наличии других установленных ОС, если система одна — GRUB по умолчанию не отображается и сразу начинает загрузку), после чего загружается стандартный пункт, если раньше не нажат Enter или не выбран другой пункт, что останавливает таймер. За эту задержку отвечает параметр «GRUB_TIMEOUT», значение задается в секундах.

Если поставить значение «-1», то меню будет отображаться до тех пор, пока пользователь не выберет какой-либо пункт

Обратите внимание, что цифра указывается в кавычках. В нашем примере это значение — 2, то есть меню отображается две секунды.

«Скрытое» меню

В случае, если на компьютере установлена только Ubuntu, меню загрузки по умолчанию не будет отображаться, а GRUB будет загружать вас напрямую в систему. Однако же, иногда может возникнуть необходимость загрузиться с другим ядром или же запустить проверку памяти. Для этого предусмотрено «скрытое меню» за него отвечает параметр «GRUB_HIDDEN_TIMEOUT».

В случае, когда установлены другие ОС, этот параметр закомментирован (# в начале строки). Данное значение позволит приостановит загрузку на заданное количество секунд, давая пользователю возможность вызвать меню загрузки, нажав Esc .

Если значение установлено в 0, то задержки не будет, однако вызвать меню можно, удерживая при загрузке Shift

Параметр «GRUB_HIDDEN_TIMEOUT_QUIET» отвечает за отображение таймера во время паузы. Если его значение «true» таймер отображаться не будет, а со значением «false» будет.

Чтобы GRUB отображал меню со списком установленных операционных систем, без нажатия клавиш вызова меню (например Shift или Esc ) необходимо:

sudo gedit /etc/default/grub

Источник

Оцените статью
Adblock
detector