Настройка GRUB2


Дата: 02 ноября 2010





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

Принципиальные отличия GRUB1 от GRUB2
В первой версии GRUB все настройки и пункты загрузки хранились в простом файле /boot/grub/menu.lst, но в GRUB2 этого файла просто не существует. Однако имеется файл /boot/grub/grub.cfg и он действительно очень напоминает menu.lst, но редактировать его не рекомендуется. Конечно, никто не запрещает этого делать, но проблема в том, что после обновления меню загрузчика этот файл создаться заново, и ваши изменения исчезнут. Для решения этой проблемы нужно работать с другими файлами настройки, которые, в итоге, и создают файл grub.cfg.

Обновление загрузочного меню и применение новых настроек
Допустим вы собрали новое ядро и вам нужно, чтобы оно прописалось в меню загрузчика или вы просто изменили настройки GRUB2 и хотите, чтобы они вступили в силу. Для этого используется команда (от суперпользователя):
update-grub
В ходе выполнения этой команды, обновляется файл /boot/grub/grub.cfg, в который вносятся новые пункты меню или (и) настройки. В процессе выполнения этой команды также в терминале вы увидите найденные операционные системы и ядра.
Например, вот ход выполнения обновления в моей системе:
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.35-19-generic
Found initrd image: /boot/initrd.img-2.6.35-19-generic
Found linux image: /boot/vmlinuz-2.6.32-25-generic
Found initrd image: /boot/initrd.img-2.6.32-25-generic
Found linux image: /boot/vmlinuz-2.6.32-21-generic
Found initrd image: /boot/initrd.img-2.6.32-21-generic
Found memtest86+ image: /boot/memtest86+.bin
done

Это означает, что теперь у меня в меню загрузки будет дистрибутив с различными версиями ядра linux и утилита memtest для проверки оперативной памяти.

/etc/default/grub - основные настройки GRUB2
В файле /etc/default/grub хранятся основные настройки GRUB2: пункт загрузки по умолчанию, время отображения меню загрузчика (при включении), параметры загрузки ядра по умолчанию, название дистрибутива, разрешение меню GRUB2. Есть ещё несколько параметров, но они вряд ли вам понадобятся. Давайте рассмотрим как изменять все эти параметры непосредственно в /etc/default/grub. Для понимания структуры файла, я приведу листинг этого файла в моей системе.
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT="0"
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
#GRUB_TERMINAL=console
#GRUB_GFXMODE=640x480

Рассмотрим каждую стоку, содержащую значение параметра (переменной), отдельно.
GRUB_DEFAULT=0 - этот параметр указывает на строку загрузочного меню по умолчанию. Например, значение 0 указывает на самую верхнею строку, а значение 1 на вторую строку сверху. Если вы хотите чтобы по умолчанию выбирался не верхняя строка, то укажите его номер, считая, что верхняя строка - 0. Указанная строка будет выделена в меню загрузчика и будет автоматически загружена, если пользователь не выберет другую строку.
GRUB_HIDDEN_TIMEOUT=0 - параметр, указывающий на время отображения меню выбора загрузки, если на компьютере установлена одна операционная система. Значение указывается в секундах. Если вам нужно будет попасть в меню, то вы должны указать положительное значение, например 5, и при старте компьютера нажать "escape" для входа в меню GRUB2 (где можно будет выбрать версию ядра или запустить memtest).
GRUB_TIMEOUT="0" - параметр, указывающий время отображения меню загрузчика. Значение указываются в секундах и число должно быть заключено в двойные кавычки. Отрицательное значение отключит таймер полностью и меню будет "висеть" пока пользователь вручную не выберет пункт загрузки. При положительном значении, меню GRUB будет ждать действий пользователя заданное время, а если действия не будет, то автоматически будет загружен пункт меню по умолчанию.
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` - параметр, указывающий на название дистрибутива, которое будет отображаться в GRUB. Как видим из данного значения, будет запущена команда lsb_release -is в результате чего получим название дистрибутива, а при неудачном выполнении выведется слово "Debian". Чтобы изменить значение пропишите свою строку, например echo MyBestLinux (echo - команда bash, указывающая, что нужно вывести строку). Обратите внимание, что параметр указывается в обратных одинарных кавычках.
GRUB_CMDLINE_LINUX_DEFAULT="" и GRUB_CMDLINE_LINUX="" - параметры, которые нужно передать ядру. Если оставить пустым как у меня, то при загрузке будут выводится все сообщения ядра, а splash (заставка загрузки) включена не будет. В кавычках можете передать нужные вам параметры ядру, например GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
#GRUB_TERMINAL=console - включает консольный режим (по умолчанию строка закомментирована, что включает графический режим). Имеет смысл раскомментировать строку для увеличения производительности.
#GRUB_GFXMODE=640x480 - параметр, задающий разрешение меню. Напомню, что список доступных режимов можно узнать командой GRUB vbeinfo

/etc/grub.d/ - скрипты, формирующие grub.cfg
Довольно сложные shell скрипты настройки GRUB2 находятся в папке /etc/grub.d/ Нужно быть довольно опытном программистом и знать язык программирования shell чтобы разобраться в этих скриптах и изменять их. К счастью это вряд ли может понадобиться. В этой статье я не стану рассматривать эти скрипты - они слишком сложны. Тем более все основные настройки можно выполнить без них, а обычному пользователю вряд ли нужно будет углубляться в работу скриптов, формирующих grub.cfg. Если все же я в них разберусь, то это будет тема отдельной статьи, так сказать для продвинутых пользователей. Однако некоторые файлы мы рассмотрим в следующих статьях.

В следующей статье я напишу о том, как изменить внешний вид меню GRUB2.

Смотреть также:
Настройка внешнего вида меню GRUB 2
Полезные команды терминала GRUB2
Быстрое восстановление GRUB 2

Комментарии:
Автор: Сергей,   дата: 02 ноября 2010   18:00:29
Ммм, спасибо за статью. Теперь хоть буду знать, как на родительском компе загружать по умолчанию винду, а не линь, а то все как-то лениво было искать инфу по этой теме.
Автор: Дядя Вася,   дата: 03 ноября 2010   20:13:33
Что ещё за "скрипты bash" и "язык bash"?!

Это называется "shell-скрипты" и "язык програмирования Unix shell", соответственно. Поправьте.

Что касается "очень сложны", то это тоже 50/50. У скрипта очень простая политика: он должен написать на стандартный вывод нечто, пригодное для вставления в /boot/grub/grub.cfg, так что простейший скрипт для помещения, например, нужной опции в меню груба выглядит не сложнее, чем

#!/bin/sh
echo <<EOF
блаблабла
блаблабла
EOF
Автор: Subsanek,   дата: 03 ноября 2010   23:20:15
Спасибо, поправил.
Автор: Seerg,   дата: 16 марта 2011   11:39:37
а вот есть проблемка делаю update-grub отрабатывает без ошибок но изменений никаких не происходит где рыть?
Автор: Subsanek,   дата: 16 марта 2011   13:49:43
Seerg, либо нет изменений на самом деле, либо нужно отредактировать скрипты вручную.
Автор: Seerg,   дата: 16 марта 2011   15:49:47
в том и дело провожу редактирование вручную, потом делаю update-grub и никаких изменений grub 1,97
Автор: Subsanek,   дата: 16 марта 2011   16:22:58
Seerg, если вы редактируете непосредственно grub.cfg, то после update-grub он пересоздаётся.
Автор: Seerg,   дата: 21 марта 2011   13:52:29
о том и речь он пересоздается без учета внесенных изменений
Автор: Subsanek,   дата: 28 марта 2011   15:24:39
В файле об этом предупреждается:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
Автор: 777,   дата: 19 июня 2011   10:26:43
берите

Вносим изменения БЕЗ КАВЫЧЕК

http://www.ubuntologia.ru/grub2-settings-file
Автор: Dexel,   дата: 12 декабря 2012   07:33:32
Подскажите, а если не работает update-grub?
Выдаёт следующее:
GRUB >= 2.00 has been unpacked but not yet configured.
grub-mkconfig will not work until the upgrade is complete.
It should run later as part of configuring the new GRUB packages.

Чем лечить?
Автор: Subsanek,   дата: 18 февраля 2013   11:10:02
Dexel, попробуйте переустановить GRUB 2 (apt-get purge grub-pc и apt-get install grub-pc).
Автор: Scrabby,   дата: 14 августа 2013   15:09:22
Помогите настроить GRUB в Kali Linux
из-за неумелости изменил настройки.теперь не груиться графический интерфейс.Как вернуть default в Kali Linux
Автор: Subsanek,   дата: 06 сентября 2013   20:46:49
Scrabby, попробуйте запустить update-grub.
Автор: Дмитрий,   дата: 12 июня 2016   20:04:41
Написано невменяемо и невнятно.Сожалею о потраченном времени




 
Добавить комментарий:
Имя:*
e-mail:
Комментарий:*
Введите число 28*


Архив статей:
Апрель 2016
Март 2016
Октябрь 2013
Сентябрь 2013
Май 2013
Март 2013
Ноябрь 2012
Июль 2012
Июнь 2012
Апрель 2012
Март 2012
Февраль 2012
Апрель 2011
Март 2011
Февраль 2011
Январь 2011
Декабрь 2010
Ноябрь 2010
Октябрь 2010
Сентябрь 2010
Август 2010
Июль 2010
Июнь 2010
Май 2010
Апрель 2010
Март 2010

Случайные:
gnome-globalmenu или глобальное меню, как в MacOS

K3b vs NeroLinux 4 или чем писать CD,DVD,Blu-ray в linux

Настройка внешнего вида меню GRUB 2

Зверополис (Zootopia) — милый кадр (тестовый пост)

Sblog будет переписан на .NET

Книги о Linux - Часть 2 "Для незнакомых с Linux" (12 книг)



Узнать сколько стоит эвакуатор в Москве с помощью калькулятора на сайте Avto-SOS.

Коллеги:    все
 Linux для всех

Наши баннеры:
linuxnow.ru
linuxnow.ru
Установить баннер