../SHpora/Linux/GrUB


dd и MBR:

http://www.youisbee.ru/index.php/documents/25-linux/62-dd.html

Команда, которая скопирует нам MBR в файл backup.mbr выглядит так:

# dd if=/dev/hda of=backup.mbr bs=512 count=1

1+0 записей считано
1+0 записей написано
скопировано 512 байт (512 B), 0,000358146 секунд, 1,4 MB/s
Резервная копия создана, теперь главное не забыть, где она лежит. И если какой-нибудь вредный дистрибутив криво установит нам загрузчик Grub, то мы спокойно проделаем обратную операцию:
# dd if=backup.mbr of=/dev/hda bs=512 count=1


Настройка Grub для второго HDD:

http://jedi-linux.blogspot.com/2008/04/grub-hdd.html

Очень мне нравится данный загрузчик, работает как часы и еще мощно конфигурируется.
Но вот недавно столкнулся с одним нюансом, о котором и хочу рассказать.

Предистория.
В моей системе используется один жесткий диск (sda1), который полностью отдан во владение Kubuntu 7.10. И вот на днях, возникла необходимость установить Windows-XP на отдельный жесткий диск.

Отключив свой жесткий диск с Kubuntu, и подключив диск для Windows как второй SATA была произведена установка системы, после чего первый винт был возвращен на свое место. Но при загрузке второй операционки, возникли реальные трудности.

Теперь задача - добиться загрузки обоих систем выбором соответствующего пункта из загрузчика.

Параметры Grub.
Основные параметры загрузчика задаются в файлах menu.lst и device.map, которые находятся в директори /boot/grub/.

В Kubuntu, по-умолчанию, файл device.map выглядит так:

(hd0) /dev/sda
а строки загрузки в menu.lst - вот так (с сокращенной строкой root=UUID):
title  Ubuntu 7.10, kernel 2.6.22-14-generic
root  (hd0,0)
kernel  /boot/vmlinuz-2.6.22-14-generic root=UUID=... ro quiet splash locale=ru_RU
initrd  /boot/initrd.img-2.6.22-14-generic
quiet

title  Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode)
root  (hd0,0)
kernel  /boot/vmlinuz-2.6.22-14-generic root=UUID=... ro single
initrd  /boot/initrd.img-2.6.22-14-generic

title  Ubuntu 7.10, memtest86+
root  (hd0,0)
kernel  /boot/memtest86+.bin
quiet
Ну а теперь о тех изменения, которые пришлось внести в конфигурационные файлы загрузчика Grub.

Шаг 1.
Создаем, а точнее добавляем появившийся диск в "карту" загрузчика. Для этого в файле /boot/grub/device.map добавляем строку того устройства, который подключили. В моем случае выглядит так:

(hd0) /dev/sda
(hd1) /dev/sdb
Как я понимаю, цифра после слова hd показывает порядковое состояние винта по контроллерам. Т.е. получается что для SATA-дисков будет такая нумерация:

    * (hd0) = /dev/sda
    * (hd1) = /dev/sdb
    * (hd2) = /dev/sdc
    * (hd3) = /dev/sdd

Ну а для IDE-дисков соответственно:

    * (hd0) = /dev/hda
    * (hd1) = /dev/hdb
    * (hd2) = /dev/hdc
    * (hd3) = /dev/hdd

и так далее...

Шаг 2.
Тут необходимо учитывать, что Windows "желает" грузиться только с первого диска. А так как он реально находится на втором HDD, то его необходимо "обмануть". Делается это командой map. С ее помощью можно отобразить hd0 как hd1 и hd1 как hd0 - иначе, можно виртуально переставлять жесткие диски.

В итоге, добавленные строки дополнительного пункта меню для загрузки еще одной операционки в файл /boot/grub/menu.lst выглядят так:

title  Windows-XP
rootnoverify (hd1,0)
map (hd0) (hd1)
map (hd1) (hd0)
makeactive
chainloader +1
Вот и все! Все грузится, все работает.
:-)


eof