12.2. Переход с LILO на GRUB

Проблема

Вы ознакомились с преимуществами GRUB, описанными в предыдущем разделе. Сейчас вы используете LILO, но хотите перейти на GRUB, причём так, чтобы не переделывать всю систему.

Решение

Переход на GRUB не нарушает работоспособности системы.

Прежде всего установите GRUB или обновите программу до последней версии. Номер версии определяется командой:

$ grub --version
grub (GNU GRUB 0.94)

Затем выполните ряд подготовительных действий:

  1. Распечатайте таблицу разделов (fdisk -l).
  2. Распечатайте файл lilo.conf.
  3. Создайте резервную копию данных и держите под рукой диск аварийного восстановления (загрузочную дискету LILO или диск Knoppix).
  4. Оставьте установку LILO на случай, если вы захотите вернуться к ней.

Затем выполните следующие действия:

  1. Создайте загрузочную дискету GRUB.
  2. Установите GRUB в MBR.
  3. Загрузите систему.
  4. Отредактируйте конфигурационный файл GRUB, menu.lst.

Чтобы создать загрузочную дискету, найдите каталог /grub/i386. Его «официальное» местонахождение — /usr/lib/grub/i386-pc, но в Red Hat используется каталог /usr/share/grub/i386-pc. В других дистрибутивах также могут существовать различия. Скопируйте файлы stage1 и stage2 на дискету командой dd:

$ dd if=stage1 of=/dev/fd0 bs=512 count=1
1+0 records in
1+0 records out
512 bytes transferred in 0.550740 seconds (930 bytes/sec)
$ dd if=stage2 of=/dev/fd0 bs=512 seek=1
209+1 records in
209+1 records out
107250 bytes transferred in 6.889581 seconds (15567 bytes/sec)

Загрузите систему с дискеты. Теперь необходимо найти корневое устройство, то есть раздел с загрузочными файлами GRUB первой и второй стадии загрузки:

grub> find /boot/grub/stage1
(hd0,0)

Задайте корневое устройство:

grub> root (hd0,0)

Обратите внимание: в GRUB используется собственная схема нумерации разделов. Запись (hd0,0) соответствует /dev/hda1 (см. подраздел «Комментарий»).

Теперь установите GRUB в MBR (первый сектор первого диска):

grub> setup (hd0)

Пора завершить загрузку. Снова задайте корневое устройство:

grub> root (hd0,0)

Введите путь к ядру и корневой файловой системе. Данные берутся из файла lilo.conf. Обязательно присоедините ключ ro, чтобы ядро и корневая файловая система монтировались только для чтения:

grub> kernel /boot/vmlinuz-2.4.21 root=/dev/hda1 ro

Не путайте root в строке kernel с корневым устройством. Root в строке kernel идентифицирует корневую файловую систему, тогда как корневым устройством называется раздел, содержащий каталог /boot.

Вероятно, теперь стоит создать меню загрузки GRUB. За подробностями обращайтесь к рецепту 12.9.

Комментарий

Всегда проверяйте диски аварийного восстановления перед тем, как их использовать.

GRUB использует собственную схему нумерации разделов; отсчёт начинается с 0, а не с 1. Диски IDE и SCSI обозначаются hd, а флоппи-дисководы — fd.

Таблица разделов Linux:

В GRUB она принимает следующий вид:

Дополнительные диски обозначаются hda, hdb и так далее. Таким образом, (hd0,3) — это то же самое, что /dev/hda4, а (hd1,5) соответствует /dev/hdb6.

См. также

Раздел «Введение» настоящей главы; раздел 12.7; раздел 12.9; The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub.