четверг, 8 октября 2009 г.

Установка Gentoo Linux на полусофт RAID

На днях, в очередной раз, возникла задача установить Gentoo. Сама по себе задача не очень сложная, при наличии опыта, к тому же есть подробная инструкция - последняя версия на английском Gentoo Linux HandBook , или Настольная книга Gentoo Linux x86 на русском, правда от 2006 года. Но в этот раз нужно было поставить на RAID1 от LSI Logic.

UPD. 04.06.2013 В связи с установкой нового сервера образовались изменения/дополнения читать тут.

Первым делом, как не трудно догадаться, создаем массив дисков в LSI Logic Embedded SATA RAID Setup Utility, после чего загружаемся с установочного диска Gentoo, выбрав ядро и указав дополнительные параметры:
boot: gentoo dodmraid
Где gentoo - ядро, используемое по умолчанию, dodmraid - параметр. сообщающий ядру о необходимости иcпользования dmraid. Далее следуем инструкциям Gentoo Linux HandBook до пункта "4. Подготовка дисков", тут у нас возникает дополнительный этап.
Приступим:



Настройка RAID
Проверяем, видит ли система созданный массив:
livcd~# dmraid -s
Если все в порядке и созданный RAID обнаружен, то получаем сообщение вида:
*** Group superset .ddf1_disks
--> Active Subset
name   : ddf1_4c53492020202020808627c30000000037fc77cc00000a28
size   : 974608384
stride : 128
type   : mirror
status : ok
subsets: 0
devs   : 2
spares : 0

Активируем найденный массив:
livecd~# dmraid -ay
Проверяем содержимое папки /dev/mapper на наличие устройств активированных device mapper'ом:
livecd~# ls /dev/mapper
control
ddf1_4c53492020202020808627c30000000037fc77cc00000a28 - наш массив
 Проверяем содержимое папки /dev на наличие ссылки на активированный RAID
livecd~# ls /dev|grep dm
dm-0
Теперь можно создавать разделы согласно Gentoo Linux HandBook
livecd~# fdisk /dev/dm-0
После разбиения диска, для того что бы инициализировать вновь созданные разделы, выполняем:
livecd:~# dmraid -ny
livecd:~# dmraid -ay
 Проверяем содержимое папки /dev/mapper на наличие устройств:
livecd~# ls /dev/mapper
control
df1_4c53492020202020808627c30000000037fc77cc00000a28 #масиив
df1_4c53492020202020808627c30000000037fc77cc00000a281 #раздел 0
df1_4c53492020202020808627c30000000037fc77cc00000a282 #раздел 1
df1_4c53492020202020808627c30000000037fc77cc00000a283 #раздел 2
Соответственно в папке /dev появятся ссылки на эти устройства:
/dev/dm-0
-------------
/dev/dm-3
Для того чтобы установленная система в дальнейшем могла видеть созданный RAID в процессе загрузки, необходимо будет записать таблицу диска в файл /etc/dmtab на целевой системе, этот момент, как ни странно, авторами как правило опускается, что способно довести новичка в linux до истерики -"Все делаю по инструкции, но ничего не работает!". Вот тут нам поможет dmsetup!
livecd~# dmsetup table > /dmtab
Посмотрим, что из этого вышло:
livecd~# cat /dmtab

ddf1_4c53492020202020808627c30000000037fc77cc00000a283: 0 125853210 linear 253:0 18908505
ddf1_4c53492020202020808627c30000000037fc77cc00000a28: 0 974608384 mirror core 2 131072 nosync 2 8:0 0 8:0 0
ddf1_4c53492020202020808627c30000000037fc77cc00000a282: 0 16787925 linear 253:0 2120580
ddf1_4c53492020202020808627c30000000037ffc77cc00000a281: 0 2120517 linear 253:0 63
Если в результате видим нечто подобное, то можем смело продолжать дальше.
Возвращаемся к Gentoo Linux HandBook и начиная с пункта "4.d. Создание файловых систем" прилежно следуем инструкциям до пункта "7.b. Установка исходных кодов ядра" включительно. 
До переключения (chroot) в новую среду не забываем скопировать наш файл /dmtab в папку /mnt/gentoo/etc!


Настройка ядра.
Для нормально работы, нам требуется собрать ядро с поддержкой dmraid, если Вы в себе уверены и четко знаете какие модули для этого нужно включить, можете смело настраивать ядро в ручную. Я пока к этому не готов, поэтому будем использовать  для сборки ядра утилиту genkernel.
Устанавливаем device-mapper и genkernel:
(chroot)livecd~# emerge device-mapper genkernel
Теперь скопируйте настройку ядра, используемую установочным диском, в каталог, где genkernel ищет настройку по умолчанию: 
(chroot)livecd~# zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6
Запускаем genkernel с ключем dmraid:
(chroot)livecd~# genkernel --dmraid all
Если есть желание посмотреть/исправить конфигурацию ядра создаваемого genkernel, можно выполнить команду:
(chroot)livecd~# genkernel --menuconfig --dmraid all
Будет запущена утилита изменения конфигурации ядра, по выходу из нее запустится процесс компиляции.


Устанавливаем dmraid
(chroot)livecd~# emerge dmraid
Снова возвращаемся к Gentoo Linux HandBook и продолжаем выполнять инструкции, до момента настройки загрузчика Grub


Устанавливаем Grub
(chroot)livecd~# emerge grub
Если в папке /dev отсутствует подпапка mapper, то ее необходимо создать, иначе grub будет ругаться на неизвестные устройства.
 (chroot)livecd~# dmsetup mknodes
Установка Grub в MBR 
Если не удается установить Grub в MBR методом описанным в HandBook, прописываем диск в Grub вручную. Запускаем fdisk и записываем информацию о диске, нам нужно знать число головок(H), количество секторов(S) и количество цилиндров(C).
Запускаем Grub
(chroot)livecd~# grub --device-map=/dev/null
Открывается консоль Grub, мы должны указать какое "linux устройство" какому "bios устройству" соответствует. Если наш загрузочный диск /dev/mapper/ddf1_4c53492020202020808627c30000000037ffc77cc00000a281, то во время загрузки он будет называться (hd0,0), если /dev/mapper/ddf1_4c53492020202020808627c30000000037ffc77cc00000a282, то (hd0,1) и т.д..
Сначала укажем Grub на каком диске искать разделы:
grub> device (hd0) /dev/mapper/ddf1_4c53492020202020808627c30000000037ffc77cc00000a28
Описываем геометрию диска:
grub> geometry (hd0) C H S
где C S H это количество цилиндров, секторов и головок соответственно. Эти данные мы получили ранее с помощью fdisk. Теперь Grub знает, где находится загрузочный раздел и куда писать MBR. Следующий шаг - установка:

grub> root (hd0,0)
grub> setup (hd0)
grub> quit

 Здесь (hd0,0) нужно заменить на раздел, который используется у Вас в качестве загрузочного, т.е. (hd0,1), (hd0.2)...

Редактируем grub.conf
Тут основная хитрость в том что бы правильно прописать разделы диска. Если при установке grub мы указывали раздел в виде - dev/mapper/ddf1_4c53492020202020808627c30000000037ffc77cc00000a281, то тут указывается /dev/dm-1, поскольку при загрузке device mapper меняет имя устройства в папке /dev/mapper и пересоздает ссылку на это устройство. Соответственно в fstab прописывается так же /dev/dm-1, /dev/dm-2.../dev/dm-N.


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


title Gentoo Linux 2.6.30-gentoo-r6
root (hd0,0) #Меняем (hd0,0) на свой загрузочный раздел
kernel /boot/ваше_ядро root=/dev/ram0 real_root=/dev/dm-3 ramdisk=8192 dodmraid udev #dm-3 это раздел монтируемый в /
initrd /boot/ваш_образ_initrd


Перезагружаемся и наслаждаемся работой в новой системе, если, конечно нигде не ошиблись...

Ссылки:
Настольная книга Gentoo Linux x86
Gentoo Linux x86 Handbook
HOWTO Gentoo Install on Bios (Onboard) RAID

P.S.
Критика по существу приветствуется, как по оформлению, так и по сути.
Вполне возможно что не указал некоторые ссылки на источники, если кто напомнит - буду рад исправиться.
Сильно не ругайте, все же первый пост.

1 комментарий:

  1. супер! то что я давно искал. спасибо за подробную статью!

    ОтветитьУдалить