Привет тебе, гость читающий эту заметку!
Сегодня в данной мини-статье хочу немного осветить в русскоязычной и более очеловеченной форме вопрос быстрой юстировки нового загрузчика для Unix-систем — GRUB2.
Как обычно, сообщество программистов-энтузиастов, решило порадовать пользователей своей продукции и выпустить новую, более интересную головоломку для домашних энтузиастов-исследователей. Вроде бы ничего нового не случилось, однако, как это часто водится в OSS-среде, выход новой версии старого продукта означает на практике мутацию оного в новую форму с новым обликом и повадками. Не прошла эта традиция и мимо всеми любимого и удобного загрузчика операционных систем — GRUB. Теперь, этот скромный трудяга, проживающий в укромной части жесткого диска компьютера получил к своему названию номер «2», а с ним и кучу нововведений. О некоторых из них я и хочу упомянуть ниже, дабы волосы у некоторых из его почитателей были шелковисты, а нервная система избавлена от порции новых ощущений, не столь полезных в наше время глобализации и бешеных ритмов эволюции 🙂
Собственно о чем хотелось бы сказать прежде всего, так это о таких вещах, как выбор ОС по-умолчанию, задать таймаут для меню GRUB2 при старте системы и все это сохранить в конфигурации загрузчика.
Опишу здесь свою ситуацию.
На мое компьютере уже далеко не первый год проживает две (в основном) операционные системы: Windows 7 и соседка по этажу Fedora Linux. Вот последняя как раз недавно была подвержена очередному стресс-тесту ввиде операции под названием UPGRADE.
Как результат: версия ОС сменилась с 14 сразу на 16, вместе с этим ядро на версию 3.2.2-1 (!), а загрузчик на GRUB2. Gnome3 и KDE4 в новой реинкарнации достойно отдельной статьи с деферамбами, потому не будем сейчас затрагивать этих монстров, оставив отдельную полку для матов и благодарностей.
Так вот, у меня две ОС, которые загрузчиком были успешно определены и выведены в новый файл конфигурации, который теперь находится по такому адресу: /boot/grub2/grub.cfg .
Только не спешите сразу его редактировать, — об этом также предупреждает и комментарий внутри файла, содержимое которого я привожу ниже:
# # DO NOT EDIT THIS FILE # # It is automatically generated by grub2-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub #### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then load_env fi set default=»${saved_entry}» if [ «${prev_saved_entry}» ]; then set saved_entry=»${prev_saved_entry}» save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fifunction savedefault { if [ -z «${boot_once}» ]; then saved_entry=»${chosen}» save_env saved_entry fi } function load_video { set timeout=2 ### BEGIN /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/20_linux_xen ### ### BEGIN /etc/grub.d/30_os-prober ### chainloader +1 ### BEGIN /etc/grub.d/40_custom ### ### BEGIN /etc/grub.d/41_custom ### ### BEGIN /etc/grub.d/90_persistent ### |
Как видно по тексту, файл конфигурации теперь больше напоминает скорее скрипт на bash, нежели набор опций, как это было раньше в первой версии GRUB, а все изменения в файле производятся утилитой входящей в состав нового GRUB2 — grub2-mkconfig.
1. Выбираем ОС-поумолчанию.
Для этого сначала смотрим, а какие собственно ОС у нас имеются. Делается это примерно так: запускаем окно терминала (например Xterm), а в нем логинимся как root.
su -l
теперь даем следующую команду:
grep menuentry /boot/grub2/grub.cfg
У меня результат такой:
menuentry ‘Fedora Linux, with Linux 3.2.2-1.fc16.x86_64’ —class fedora —class gnu-linux —class gnu —class os { menuentry «Windows 7 (loader) (on /dev/sda1)» —class windows —class os { |
Теперь посмотрим, что же выбрано в GRUB2 по-умолчанию:
grub2-editenv list
мой результат:
saved_entry=Fedora Linux, with Linux 3.2.2-1.fc16.x86_64 |
Признаться, при всех теплых чувствах к этой ОС, в настоящий момент я предпочитаю, чтобы по-умолчанию загружалась Windows, т.к. именно она на сегодняшний день является моим основным местом обитания в домашних уловиях. Значит надо так и сделать. Делаем:
grub2-set-default «Windows 7 (loader) (on /dev/sda1)»
проверяем:
grub2-editenv list
что у нас вышло:
saved_entry=Windows 7 (loader) (on /dev/sda1) |
2. Смена таймаута.
Теперь все по плану, еще нужно изменить время ожидания загрузчика. Приступаем:
vi /etc/default/grub
Клавиатура:
«i»
здесь изменяем значение GRUB_TIMEOUT с 5 на нужное, — я поставил 2:
GRUB_TIMEOUT=2 |
Клавиатура:
Shift + «:»
wq
Enter
А вот теперь, осталось все это дело зафиксировать с помощью нашего момент-монтаж, точнее утилитой упоминавшейся выше:
grub2-mkconfig -o /boot/grub2/grub.cfg
Отработать в окне должно примерно так:
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub.cfg …
Found linux image: /boot/vmlinuz-3.2.2-1.fc16.x86_64
Found initrd image: /boot/initramfs-3.2.2-1.fc16.x86_64.img
No volume groups found
Found Windows 7 (loader) on /dev/sda1
done
Ну и все пожалуй, теперь остается помолиться вашим покровителям и набрать заветное «ерек ую чорс», reboot в смысле 🙂
p.s.
Заметил также одну особенность в работе нового GRUB2: теперь, ОС по-умолчанию устанавливается кроме прочего, при выборе варианта загрузки из меню загрузчика с помощью клавиш стрелок до истечения таймаута. Т.е., если вы выбрали загрузить Windows, то вы в нее войдете и при следующей загрузке компьютера, GRUB2 вам начнет загружать Windows. И наоборот: если вы выберете Linux, то загрузчик этот выбор запомнит и при следующей загрузке на автомате загрузится именно Linux. Иными словами GRUB2 запоминает последний выбор варианта загрузки. Так что имейте это ввиду, прежде чем бросаться перелопачивать конфигурацию груба из Linux-root’А 😉
p.p.s.
Прошло не так уж и много времени с момента написания статьи, и вот успело выйти обновление для ядра моей Linux-системы. Все бы ничего, кроме того, что многие дистрибутивы имеют привычку добавлять новое ядро в меню загрузчика GRUB. Моя ОС также не исключение из этого списка, и как только ядро было обновлено, оно появилось в меню загрузки наряду со двумя старыми — Fedora и Windows 7. В итоге получилось три варианта два из которых линуксы (старый + новый) + windows. И снова все бы ничего, только от этой «неожиданности» наш GRUB2 опять почему-то «забыл», что он должен загружать последний выбранный вариант (весело, правда? :-)).
Описанное мной в абзаце выше легко исправляется из консоли путем выполнения нескольких нехитрых команд от имени root, которые можно найти на этой странице. Но т.к. я человек хоть и пытливого ума, но от этого не менее ленивый, то я решил действовать более рациональным методом. Просто я взал и написал небольшой вспомогательный скрипт, который при запуске производит обратную замену «умолчального» варианта на прежнее место, сопровождая действия краткими текстовыми комментариями в окне терминала.
В своем текстовом редакторе типа vi или gedit вставляете примерно такой код:
#!/bin/bash
echo «Доступные варианты загрузки:
»
grep menuentry /boot/grub2/grub.cfg
sleep 3
echo «Текущий вариант ОС загружаемая по-умолчанию:
»
grub2-editenv list
sleep 3
echo »
Устанавливаем ОС по-умолчанию Windows 7…»grub2-set-default «Windows 7 (loader) (on /dev/sda1)»echo »
Сохраняем изменения новой конфигурации…
»grub2-mkconfig -o /boot/grub2/grub.cfg
sleep 1echo »
Установлена ОС по-умолчанию:
—————————————————»grub2-editenv list
exit 0
Теперь сохраняете это дело под произвольным именем, ввиде текстового файла, например:
/usr/local/bin/grub2defmenu
Делаете исполняемым:
chmod +x grub2defmenu
Запускаете от root .
reboot
Удачи!
Интересно, чем же им так первый GRUB не понравился? 🙂 К тому же такое усложнение хорошим не окончится. 🙁
Старая версия видимо просто устарела настолько, что по мнению разработчиков ее непременно надо было заменить. Причем нет возможности заменить grub2 на grub штатными средствами Fedora, такими как yum — при выборе grub устанавливается grub2.
Остаётся только посочувствовать тем, кто, освоив, наконец, старый "граб", вынужден по-новой учиться им пользоваться. И, наверное, эта тенденция "всегдашней новизны", сваливающейся на тебя, как снег на голову, нежданно-негаданно — сохранится и в будущем. Если появился "граб 2", значит должен появится и "Терминатор 3".
Т.е. grub 3.0 ? =)
Дополнил немного статью в конце, насчет ОС-поумолчанию, — мелочь, но не маловажная на практике 🙂
Спасибо, все просто и понятно написано.
На здоровье. Обратите внимание на еще одно дополнение в подвале статьи.
Да, написано действительно кратко и полезно.