Gentoo Logo

[ << ] [ < ] [ В начало ] [ > ] [ >> ]


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

# какой пункт загружать по умолчанию: 0 - первый, 1 - второй и т.д.
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

# следующие четыре строки нужны только для двойной загрузки с Windows
# в этом примере Windows находится на /dev/hda6
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)          (указание расположения раздела с /boot)
grub> setup (hd0)           (установка GRUB в MBR)
grub> quit                  (выход из оболочки GRUB)

Примечание: Если вы хотите установить GRUB в определенный раздел вместо MBR, команду setup потребуется исправить так, чтобы она указывала на нужный раздел. Например, команда для установки GRUB в /dev/hda3setup (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         # установка LILO в MBR
prompt                # предоставление шанса выбора другого варианта
timeout=50            # ожидание пять секунд до загрузки варианта по умолчанию
default=gentoo        # по истечении времени загрузка варианта gentoo

# для тех, кто не использует genkernel
image=/boot/kernel-2.6.12-gentoo-r10
  label=gentoo        # название этого варианта
  read-only           # запуск с корневой ФС только для чтения; не менять!
  root=/dev/hda3      # расположение корневой файловой системы

# для тех, кто использует genkernel
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

# следующие две строки нужны только для двойной загрузки с Windows
# в этом примере Windows находится на /dev/hda6
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.


[ << ] [ < ] [ В начало ] [ > ] [ >> ]


Для печати

View all

Обновлено 26 марта 2006

Исходный документ обновлен 16 ноября 2009

Аннотация: Для архитектуры x86 существует несколько загрузчиков. Каждый из них настраивается по-своему. В этой главе мы шаг за шагом объясним вам порядок настройки начального загрузчика для ваших нужд.

Sven Vermeulen
автор

Roy Marples
автор

Daniel Robbins
автор

Chris Houser
автор

Jerry Alexandratos
автор

Seemant Kulleen
разработчик Gentoo x86

Tavis Ormandy
разработчик Gentoo Alpha

Jason Huebel
разработчик Gentoo AMD64

Guy Martin
разработчик Gentoo HPPA

Pieter Van den Abeele
разработчик Gentoo PPC

Joe Kallar
разработчик Gentoo SPARC

John P. Davis
редактор

Pierre-Henri Jondot
редактор

Eric Stockbridge
редактор

Rajiv Manglani
редактор

Jungmin Seo
редактор

Stoyan Zhekov
редактор

Jared Hudson
редактор

Colin Morey
редактор

Jorge Paulo
редактор

Carl Anderson
редактор

Jon Portnoy
редактор

Zack Gilburd
редактор

Jack Morgan
редактор

Benny Chuang
редактор

Erwin
редактор

Joshua Kinard
редактор

Tobias Scherbaum
редактор

Xavier Neys
редактор

Grant Goodyear
рецензент

Gerald J. Normandin Jr.
рецензент

Donnie Berkholz
рецензент

Ken Nowack
рецензент

Lars Weiler
участник

Антон Битков
переводчик

Андрей Бородай
переводчик

Василий Голубев
переводчик

Алексей Глазунов
переводчик

Игорь Короть
переводчик

Сергей Кулешов
переводчик, редактор перевода

Игорь Наум
переводчик

Антон Филимонов
переводчик

Азамат Хакимов
переводчик, редактор перевода

Эльдар Цраев
переводчик

Analyzer
переводчик

Алексей Чумаков
ведущий переводчик, редактор перевода

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Online Kredit Index
Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.