Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gentoo_x86_Handbook.doc
Скачиваний:
38
Добавлен:
19.09.2019
Размер:
924.16 Кб
Скачать

10.B. По умолчанию: Используем grub

Понимание терминологии GRUB

Самой главной частью понимания GRUB является понимание того, как GRUB называет жесткие диски и разделы. Ваш раздел Linux /dev/sda1 скорее всего будет назван (hd0,0) в GRUB. Заметьте, что вокруг hd0,0 скобки — они необходимы.

Жесткие диски начинают считаться с нуля, а не с «a», и разделы начинаются с нуля, а не с одного. Также помните, что за устройства hd считаются только жесткие диски, но не ide-устройства, не являющиеся atapi, например проигрыватели и записыватели cdrom. Также, такая же конструкция используется для устройств SCSI (обычно у них большие номера, чем у устройств IDE, если только BIOS не сконфигурирован для загрузки со SCSI-устройств). Когда вы просите BIOS загрузиться с другого жесткого диска (например, вашего primary slave), этот жесткий диск будет видеться как hd0.

Если предположить, что вы имеете жесткий диск на /dev/sda, и два еще на /dev/sdb и /dev/sdc, то /dev/sdb1 станет (hd1,6). Это может показаться странным (оно и есть странно), но, как мы увидим, у GRUB есть механизм автодополнения, который может помочь тем из вас, у которых есть множество жестких дисков и разделов, и кто потерялся в схеме нумерации GRUB.

Теперь, когда вы прочувствовали все это, пришло время установить GRUB.

Установка GRUB

Чтобы установить GRUB, сначала давайте скачаем его:

Код 2.1: Установка GRUB

# emerge grub

Хотя GRUB теперь установлен, нам все еще нужно написать конфигурационный файл для него, и разместить GRUB в нашем MBR, чтобы GRUB автоматически загружал наше новое ядро. Создайте /boot/grub/grub.conf с помощью nano (или, если нужно, другого редактора).

Код 2.2: Создаем /boot/grub/grub.conf

# nano -w /boot/grub/grub.conf

Теперь мы собираемся написать grub.conf. Удостоверьтесь, что вы используете имя файла вашего образа ядра и, если нужно, файла загрузочного образа.

Заметка: Grub назначает устройства по данным BIOS. Если вы измените настройки BIOS, ваши устройства (и их номера) могут измениться. Например, если вы измените порядок устройств при загрузке, вам может понадобиться изменить конфигурацию grub.

Заметка: Если ваша корневая файловая система JFS, вам нужно добавить «ro» к ядру, так как JFS нужно «переиграть» свой лог, прежде чем она разрешит работать с ней на чтение-запись.

Код 2.3: Пример файла grub.conf

# Какое ядро загружать по умолчанию. 0 — первое, 1 — второе, и т.д.

default 0

# Сколько секунд ждать, прежде чем ядро по умолчанию загрузится

timeout 30

# Красивая картинка при загрузке

# Закомментируйте ее, если у вас нет видеокарты

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.34-r1

# Раздел, где расположен образ ядра (или операционная система).

root (hd0,0)

kernel /boot/kernel-2.6.34-gentoo-r1 root=/dev/sda3

title Gentoo Linux 2.6.34-r1 (rescue)

# Раздел, где расположен образ ядра (или операционная система).

root (hd0,0)

kernel /boot/kernel-2.6.34-gentoo-r1 root=/dev/sda3 init=/bin/bb

# Следующие 4 строки нужны только, если у вас есть еще система Windows.

# В данном случае, Windows находится на /dev/sda6.

title Windows XP

rootnoverify (hd0,5)

makeactive

chainloader +1

Если в процессе сборки ядра Linux вы решили включить initramfs для загрузки, то вам нужно изменить конфигурацию, указав файл initramfs и сказав initramfs, где находится настоящее устройство загрузки.

Код 2.4: Выдержка для GRUB в случае ядер со включенным initramfs

title Gentoo Linux 2.6.34-r1

root (hd0,0)

kernel /boot/2.6.34-r1 real_root=/dev/sda3

initrd /boot/initramfs-genkernel-x86-2.6.34-gentoo-r1

Если вы использовали другую схему разбивки и/или образ ядра, подправьте, соответственно, этот файл. Однако удостоверьтесь, что все, что идет за устройством GRUB (таким, как (hd0,0)) записано относительно точки монтирования, а не корню. Например, (hd0,0)/grub/splash.xpm.gz в реальности это /boot/grub/splash.xpm/gz, так как (hd0,0) это /boot.

Однако, если вы выберете использовать другую схему разбивки, и не выделите /boot в отдельный раздел, то префикс /boot, который мы использовали в вышеприведенном коде будет действительно необходим. Если вы следовали предложенному плану разбивки, то префикс /boot не необходим, потому что будет работать ссылка на /boot. Вкратце, вышеприведенные примеры должны работать независимо от того, определили ли вы отдельный /boot раздел или нет.

Если вам нужно передать любые дополнительные параметры ядру, просто добавьте их к конце команды. Мы уже передали одну опцию (root=/dev/sda3 или real_root=/dev/sda3), но вы можете передать и другие, например параметр video для фреймбуфера, так, как мы обсуждали ранее.

Если ваш конфигурационный файл загрузчика содержит параметр real_root, используйте параметр real_rootflags для установки опций монтирования корневой файловой системы.

Если вы используете 2.6.7 или более новое ядро, и вы поставили джамперы на жестком диске, так как BIOS не умеет работать с большими жесткими дисками, вам нужно добавить sda=stroke. Замените sda на устройство, которому нужна данная опция.

Пользователи genkernel должны знать, что их ядра используют те же загрузочные опции, как и те, что используются для установочного CD. Например, если у вас есть 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 --no-floppy /dev/sda

Если у вас остались вопросы, касающиеся GRUB, проконсультируйтесь в GRUB FAQ (по адресу http://www.gnu.org/software/grub/grub-faq.html), GRUB Wiki (по адресу http://grub.enbug.org/GrubLegacy), или прочитайте info grub в вашем терминале.

Продолжайте читать с раздела «Перезагрузка системы»

Альтернатива: Устанавливаем GRUB вручную

Чтобы начать конфигурацию GRUB, вы пишете grub. Вам покажут подсказку grub>. Теперь вы должны ввести правильные команды, чтобы установить загрузочную запись GRUB на ваш жесткий диск.

Код 2.7: Запускаем оболочку GRUB

# grub --no-floppy

Заметка: Если в вашей системе нет флоппи-дисководов, добавьте опцию --no-floppy к вышеприведенной команде, чтобы grub не попытался просканировать (несуществующие) флоппи-дисководы.

В конфигурации для примера, мы хотим установить GRUB так, чтобы он читал свою информацию из загрузочного раздела /dev/sda1, и установить загрузчик GRUB в MBR жесткого диска (master boot record), чтобы первое, что мы увидели, когда включили компьютер, была подсказка GRUB. Конечно, если вы не следовали конфигурации для примера в течении установки, то вам нужно соответствующим образом изменить команды.

Механизм автодополнения по tab может использоваться в GRUB. Например, если вы наберете «root (», и нажмете TAB, вам покажут список устройств (таких, как hd0). Если вы наберете «root (hd0,», и нажмете TAB, вы получите список существующих разделов, из которых можно выбрать (например hd0,0).

Используя автодополнение по tab, настроить GRUB не должно быть сложно. Теперь нужно идти конфигурировать GRUB, правда? :-)

Код 2.8: Устанавливаем GRUB в MBR

grub> root (hd0,0) (Specify where your /boot partition resides)

grub> setup (hd0) (Install GRUB in the MBR)

grub> quit (Exit the GRUB shell)

Заметка: Если вы хотите установить GRUB в некоторый раздел, а не в MBR, вам нужно изменить команду setup, чтобы она указывала на нужный раздел. Например, если вы хотите установить GRUB в /dev/sda3, то команда будет setup (hd0,2). Однако так захотят делать очень немногие пользователи.

Если у вас остались вопросы, касающиеся GRUB, проконсультируйтесь в GRUB FAQ (по адресу http://www.gnu.org/software/grub/grub-faq.html), GRUB Wiki (по адресу http://grub.enbug.org/GrubLegacy), или прочитайте info grub в вашем терминале.

Продолжайте читать с раздела «Перезагрузка системы»

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]