[ << ]
[ < ]
[ В начало ]
[ > ]
[ >> ]
10. Настройка начального загрузчика
Содержание:
10.a. Выбор загрузчика
Введение
Теперь, когда ядро настроено и собрано, а нужные конфигурационные файлы
заполнены как надо, пришло время установить программу, которая будет запускать
ваше ядро при старте системы. Такого рода программа называется
загрузчиком. Для архитектуры x86 в Gentoo Linux есть загрузчики GRUB и LILO. Но прежде, чем
приступить к установке одного из двух загрузчиков, мы расскажем, как настроить
кадровый буфер (естественно, если вы захотите). С помощью кадрового буфера
можно работать в командной строке Linux на фоне графических элементов
(например, симпатичного изображения из загрузочной заставки Gentoo).
Дополнительно: кадровый буфер
Если вы настроили в ядре поддержку кадрового буфера (или оставили
настройки по умолчанию при использовании genkernel), вы можете включить
буфер, добавив параметр vga и/или video в файл конфигурации
своего загрузчика.
Для начала, вам надо узнать тип используемого кадрового буфера. При
использовании исходных кодов ядра, доработанных для Gentoo (таких как
gentoo-sources), у вас есть возможность выбрать vesafb-tng в
качестве типа драйвера VESA (в этих исходных кодах ядра он используется
по умолчанию). При использовании vesafb-tng параметр vga
указывать не нужно. В других случаях используется драйвер vesafb, а
параметр vga необходимо указывать.
Параметр vga устанавливает разрешение и глубину цвета, используемые
кадровым буфером vesafb. Как отмечено в
/usr/src/linux/Documentation/fb/vesafb.txt (который
устанавливается в составе пакета с деревом исходных кодов ядра), кадровому
буферу необходимо передавать код режима VESA, соответствующий нужному разрешению
и цветности.
В следующей таблице приведены коды режимов для указания в параметре vga,
а также соответствующие им значения разрешения и цветности.
|
640x480 |
800x600 |
1024x768 |
1280x1024 |
| 256 |
0x301 |
0x303 |
0x305 |
0x307 |
| 32 тыс |
0x310 |
0x313 |
0x316 |
0x319 |
| 64 тыс |
0x311 |
0x314 |
0x317 |
0x31A |
| 16 млн |
0x312 |
0x315 |
0x318 |
0x31B |
Параметр video отвечает за порядок отображения кадрового буфера. В нем
указывается название драйвера кадрового буфера (vesafb для ядра 2.6 или
vesa для ядра 2.4), а затем режимы, которые нужно включить. Все
режимы приведены в /usr/src/linux/Documentation/fb/vesafb.txt,
а здесь мы расскажем о трех самых используемых:
| Переменная |
Описание |
| ywrap |
считать, что видеоплата может закольцовывать свою память (продолжать
выборку с начального адреса, когда достигнут конечный)
|
| mtrr:n |
установка регистров MTRR; допустимые значения n:
0 - отключено
1 - без кэширования
2 - отложенная запись (write-back)
3 - объединенная запись (write-combining)
4 - сквозная запись (write-through)
|
| mode |
(только для vesafb-tng)
Установить разрешение, цветность и частоту кадров. Например,
1024x768-32@85 для разрешения 1024x768, 32-битного цвета и частоты
кадров 85 Гц.
|
В результате должно получиться что-то вроде vga=0x318
video=vesafb:mtrr:3,ywrap или
video=vesafb:mtrr:3,ywrap,1024x768-32@85. Запомните (или запишите)
составленное значение, скоро оно понадобится.
Перейдем к установке GRUB или LILO.
10.b. По умолчанию: использование GRUB
Введение в терминологию GRUB
Самое сложное в освоении GRUB — освоиться с тем, как в нем именуются
жесткие диски и разделы. Ваш Linux-раздел /dev/hda1, скорее всего,
в GRUB станет называться (hd0,0). Обратите внимание на круглые
скобки вокруг hd0,0 — они обязательны.
Жесткие диски нумеруются, начиная с нуля, а не с «а»; разделы
— c нуля, а не с единицы. Нужно помнить, что в виде hd нумеруются только
жесткие диски, но не устройства atapi-ide, такие как приводы компакт-дисков.
Та же нумерация используется для устройств SCSI (обычно им присваиваются номера
большие, чем устройствам IDE, кроме случаев, когда BIOS настроен на загрузку с
устройства SCSI). Когда BIOS настроен на загрузку с другого жесткого диска
(например, с первичного ведомого), именно этот жесткий диск и становится
hd0.
Например, если у вас есть жесткий диск /dev/hda, привод CD-ROM
/dev/hdb, записывающий CD /dev/hdc, второй жесткий
диск /dev/hdd, а устройств SCSI нет, то разделу
/dev/hdd7 будет соответствовать (hd1,6). Возможно,
это покажется запутанным (так и есть), но, как мы увидим, в GRUB есть
механизм автодополнения по tab, облегчающий жизнь обладателям множества жестких
дисков и разделов, а также тем, кто теряется в схеме нумерации устройств GRUB.
Почувствовав, что к чему, пора установить GRUB.
Установка GRUB
Для установки GRUB сначала добавим его в систему:
Листинг 2.1: Установка GRUB |
# emerge grub
|
Хотя GRUB уже установлен, нам еще потребуется подправить его файл конфигурации,
и поместить GRUB в MBR, чтобы он автоматически загружал ядро. С помощью
nano (или другого редактора) создайте /boot/grub/grub.conf:
Листинг 2.2: Создание /boot/grub/grub.conf |
# nano -w /boot/grub/grub.conf
|
Теперь заполним grub.conf своими значениями. Ниже приведены два
варианта grub.conf для показанного примера разбиения дисков.
Первый вариант grub.conf мы подробно прокомментировали.
Удостоверьтесь, что у себя вы указываете имя своего файла образа
ядра, и при необходимости имя своего образа начального корневого диска
(initrd).
-
первый вариант grub.conf — для тех, кто при сборке ядра
обходился без genkernel
-
второй вариант grub.conf — для тех, кто при сборке ядра
пользовался genkernel
Примечание:
Если ваша корневая файловая система — JFS, необходимо добавить
«ro» в строку kernel, поскольку JFS
«накатывает» свой журнал перед тем, как разрешить монтирование
раздела на чтение-запись.
|
Листинг 2.3: grub.conf для тех, кто обошелся без genkernel |
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title=Gentoo Linux 2.6.12-r10
root (hd0,0)
kernel /boot/kernel-2.6.12-gentoo-r10 root=/dev/hda3
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1
|
Листинг 2.4: grub.conf для тех, кто пользовался genkernel |
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title=Gentoo Linux 2.6.12-r10
root (hd0,0)
kernel /boot/kernel-genkernel-x86-2.6.12-gentoo-r10 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev
initrd /boot/initramfs-genkernel-x86-2.6.12-gentoo-r10
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1
|
Примечание:
Параметр udev, указанный в конце строки kernel, необходим для обхода
ошибки в некоторых версиях genkernel, если вы вообще используете udev
(по умолчанию — используется).
|
Примечание:
Если вы разбили жесткий диск по-другому, или у вас другое ядро, внесите
необходимые изменения. При этом убедитесь, что все пути, следующие
за упоминанием устройства GRUB (например (hd0,0)), приведены
относительно точки подключения, а не корня файловой системы. Другими словами,
(hd0,0)/grub/splash.xpm.gz — на самом деле
/boot/grub/splash.xpm.gz, так как (hd0,0) — это
/boot.
|
Кроме того, если вы избрали другую схему разбиения диска, и не выделяли для
/boot отдельный раздел, префикс /boot,
использованный в примерах выше, обязателен. Если же вы следовали
рекомендованному нами плану разбиения, префикс /boot
не требуется, но все работает благодаря символьной ссылке boot.
Короче говоря, приведенные примеры должны работать независимо от того,
есть у вас отдельный раздел для /boot или нет.
Если вам надо передать ядру дополнительные параметры, просто добавьте их в
конец строки kernel. Один параметр мы уже передаем ядру (root=/dev/hda3
или real_root=/dev/hda3); можно добавлять и другие, например,
такие как параметры video и/или vga для кадрового буфера,
обсуждавшиеся выше.
Если вы используете ядро 2.6.7 или выше, а объем жесткого диска ограничили
перемычками из-за того, что BIOS не в состоянии работать с дисками большого
размера, вам потребуется добавить hdx=stroke.
Тем, кто использует genkernel, нужно помнить, что их ядро использует
такие же загрузочные параметры, как на установочном компакт-диске. Например,
если у вас есть устройства SCSI, следует передать ядру параметр doscsi.
Теперь сохраните grub.conf и выйдите из редактора. Вам по-прежнему
необходимо записать GRUB в MBR (Master Boot Record), чтобы GRUB автоматически
запускался при загрузке системы.
Разработчики GRUB рекомендуют использовать grub-install. Однако, на
случай некорректной работы grub-install есть возможность записать GRUB
вручную.
Переходите к разделу по умолчанию:
установка GRUB с помощью grub-install или альтернатива: установка GRUB вручную.
По умолчанию: установка GRUB с помощью grub-install
Для установки GRUB вам надо выполнить команду grub-install.
Однако, grub-install не заработает сам по себе, т.к. мы находимся в
среде с измененным корневым каталогом. Нам нужно создать файл
/etc/mtab, перечислив в нем все смонтированные файловые системы. К
счастью, для этого есть очень легкий способ: просто скопируйте содержимое
/proc/mounts поверх /etc/mtab, исключив строку
rootfs, если вы не создавали отдельный загрузочный раздел. Следующая
команда подойдет в обоих случаях:
Листинг 2.5: Создание /etc/mtab |
# grep -v rootfs /proc/mounts > /etc/mtab
|
Теперь мы можем установить GRUB, используя grub-install:
Листинг 2.6: Выполнение grub-install |
# grub-install /dev/hda
|
Если у вас есть вопросы о GRUB, пожалуйста, обратитесь к GRUB FAQ (англ.)
или руководству по GRUB
(англ.).
Переходите к перезагрузке системы.
Альтернатива: установка GRUB вручную
Для начала настройки, введите grub. Вы увидите приглашение
grub> — это командная строка grub. Теперь потребуется
набрать команды, нужные для установки загрузочной записи GRUB на ваш жесткий
диск.
Листинг 2.7: Запуск оболочки GRUB |
# grub
|
Примечание:
Если у вас нет приводов для дискет, к приведенной команде добавьте
--no-floppy, чтобы grub зря не опрашивал несуществующие дисководы.
|
В приводимом примере мы хотим установить GRUB так, чтобы он считывал нужную
информацию с загрузочного раздела /dev/hda1, а загрузочная запись
GRUB находилась в MBR (Master Boot Record) жесткого диска, чтобы первое, что мы
видели после включения компьютера — это приглашение GRUB. Естественно,
если вы при установке отклонялись от предлагаемой схемы, внесите необходимые
поправки.
Находясь в GRUB, можно использовать автодополнение по клавише TAB. К примеру,
если ввести «root (», а затем TAB, появится список
устройств (таких как hd0). Если ввести «root
(hd0,» и нажать TAB, появится список для выбора раздела из возможных
(такого как hd0,0).
Благодаря автодополнению установка GRUB не так сложна. Теперь приступим к
настройке GRUB.
Листинг 2.8: Установка GRUB в MBR |
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
|
Примечание:
Если вы хотите установить GRUB в определенный раздел вместо MBR, команду
setup потребуется исправить так, чтобы она указывала на нужный раздел.
Например, команда для установки GRUB в /dev/hda3 — setup
(hd0,2). Однако, так поступают немногие.
|
С дополнительными вопросами о GRUB, пожалуйста, обращайтесь к GRUB FAQ (англ.)
или руководству по GRUB
(англ.).
Примечание:
В случае переустановки ядра в будущем, вам больше не потребуется копировать
содержимое файлов. После компиляции ядра просто запускайте make install:
копирование файлов и изменение конфигурации GRUB произойдет автоматически.
|
Переходите к перезагрузке системы.
10.c. Альтернатива: использование LILO
Установка LILO
LILO (сокращение от LInux LOader) — это проверенная временем рабочая
лошадка среди загрузчиков Linux-систем. Но ей недостает ряда возможностей,
которые есть в GRUB (и в том числе в этом заключается причина растущей
популярности GRUB). LILO все еще используется, потому что на некоторых системах
он работает, а GRUB — нет. Конечно же, он используется еще и потому, что
многие просто знакомы с LILO и сроднились с ним. Так или иначе, в Gentoo
поддерживаются оба загрузчика, и вы, видимо, решили использовать LILO.
Установка LILO в систему проста как пробка: просто используйте emerge.
Листинг 3.1: Установка LILO |
# emerge lilo
|
Настройка LILO
Для настройки LILO нужно создать файл /etc/lilo.conf. Запустите
свой любимый редактор (в руководстве мы для единообразия используем
nano) и создайте файл.
Листинг 3.2: Создание /etc/lilo.conf |
# nano -w /etc/lilo.conf
|
Несколькими разделами раньше мы попросили вас запомнить название созданного
файла образа ядра. В следующем примере используется предложенная нами схема
разделения диска. Пример разделен на две части:
-
одна — для тех, кто не пользовался для сборки ядра genkernel
-
другая — для тех, кто при сборке ядра пользовался genkernel
Удостоверьтесь, что у себя вы указываете имя своего файла образа ядра, и
при необходимости имя своего образа начального корневого диска (initrd).
Примечание:
Если ваша корневая файловая система — JFS, необходимо добавить
«ro» в строку kernel, поскольку JFS
«накатывает» свой журнал перед тем, как разрешить монтирование
раздела на чтение-запись.
|
Листинг 3.3: Пример /etc/lilo.conf |
boot=/dev/hda
prompt
timeout=50
default=gentoo
image=/boot/kernel-2.6.12-gentoo-r10
label=gentoo
read-only
root=/dev/hda3
image=/boot/kernel-genkernel-x86-2.6.12-gentoo-r10
label=gentoo
read-only
root=/dev/ram0
append="init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev"
initrd=/boot/initramfs-genkernel-2.6.12-gentoo-r10
other=/dev/hda6
label=windows
|
Примечание:
Параметр udev, указанный в конце строки kernel, необходим для обхода
ошибки в некоторых версиях genkernel, если вы вообще используете udev
(по умолчанию — используется).
|
Примечание:
Если вы разбили жесткий диск по-другому, или у вас другое ядро, внесите
необходимые изменения.
|
Если нужно передать ядру дополнительные параметры, добавьте в соответствующий
раздел файла выражение append. Например, добавим параметр video
для включения кадрового буфера:
Листинг 3.4: Использование append для добавления параметров ядра |
image=/boot/kernel-2.6.12-gentoo-r10
label=gentoo
read-only
root=/dev/hda3
append="video=vesafb:mtrr,ywrap,1024x768-32@85"
|
Если вы используете ядро 2.6.7 или выше, а объем жесткого диска ограничили
перемычками из-за того, что BIOS не в состоянии работать с дисками большого
размера, вам потребуется добавить hdx=stroke.
Тем, кто использует genkernel, нужно помнить, что их ядро использует
такие же загрузочные параметры, как на установочном компакт-диске. Например,
если у вас есть устройства SCSI, следует передать ядру параметр
doscsi.
Теперь сохраните файл и выйдите из редактора. Для окончания установки
нужно запустить /sbin/lilo, чтобы LILO смог отразить настройки,
сделанные в /etc/lilo.conf, в вашей системе (т.е. записался на
диск). Имейте в виду, что при каждой установке нового ядра или изменении меню
вам потребуется выполнять /sbin/lilo заново.
Листинг 3.5: Завершение установки LILO |
# /sbin/lilo
|
Примечание:
При переустановке ядра вам больше не придется копировать файлы. Просто
запустите make install после компиляции ядра; копирование файлов
и изменение конфигурации LILO выполнится автоматически.
|
Переходите к перезагрузке системы.
10.d. Перезагрузка системы
Выйдите из изолированной среды и размонтируйте все смонтированные разделы.
Затем введите ту самую волшебную команду, которую вы так заждались:
reboot.
Листинг 4.1: Размонтирование всех разделов и перезагрузка |
# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot
|
Естественно, не забудьте вынуть загрузочный компакт-диск, иначе он загрузится
сам вместо вашей новой системы Gentoo.
Загрузив вновь установленную систему, переходите к завершению установки Gentoo.
[ << ]
[ < ]
[ В начало ]
[ > ]
[ >> ]
Текст этого документа распространяется на условиях лицензии
Creative Commons
- Attribution / Share Alike.
|
|