База знаний по Open Source
Авторизация
Поиск по базе знаний

GRUB (GRand Unified Bootloader1) — программа-загрузчик операционных систем.

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

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

GRUB позволяет пользователю при загрузке задавать произвольные параметры и передавать их в ядро Multiboot-совместимой ОС для дальнейшей обработки.

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

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

Настройка GRUB2 производится теперь по принципиально иному принципу. первое же, что бросается в глаза – отсутствие привычного многим “/boot/grub/menu.lst”, в котором были прописаны пункты загрузки, таймаут меню и прочие настройки.

Основным файлом конфигурации стал “/boot/grub/grub.cfg”, который, впрочем, править не стоит о чем красноречиво говорит комментарий в самом начале файла:

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

То-есть “grub.cfg” генерируется автоматически с использованием нескольких скриптов. Поэтому после следующего обновления GRUB2 файл “grub.cfg” будет создан заново, и все правки будут утрачены.

Все параметры теперь хранятся в /etc/default/grub, который по умолчанию имеет следующий вид:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
#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=""
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# 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 entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Теперь файл представляет из себя набор опций в человекопонятном формате ОПЦИЯ=ЗНАЧЕНИЕ.

Вот основные опции настройки GRUB2:

  • GRUB_DEFAULT=0 – выбор загрузки по умолчанию, определяет какой пункт меню загрузки будет загружаться автоматически.
  • GRUB_HIDDEN_TIMEOUT=0 – этот параметр определяет, как долго будет отображаться пустой экран без меню.
  • GRUB_HIDDEN_TIMEOUT_QUIET=true – если установлено true, тогда меню не будет выведено, экран будет пустой. Если установлено false, тогда меню будет выведено после интервала GRUB_HIDDEN_TIMEOUT
  • GRUB_TIMEOUT=1 – время в секундах, в течении которого GRUB ждет выбора, прежде чем загрузить значение по умолчанию.
  • GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` – параметр, указывающий на название дистрибутива, которое будет отображаться в GRUB.
  • GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” – этот параметр отвечает за те параметры, с которыми запускаются ядра при загрузке. Его значение по умолчанию – «quiet splash»: происходит показ графической заставки при запуске системы без отображения какой-либо текстовой информации. Чтобы заменить графическую заставку во время загрузки на информацию о загрузке компонентов системы удалите “quiet splash”.
  • GRUB_CMDLINE_LINUX=”” – этот параметр отвечает за то, чтобы не передавались лишние параметры ядру.
  • GRUB_TERMINAL=console – включает консольный режим (по умолчанию строка закомментирована, что включает графический режим). Имеет смысл раскомментировать строку для увеличения производительности.
  • GRUB_GFXMODE=1366×768 – параметр, задающий разрешение меню.
  • GRUB_DISABLE_LINUX_UUID=true – раскомментируйте, если вы не хотите, чтобы GRUB передавал вашей системе параметр “root=UUID=xxx”.
  • GRUB_DISABLE_RECOVERY=”true” – это параметр отключает меню Grub (через Shift нельзя войти в меню Grub)
  • GRUB_INIT_TUNE=”480 440 1″ – звучит однократный сигнал перед появлением меню.

После изменений в файле /etc/default/grub необходимо обновить GRUB:

sudo update-grub

Папка  /etc/grub.d содержит скрипты, которые используются при создании “grub.cfg”. При обновлении GRUB2 они находят все установленные на компьютере системы и ядра и формируют в “grub.cfg” меню загрузки, которое мы и видим. Два основных скрипта – “10_linux” и “30_os-prober” отвечают за поиск linux-ядер и остальных ОС на других дисках и разделах.

Файл “40_custom” позволяет добавлять свои пункты загрузки. Это может быть полезно если, например, необходимо добавить какие-то особые варианты загрузки системы.