Суббота
27.04.2024, 19:32
| RSS
Главная
Меню сайта

Категории раздела
Madriva [3]
Ubuntu (KUbuntu, EdUbuntu, XUbuntu) [78]
SUSE [1]
Fedora Core [9]
ASPLinux [1]
Debian [16]
Gentoo [3]
Другие [167]

Мини-чат

Наш опрос
Какую графическую среду Вы используете?
Всего ответов: 103

Статистика

Rambler's Top100Рейтинг@Mail.ru

Главная » 2012 » Май » 22 » Возможности настройки GRUB2 в Linux: от серьезных пармаметров до бесполезных украшательств
Возможности настройки GRUB2 в Linux: от серьезных пармаметров до бесполезных украшательств
18:38
Эта статья является вольным переводом GNU GRUB Manual, структурированной выжимкой по интересующей нас теме. Мы не будем рассматривать вопрос установки и запуска GRUB'ом той или иной операционной системы. Мы посмотрим, какие возможности предоставляет GRUB2 версии 1.99 для собственной настройки. Ведь, как известно, "В Линукс можно настроить абсолютно все! И вы будете настраивать абсолютно все!"



Чем же GRUB2 лучше, чем GRUB Legacy? Да, собственно, практически ничем. Потенциально, он более гибок, в нем раньше появляются некоторые новые возможности (как, например, поддержка ext4). Но если вы обычный пользователь и у вас уже установлен GRUB Legacy, то нет практического смысла менять его на GRUB2, по крайней мере, я его не вижу. Если же вы ставите систему с нуля, то все же стоит отдать предпочтение GRUB2 как более перспективной (и уже стабильно работающей) разработке. Тем более, что в GRUB2 добавлена возможность сделать экран загрузки красивым, чем мы в основном и займемся в этой статье.

Так нас обычно встречает компьютер унылой менюшкой GRUB2. Мало того, что картинка не балует жизнерадостностью, так она еще и не совсем соответствует действительности - в моем случае, установленный BackTrack был опознан как Ubuntu. Посмотрим, как все это можно исправить.

Что нужно знать
Собственно конфигурационный файл находится в /boot/grub/grub.cfg, но его редактирование особого смысла не имеет. Дело в том, что этот файл создается автоматически утилитой update-grub на основе файла настроек /etc/default/grub и скриптов, находящихся в /etc/grub.d/. Таким образом, если вы не хотите, чтобы ваши изменения терялись, например, при обновлении ядра, правильным способом настройки будет редактирование файла настроек, а при отсутствии требуемого параметра в файле настроек, редактирования конфигурационных скриптов. Чтобы изменения вступили в силу необходимо запустить update-grub.

При настройке нам может понадобится выйти в командную строку GRUB. Для этого в меню выбора ОС необходимо нажать 'c', для возврата - 'esc'. Командная строка поддерживает автодополнение по Tab.

Чтобы в процессе работы в командной строке получить доступ к файлу, находящемуся не в корневой файловой системе (получить доступ к файлу, находящемуся в корневой файловой системе можно как обычно /path/to/file), необходимо знать наименование устройств и разделов. Например:
(hd0,1)
означает первый жесткий диск (устройства нумеруются с 0) и на нем первый раздел (разделы нумеруются с единицы), что соответствует /dev/sda1.

Если при наборе команды, например:
set root=(
нажать Tab, то GRUB сам предложит вам список возможных устройств:
possible devices are:
hd0     fd0
Если нажать Tab при набранной команде
set root=(hd0,
то вам будет предложен список разделов на первом жестком диске. Ну и для набранной команды
set root=(hd0,1)/
будет предложен список файлов на данном разделе.

Так же при настройке GRUB может оказаться полезной команда grub-mkconfig, которая позволяет посмотреть предварительный вариант файла grub.cfg без изменения реального конфигурационного файла. Собственно, update-grub выполняет grub-mkconfig с параметром вывода в файл /boot/grub/grub.cfg.

GRUB использует unicode, т.е. создание пункта меню на русском языке проблем вызвать не должно.

Простейший пример настроек
Рассмотрим простейший пример файла настроек. Если вам захочется чего-то большего, чем описанно в этом разделе, обратите внимание на раздел "Параметры /etc/default/grub".

Больщинству пользователей, к коим я отношу и себя, понядобится всего несколько параметров для настройки функциональности GRUB2. Мой файл настроек выглядит так (за вычетом неинтересных комментариев):

GRUB_DEFAULT=0
GRUB_TIMEOUT=3

#GRUB_TIMEOUT=0
#GRUB_HIDEN_TIMEOUT=1
#GRUB_HIDDEN_TIMEOUT_QUIET=true

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""

GRUB_GFXMODE=1280x768
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_BACKGROUND="/root/picture.jpeg"
Наиболее востебованы бывают первые два параметра, отвечающие за пункт меню по умолчанию и время ожидания выбора. Если у вас установлена всего одна ОС, то можете вместо GRUB_TIMEOUT=3 раскоментировать следующие три строчки - в этом случае выбор меню GRUB2 отображаться не будет, если вы не нажмете Esc. На это у вас будет одна секунда (или столько, сколько вы зададите параметром GRUB_HIDEN_TIMEOUT). После изменения этих настроек не забываем выполнить update-grub.

Если вы хотите изменить имя вашей операционной системы в меню выбора GRUB2, можете воспользоваться для этого параметром GRUB_DISTRIBUTOR.

Для управления списком параметров, передаваемых ядру Linux GRUB2 предоставляет команды GRUB_CMDLINE_LINUX и GRUB_CMDLINE_LINUX_DEFAULT. Мы не будем вдаваться в подробности и описывать разные параметры, поскольку это относится уже к теме загрузки Linux.

Последние три параметра отвечают за настройку внешнего вида GRUB2. Если вы любите красоту во всем, даже в меню загрузчика, то можете ознакомится с предоставляемыми для этого возможностями в следующей части.

Настройка внешнего вида
В этой части мы посмотрим, как можно улучшить вид GRUB2.

Для начала поменяем разрешение экрана. Чтобы узнать текущее разрешение, в командной строке GRUB2 вводим команду
set
и смотрим на параметр gfxmode. Список поддерживаемых разрешений можно получить командой vbeinfo. Теперь загружаемся в дебиан, находим в конфигурационном файле /etc/default/grub параметр GRUB_GFXMODE, (раскомментируем его, если он закомментирован и добавляем, если его нет) и назначаем его: GRUB_GFXMODE=1280x768 или GRUB_GFXMODE=1280x768x32 (цветность можно не указывать). Не забываем выполнить update-grub, перезагружаемся, получаем:


Для того, чтобы разрешение экрана до запуска иксов оставалось таким же, как в GRUB, можно установить параметр:

GRUB_GFXPAYLOAD_LINUX=true

Теперь попробуем поставить красивую картинку в качестве фона. Для начала можно посмотреть как она будет выглядеть. В консоли GRUB сначала подгружаем нужные модули командой
insmode jpeg
(или png, tga) и можем устанавливать фон:
background_image /path/to/picture.jpeg
Тут помним, что смонтирован только корневой раздел. До остальных можно добраться указав идентификатор раздела, например, (hd0,1)/path/to/picture.jpeg.

Установить картинку в качестве фона можно несколькими способами, опишем два из них. Самый простой - скопировать картинку в /boot/grub/ и как всегда не забыть запустить update-grub. Второй способ (и он является для GRUB'а более приоритетным) - установить параметр: GRUB_BACKGROUND="/path/to/picture.jpeg". Можно не беспокоиться, что картинка находится где-то, куда GRUB не сможет добраться во время загрузки - если он это поймет, то скопирует ее себе в буфер. Итак, получаем:
На фоне такой картинки серый цвет надписей смотрится как-то уныло. К сожалению, поменять цвет шрифта в файле настроек нельзя, поэтому нам придется лезть в настроечные скрипты, к счастью, в данном случае это совсем просто. Файл /etc/grub.d/40_custom предназначен для пользовательской настройки. Добавляем в конец:
set menu_color_normal=red/black
set menu_color_highlight=yellow/black
set color_normal=yellow/black
Получаем:
Установить можно четыре параметра: color_highlight, color_normal, menu_color_highlight, menu_color_normal. Все они должны быть вида color-foreground/color-background, устанавливается, соответственно, цвет текста и цвет фона.

Допустимы цвета:
  • blue
  • green
  • cyan
  • red
  • magenta
  • brown
  • light-gray
  • dark-gray
  • light-blue
  • light-green
  • light-cyan
  • light-red
  • light-magenta
  • yellow
  • white
  • black
Если в качестве фона установлен black, то фон будет прозрачным.

Как и в случае с фоновым изображением, цвета текста можно предварительно опробовать используя командную строку GRUB. Достаточно ввести команду
set one_of_4_color_parametrs first-color/second-color
Так же, GRUB поддерживает более сложный механизм настройки внешнего вида. Можно установить параметр GRUB_THEME="path/to/theme.file". Впрочем, вопрос создания своих файлов с темами для GRUB мы пока рассматривать не будем.

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

При создании конфигурационного файла используются все скрипты из директории "/etc/grub.d/", запускаются они в алфавитном порядке. В Debian там находятся:
  • 00_header отвечает за загрузку основных параметров и библиотек;
  • 05_debian_theme отвечает за оформление внешнего вида;
  • 10_linux отвечает за формирование записей в меню, соответствующих ОС-linux, в которой стоит GRUB;
  • 20_linux_xen - аналогично предыдущему;
  • 30_os-prober отвечает за обнаружение и включение в список остальных ОС;
  • 40_custom и 41_custom - пользовательские скрипты.
Для наглядности поставим себе задачу заменить надпись "Ubuntu" в меню загрузки на "BackTrack Linux", убрать для него recovery режим и поставить выше Windows. Поставленная нами задача относится к скриптам 30_os-prober.

Объяснить GRUB, что не надо формировать запись меню для определенного раздела, достаточно просто. В цикле перебора установленных ОС:
for OS in ${OSPROBED} ; do
где-нибудь после определения параметра DEVICE надо добавить строчки:
if [ "$DEVICE" = "/dev/sda2" ] ; then
  continue
fi
Тогда никакая информация о ОС на /dev/sda2 в конфигурационный файл не попадет. Теперь сами прописываем информацию о нашей системе до вышеозначенного цикла, заменяя параметры, которые нам не подходят. При этом опираемся на то, как формируются аналогичные записи в цикле. Результат будет выглядеть так (изменения выделены жирным шрифтом):
DEVICE="/dev/sda2"
LINUX="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ':'`"
prepare_boot_cache=

LROOT="`echo ${LINUX} | cut -d ':' -f 1`"
LBOOT="`echo ${LINUX} | cut -d ':' -f 2`"
LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`"
LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`"
LINITRD="`echo ${LINUX} | cut -d ':' -f 5`"
LPARAMS="`echo ${LINUX} | cut -d ':' -f 6 | tr '^' ' '`"

if [ -z "${LLABEL}" ] ; then
  LLABEL="${LONGNAME}"
fi

if [ "${LROOT}" != "${LBOOT}" ]; then
  LKERNEL="${LKERNEL#/boot}"
  LINITRD="${LINITRD#/boot}"
fi
cat << EOF
menuentry "BackTrack Linux" --class gnu-linux --class gnu --class os {
EOF
save_default_entry | sed -e "s/^/\t/"
if [ -z "${prepare_boot_cache}" ]; then
   prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | sed -e "s/^/\t/")"
fi
printf '%s\n' "${prepare_boot_cache}"
cat << EOF
linux ${LKERNEL} ${LPARAMS}
EOF
if [ -n "${LINITRD}" ] ; then
   cat << EOF
       initrd ${LINITRD}
   EOF
fi
cat << EOF
}
EOF
При помощи команды grub-mkconfig проверяем, что конфигурационный файл не содержит ошибок, запускаем update-grub, получаем:

Параметры /etc/default/grub
Рассмотрим более подробно большинство параметров, которые можно задать для настройки GRUB2.

GRUB_DEFAULT отвечает за то, какой пункт загружать по умолчанию. Может быть равен номеру (GRUB_DEFAULT=0 - в нашем случае будет загружать Debian в обычном режиме), точному названию (GRUB_DEFAULT="Microsoft Windows XP Professional (on /dev/sda1)" - будет, как это не удивительно, загружать Windows), в паре с GRUB_SAVEDEFAULT указанию, что надо загружать предыдущий выбор (GRUB_DEFAULT=keep, также это значение нужно установить для использования команд grub-set-default и grub-reboot).

GRUB_SAVEDEFAULT=true в паре с GRUB_DEFAULT=keep указывает GRUB, что по умолчанию нужно ставить предыдущий выбор.

GRUB_TIMEOUT - время в секундах, в течении которого GRUB ждет выбора, прежде чем загрузить значение по умолчанию. Можно установить равным 0, чтобы GRUB не показывал экран выбора ОС, или любое отрицательное значение для отключения таймера.

GRUB_HIDDEN_TIMEOUT указывает сколько секунд ждать перед тем, как показать экран загрузки, если не нажата клавиша. Учитывается, только когда  не установлены другие ОС. Если GRUB_HIDDEN_TIMEOUT_QUIET=true, то во время ожидания не показывается таймер.

GRUB_DISTRIBUTOR - название текущего дистрибутива, используется при формировании соответствующей записи в меню выбора ОС.

GRUB_CMDLINE_LINUX, GRUB_CMDLINE_LINUX_DEFAULT - список параметров, используемых при запуске ядра линукс. Параметры GRUB_CMDLINE_LINUX используются как для обычного режима загрузки, так и для recovery. Параметры GRUB_CMDLINE_LINUX_DEFAULT используются только обычным режимом. Аналогично используются параметры GRUB_CMDLINE_NETBSD, GRUB_CMDLINE_NETBSD_DEFAULT GRUB_CMDLINE_XEN, GRUB_CMDLINE_XEN_DEFAULT для систем NetBSD и Xen.

GRUB_DISABLE_RECOVERY=true - тип загрузки recovery не будет создаваться.

GRUB_DISABLE_OS_PROBER=true - убрать проверку наличия других установленных ОС.

GRUB_GFXMODE=1280x768x32 - установить разрешение экрана. Третий параметр (цветность) можно опустить. Список доступных разрешений можно посмотреть командой vbeinfo в командной строке GRUB2.

GRUB_GFXPAYLOAD_LINUX=true - разрешение экрана будет сохранено при передаче загрузки ядру Linux.

GRUB_BACKGROUND="/path/to/picture.jpeg" - установить фоновую картинку.

GRUB_THEME="path/to/theme.file" - установить файл тем.

Кроме того, GRUB имеет ряд специфических возможностей, которые вряд ли пригодятся обычному пользователю, но на всякий случай кратко опишем их:
  • возможность отключить использование GRUB'ом специальной системы идентификаторов для определения корневой файловой системы (GRUB_DISABLE_LINUX_UUID);
  • возможность исключать поврежденные блоки памяти (GRUB_BADRAM);
  • возможность загружать дополнительные модули (GRUB_PRELOAD_MODULES);
  • возможность управлять терминалами ввода и вывода (GRUB_TERMINAL_INPUT, GRUB_TERMINAL_OUTPUT, GRUB_TERMINAL, GRUB_SERIAL_COMMAND);
  • возможность воспроизводить звуковой сигнал при запуске (GRUB_INIT_TUNE).
Настройка безопасности
Мало кому такая возможность может понадобиться, но она есть и заслуживает того, чтобы о ней рассказали. GRUB предоставляет возможность разграничения прав доступа. Можно создавать обычных пользователей, которые могут загружать разрешенные им ОС, а так же суперпользователей, которые могут загружать любую ОС, редактировать существующие записи и вызывать командную строку. Список суперпользователей задается командой
set superusers="root"
Создать обычного пользователя и задать ему не зашифрованный пароль можно командой:
password user 123
Той же командой можно создать пароль суперпользователю. Для создания зашифрованного пароля нужно воспользоваться программой grub-mkpasswd-pbkdf2, а в скриптах прописать соответственно команду:
password_pbkdf2 root grub.pbkdf2.sha512.10000.mnogobukv
Все эти команды лучше всего дописать в скрипт 40_custom.

Для того, чтобы определенный пользователь мог запускать определенную ОС, он должен быть прописан в списке в соответствующем пункте меню в ключе --users:
menuentry "Debian" --users "user user1 user2" --class ...

Заключение
Как мы видим, GRUB2 предоставляет массу возможностей по собственной настройке. И хотя механизм скриптов может кому-то показаться достаточно сложным, он позволяет гибко реагировать на изменения в списке установленных ОС и изменения в возможностях загрузки конкретной ОС. К тому же, практически все важные параметры вынесены в отдельный конфигурационный файл, что позволяет настраивать GRUB2 практически так же легко, как и GRUB Legacy.

Источник:http://mydebianblog.blogspot.com/2012/05/grub2-linux.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+debianletters+(%3F%3F%3F%3F%3F%3F%3F+%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F
Категория: Другие | Просмотров: 2335 | Добавил: tol | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Поиск

Друзья сайта

  • Администрация

    Andry


    Tol


    Copyright MyCorp © 2024
    Хостинг от uCoz