Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Авторизация

Статьи об операционной системе Linux

Сайдбар

Конфигурация загрузчика GRUB

28 февр. 2014

В статье описаны важнейшие элементы файла меню GRUB, который обычно называется /boot/grub/menu.lst. В Red Hat и Fedora для этого используется файл grub.conf. На него указывают символьные ссылки /boot/grub/menu.lst и /etc/grub. conf, так что вы не ошибетесь, если и в двух указанных дистрибутивах загрузите в редактор и измените файл menu.lst. В файле меню строки комментариев отмечены символом #. В некоторых дистрибутивах таких комментариев в файле меню очень много и читать файл практически невозможно.

ВНИМАНИЕ



В большинстве дистрибутивов Linux файл меню GRUB обновляется при каждом обновлении ядра. Это позволяет гарантировать, что после перезапуска будет использоваться новейшая версия ядра. В любом случае не исключено, что при автоматическом обновлении конфигурации GRUB система удалит внесенные вами изменения. Обращайте внимание на комментарии в файле menu.lst, так как они отличаются от дистрибутива к дистрибутиву!

В системах Debian и Ubuntu за обновление конфигурации GRUB отвечает сценарий update-grub. Все названия файлов и разделов здесь приведены только в качестве примеров! Разумеется, вы должны использовать имена устройств системного и загрузочного разделов именно из вашей системы. Если Linux уже запущена, вы можете узнать названия этих разделов с помощью команды df.

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

Для создания или конфигурирования GRUB вы можете пользоваться специальными инструментами, имеющимися в отдельных дистрибутивах; в частности, в SUSE для этого предназначен модуль YAST Система ► Конфигурация загрузчика.

Обозначение жестких дисков и разделов


В GRUB применяется собственная номенклатура для обозначения жестких дисков и их разделов. Основное правило — нумерация всегда начинается с нуля.

Названия разделов GRUB

(hdO) — Первый жесткий диск (соответствует /dev/sda)

(hd0,0) — Первый раздел первого жесткого диска (соответствует/dev/sdal)

(hd2,7) — Восьмой раздел третьего жесткого диска

В зависимости от того, как секционирован диск, между обычными названиями устройств, а также между названиями разделов GRUB могут возникать незаполненные промежутки. Предположим, что на жестком диске расположен основной раздел, а также дополнительный, в котором содержится два логических раздела. Названия устройств этих разделов будут следующими: /dev/sda1, /dev/sda2, /dev/ sda5 и /dev/sda6. Соответствующие названия разделов GRUB — (hdO.O), (hdO.l), (hd0.4) и (hd0.5).

Если на компьютере установлены жесткие диски двух типов: SATA и SCSI, то их нумерация зависит от настроек BIOS. CD- и DVD-приводы в нумерации не учитываются!

Файл devices.map.

На внутрисистемном уровне GRUB использует файл /boot/ grub/devices.map для соотнесения приводов и названий устройств загрузчика. Этот файл создается при первом выполнении GRUB. Правда, он не обновляется автоматически при добавлении новых приводов. При необходимости devices.map можно просто удалить, а после этого выполнить GRUB. В таком случае система создаст файл заново. Этот процесс может занять около минуты.

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

<code># Пример /boot/<a class="myClass" href="http://www.modx.cc/linux/grub/">grub</a>/devices.map (hdO) /dev/sda

(hdl) /dev/sdb (fdO) /dev/fdO
</code>

Глобальная область в menu.lst


Файл меню GRUB состоит из глобальной области, в которой содержатся различные базовые настройки, а также из нескольких записей меню, каждая из которых начинается со строки title. Например, в следующих строках показана глобальная область menu.lst:
# Глобальная область файла /boot/grub/menu.lst

default 2 # третья запись меню используется по умолчанию

timeout 30 # ожидать 30 секунд, пока не запустится

# система, заданная по умолчанию color yellow/blue red/white # Выделять записи меню цветом

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

default — указывает номер записи меню, используемой по умолчанию. Счет начинается с 0! Вместо номера вы также можете указать default saved. В таком случае по умолчанию используется запись, применявшаяся при последнем запуске. Чтобы этот механизм работал, в каждой записи меню должно содержаться ключевое слово savedefault (подробнее об этом чуть ниже). Если в menu.lst отсутствует запись default, то первая запись в меню обозначает систему, запускаемую по умолчанию.

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

timeout — указывает, в течение какого времени (в секундах) GRUB будет ожидать выбора из меню. По истечении этого времени автоматически запускается операционная система, указанная в качестве стандартной. Если вы хотите, чтобы GRUB ждала бесконечно, не запуская автоматически операционную систему, заданную по умолчанию, поставьте перед строкой timeout символ комментария #.

hiddenmenu — заставляет GRUB не отображать меню. По истечении периода, указанного в timeout, запускается стандартная система. До наступления этого момента пользователь может отобразить меню, нажав Esc, а потом, как обычно, выбрать из него одну из записей.

password — md5 code — защищает GRUB паролем. Команды меню можно использовать и без пароля, но интерактивные функции GRUB предоставляются только после ввода пароля.
color fg/bg menufg/menubg — управляет цветами, используемыми в меню GRUB. При этом команда fg задает цвет текста, а команда bg — цвет фона всего экрана. Соответственно, команды menufg и menubg задают цвет выбранной записи меню. Если не использовать команду color, то меню GRUB отображается в черном и белом цвете.

splashimage — имеется лишь в некоторых дистрибутивах Linux, в которых GRUB был соответствующим образом дополнен (например, в Fedora). Иначе говоря, splashimage не является официальной функцией GRUB. Это ключевое слово позволяет задавать для меню фоновый рисунок, который должен иметь размер 640 х 480 пикселов, быть в формате ХРМ (8 бит на пиксел) и находиться в архиве GZIP. В следующей строке показано, как использовать splashimage:

splashimage=(hdl,l)/boot/<a class="myClass" href="http://www.modx.cc/linux/grub/">grub</a>/splash.xpm.gz


gfxmenu — еще одно неофициальное дополнение, предназначенное для отображения графических меню. Оно применяется, в частности, в дистрибутивах Novell и SUSE. Графический файл создается с помощью команды mkbootmsg. Эта команда, а также файл gfxboot.html, где содержится документация по ней, находятся в пакете gfxboot. Так или иначе, чтобы самостоятельно создать сплеш-файл, вам придется потрудиться.

Записи меню в menu.lst



После глобальной области в menu.lst следуют записи меню, соответствующие различным операционным системам. Каждая запись меню вводится словом title. Текст, введенный после title, является содержанием строки меню. При этом испытания, которые я проводил, показали, что поддерживаются только символы US-ASCII, то есть международные специальные символы использовать нельзя. Мне не удалось найти никакой документации, где давалась бы подробная информация по кодировкам для menu.lst.

Остальные строки (вплоть до следующей команды title или до конца файла) — это команды GRUB, выполняемые в том порядке, в котором они записаны. (Если вы испытываете команды в интерактивном режиме, вам дополнительно потребуется выполнить boot. Эту команду нельзя указывать в файле меню.)

Запуск Linux



Чтобы запустить Linux, необходимо указать с помощью root раздел, в котором расположены ядро и файл диска оперативной памяти для начальной инициализации. Этот раздел будет считаться в GRUB активным. Команды kernel и initrd точно указывают место, где находятся эти файлы, а также задают возможные параметры загрузки ядра.

Обратите внимание, что при указании параметров ядра (в частности, при указании корневого устройства ядра) используется номенклатура Linux. Корректная запись в данном случае будет выглядеть так: root=/dev/sdb13. Кроме того, есть и другие способы записи, например root=LABEL=label и root=UUID=n, причем в таких случаях необходимо указывать обозначение или идентификационный номер раздела.

В дальнейшем учитывайте, что названия устройств в вашей системе могут отличаться от vmlinuz и initrd
<code># Выполнить запись меню в /boot/grub/menu.lst

# Linux в /dev/sdb13 title Linux

root (hdl,12)

kernel /boot/vmlinuz root=/dev/sdb13 initrd /boot/initrd</code>

Вы можете обойтись и без команды root. В таком случае потребуется указать для каждого файла нужный раздел диска:

<code># Выполнить Linux в /dev/sdb13 title Linux

kernel (hdl,12)/boot/vmlinuz root=/dev/sdbl3 initrd (hdl,12)/boot/initrd</code>


UUID



В Ubuntu предусмотрена возможность указывать раздел с файлами ядра и initrd не только с помощью root, но и с помощью ключевого слова GRUB uuid. Правда, такой синтаксис действует лишь в Ubuntu, поскольку разработчики этого дистрибутива соответствующим образом модифицировали GRUB. Запись с применением uuid идеально подходит для установки Ubuntu на USB-носителях.

<code># Запуск Linux вариант <a class="myClass" href="http://www.modx.cc/linux/zapusk-sistemyi-ubuntu/">Ubuntu</a>: загрузочный раздел имеет

# UUID=2a021cf3-..., корневой раздел управляется LVM title Ubuntu 9.04

uuid 2a021cf3-2b34-4cd4-b741-42b8fbldb89c

kernel /vmlinuz-2.6.28-13-generic root=/dev/mapper/vgl-ubuntu904 ro quiet initrd /initrd.img-2.6.28-13-generic</code>

Указание параметров ядра Linux



В зависимости от используемого оборудования или дистрибутива при запуске Linux обычно требуется передать системе параметры загрузки ядра (подробнее см. в разделе 14.9). Они отвечают в том числе за то, как будут отображаться сообщения системы Init-V. В файле menu.lst такие параметры нужно просто указать в конце строки kernel. В следующих строках приведен соответствующий пример:

<code># Запуск Linux в /dev/sdbl3 (с дополнительными параметрами ядра)

title Linux root (hdl,12)

kernel /boot/vmlinuz root=/dev/sdb13 vga=normal initrd /boot/initrd
</code>

Чтобы узнать, какие параметры нужны для работы с вашим оборудованием или дистрибутивом, посмотрите конфигурационный файл GRUB, создаваемый при установке системы. Вот несколько примеров: О Debian5 — root=/dev/xxx ro quiet;

Fedora 12 — root=/dev/xxx ro rhgb quiet LANG=… SYSF0NT=… KEYTABLE=...; О Ubuntu9.10 —root=UUID=xxx ro quiet splash;

SUSE11.2 —root=/dev/xxx resume=/dev/xxx splash=silent showopts vga=n.

Запуск Windows



Если вы хотите запустить Windows, укажите активный раздел не с помощью root, а применив rootnoverify. Благодаря команде chainloader +1 система прочитает и выполнит первый сектор этого раздела. В Windows 9х/МЕ это приводит к запуску операционной системы. В более новых версиях Windows, напротив, запускается загрузчик Windows, который, в свою очередь, уже загружает систему (сам GRUB не может запускать новейшие версии Windows).

<code># Запуск Windows в /dev/sda1 title Windows

rootnoverify (hdO.O) chainloader +1</code>


Запустить Windows удается лишь в том случае, если она находится на первом жестком диске. Если это не так, то следующие строки помогут вам виртуально «поменять диски местами». Я такой вариант не тестировал.

<code># Запуск Windows в /dev/sdbl title Windows

rootnoverify (hdl.O) map (hdO) (hdl) map (hdl) (hdO) chainloader +1</code>


ВНИМАНИЕ



Если вы зашифровали раздел с Windows с помощью BitLocker, а отдельный загрузочный раздел для Windows отсутствует (именно так обычно бывает при первичной установке Windows 7), то GRUB не находит загрузчик Windows и, таким образом, Windows не может запуститься. В этом случае повторите весь процесс в обратном направлении и интегрируйте GRUB в загрузчик Windows.

Запуск другого загрузчика



Такие загрузчики, как GRUB или LILO, обычно устанавливаются в MBR первого жесткого диска. Однако имеется возможность устанавливать их в загрузочных секторах любых разделов. С помощью центрального GRUB, расположенного в MBR, можно опосредованно запустить другой GRUB, установленный в том или ином разделе. В menu.lst применяются те же ключевые слова, что и при запуске Windows:

<code># Запуск загрузчика в загрузочном секторе /dev/sda7 title Boot-Loader in /dev/sda7

rootnoven'fy (hd0,6) chainloader +l
</code>

Такой метод может быть целесообразен, если требуется параллельно установить на одном жестком диске несколько дистрибутивов Linux.

Как пометить последнюю выбранную операционную систему



Если в menu.lst содержится много записей, стоит помечать запись, которую GRUB выбрал последней. Для того чтобы активизировать такую функцию, укажите в глобальной области menu.lst параметр default saved и дополните все записи меню ключевым словом savedefault:

<code># Запуск Linux в /dev/sdbl3 пометить сделанный выбор title Linux

root (hdl,12)

kernel /boot/vmlinuz root=/dev/sdbl3

initrd /boot/initrd

savedefault</code>

ВНИМАНИЕ



Ни в коем случае не применяйте savedefault на тех компьютерах, где в BIOS расположено два или более жестких диска, объединенных в группу RAID (BIOS-Software-RAID)! Вы рискуете потерять данные либо сбить синхронность работы системы!

Тестирование конфигурации GRUB



Если хотите быстро и без перезапуска проверить, нет ли в измененном файле меню GRUB синтаксических ошибок, запустите GRUB и выполните в нем следующую команду:

<code>root# grub

grub> configfile (hd1,12)/boot/grub/menu.lst
</code>

Вместо (hdl,12) следует указать название GRUB для того раздела жесткого диска, где находится файл меню загрузчика. Если все получится, то GRUB отобразит меню. Правда, вы не сможете запустить ни одну из операционных систем, поскольку у вас уже работает Linux.

Сценарий update-grub (Debian и Ubuntu)



В Debian и Ubuntu для обновления конфигурации GRUB предусмотрен сценарий оболочки update-grub. Он ищет в каталоге /boot файлы vmlinuz-* и добавляет для каждого такого файла ядра отдельную запись в меню. При этом также учитываются файлы initrd-*, соответствующие той или иной версии ядра. Сценарий update-grub автоматически выполняется после каждого обновления ядра.

Сценарий учитывает некоторые настройки, которые указываются в menu.lst, как комментарии. Отдельные переменные подробно описаны в файле справки man update-grub. Самая важная переменная называется kopt и указывает, какие параметры сообщаются ядру. Если вы хотите внести в menu.lst изменения, касающиеся этой переменной, не изменяйте записи в menu.lst напрямую — изменяйте саму переменную kopt. Затем еще раз выполните update-grub.

<code># /etc/boot/menu.lst

# Настройки для update-grub

#

# kopt=root=/dev/sdal3 го (Параметры ядра) #groot=(hd0,12) (Место, в котором установлен GRUB)

# alternative=true (Добавление записей о других операционных системах)

# lockalternative=false (Опустить записи о других операционных системах)

# defoptions= (Параметры, касающиеся лишь ядра, используемого по умолчанию)

# lockold=false (Опустить параметры, касающиеся других операционных систем)

# xenhopt= (Параметры Хеп)

# xenkopt=console=ttyO (Параметры ядра для ядра Хеп)

# altoptions=(single-user mode) single (Параметры ядра для альтернативного ядра)

# howmany=all (Максимальное количество записей, касающихся ядра)

# memtest86=true (Добавить запись Memtest)

# updatedefaultentry=false (Изменить ключевое слово, используемое в menu.lst по умолчанию)</code>

Читайте так же:
Установка GRUB






Подпишитесь на рассылку! Никакого спама, только обновления!!!

Комментарии (0)


    Услуги по MODX Revolution

    Посмотреть все услуги

    Техническая оптимизация сайта

    Подробнее & Заказать

    Создание сайта на MODX Revolution

    Подробнее & Заказать

    Перенос сайта на MODX Revolution

    Подробнее & Заказать

    Продвижение сайта на MODX

    Подробнее & Заказать