Принципиальные отличия 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
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_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
Ммм, спасибо за статью. Теперь хоть буду знать, как на родительском компе загружать по умолчанию винду, а не линь, а то все как-то лениво было искать инфу по этой теме.