From: A. Tsylev <Atsylev@yandex.ru>, D Bashmakov <dmitryinfo@mail.ru>
Newsgroups: email
Date: Mon, 24 Nov 2003 14:31:37 +0000 (UTC)
Subject: Установка ATA RAID Promise FastTrak100 TX2 на Slackware 9.1
Установка Promise FastTrak100 TX2 на Slackware 9.1
V1.0, November 2003
by A. Tsylev (email: Atsylev@yandex.ru )
Данный документ ни в коем случае не претендует на полноту освещения
данной темы, он всего лишь описывает, как можно заставить полноценно
работать данный контроллер в ОС Линукс.
Документ не является коммерческим продуктом и может распространяться без
согласия автора только в учебных целях.
Содержание:
1. Введение .
2. Установка "с нуля".
2.1 Компилирование модуля.
2.2 Инсталляция системы.
2.3 Конфигурирование загрузчика.
2.4 О initrd и как создавать образ для предзагрузки модулей.
2.5 Необходимые опции при конфигурировании ядра.
3. Установка на рабочую систему.
4. Заключение.
5. What to do.
1.Введение.
Promise FastTrak100 TX2 является аппаратным двух канальным ATA RAID
контроллером (поддерживает 0+1, 1, 0 режимы). В Линукс поддержка
данного типа контроллеров (как и многого другого оборудования)
реализовано через эмуляцию SCSI-устройств.
В соответствии с документацией прилагаемой к исходным кодам драйвера
контроллера, ядро неправильно распознает данный контроллер как обычный
IDE контроллер (ядерный IDE драйвер захватывает управление и
препятствует загрузке необходимого драйвера для рейд-контроллера).
Соответственно необходимо заблокировать все IDE каналы кроме 1 и 2-го ,
передать адреса ввода/вывода и прерывания (это делается передачей
параметров ядру при помощи загрузчика). Основная сложность состоит в
том, чтобы загрузить модуль до инициализации контроллера, и до того, как
будут загружены scsi`ые модули. Это достигается при помощи initrd
(initial ram-disk).
Для начала необходимо собрать модуль (компилировать модуль необходимо в
той же версии ядра в которой он будет использоваться). Следует
распаковать partial linux source code и набрать make, после чего получим
FastTrak.o
В некоторых случаях в ответ на insmod FastTrak.o модульный загрузчик
выдает предупреждение о несоответствии версии текущего ядра и версии
ядра при котором модуль был скомпилирован (и отказывается загружать
данный модуль) . В этом случае необходимо с помощью hex-редактора (к
примеру khexedit) подправить модуль т.е. к примеру вместо 2.4.21
вставить 2.4.22.
Далее для удобства можно записать данный модуль на инсталляционный
диск и начать процедуру установки системы.
2.2 Инсталляция системы.
Загрузившись с установочного cd, в ответ на вопрос о выборе образа
ядра необходимо указать:
Таким образом, мы блокируем все ide-каналы кроме 1-го и 2-го и
передаем адреса i/o и прерывания контроллера ядру (чтобы узнать какие
прерывания и адреса i/o использует контроллер необходимо
воспользоваться lspci, виртуальной файловой системой /proc или
посмотреть в логах системы).
После загрузки, необходимо подгрузить модуль ( insmod FastTrak.o ) и
создать scsi-устройства
(для этого есть скрипт /dev/makedevs.sh) .
#insmod FastTrak.o
#cd /dev/
#./makedevs.sh /dev/sda
Далее можно начинать процедуру установки системы (если не подгрузить
модуль установщик напишет об отсутствии разделов) как на
scsi-устройство (т.е разделы должны выглядеть как sda1, sda2 и т.д.).
Замечание: для доступа к рейд-массиву ВСЕГДА нужно использовать
устройства /dev/sdaX.
2.3 Конфигурирование загрузчика (в данном случае LILO).
После завершения установки пакетов и конфигурирования системы (до
перезагрузки системы), необходимо подправить lilo.conf:
Строка initrd=/boot/initrd-2.4.22.img указывает загрузчику
использовать образ initrd-2.4.22.img (собственно модуль FastTrak.o там и
находиться).
2.4 О initrd и как создавать образ для предзагрузки модулей.
Для того чтобы создать образ для предзагрузки модуля FastTrak.o
необходимо понимать, как это происходит.
Итак, initrd (/dev/initrd - read-only block device) это RAM-диск,
который инициализируется загрузчиком, перед тем как стартует ядро.
Далее ядро может использовать содержимое блочного устройства
/dev/initrd для 2-х этапного процесса загрузки. На первом этапе
стартует ядро и монтирует рутовую файловую систему из содержимого
/dev/initrd, а на втором этапе загружаются различные модули, в
частности, необходимые для того, чтобы смонтировать реальную файловую
систему; т.е. после того, как загружен модуль FastTrak.o новая
рутовая файловая система (то есть реальная рутовая файловая система)
монтируется из другого устройства (в данном случае, после того, как
был загружен модуль FastTrak.o становятся доступными scsi-устройства
и монтируется реальная рутовая файловая система).
Для того чтобы создать initrd-образ можно воспользоваться утилитой
mkinitrd :
mkinitrd --preload=scsi_mod --preload=sd_mod --with=FastTrak -f /boot/initrd-2.4.22.img 2.4.22
После этого копируются необходимые устройства, бинарники (например
bash, mount, insmod и т.д.), с помощью ldd отслеживается какие
библиотеки необходимы этим бинарникам и копируются в /lib/, основные
конфигурационные файлы. После создается linuxrc (он может быть хоть
скриптом, только обязательно иметь флаг на выполнение).
Далее, в linuxrc необходимо добавить /sbin/insmod FastTrak.o,
размонтировать, сжать и поместить в /boot/ .
Пожалуйста, для полной ясности, прочитайте man 4 initrd .
2.5 Необходимые опции при компиляции ядра.
Следующие опции должны быть включены при компиляции ядра ( для поддержки
initrd):
Block devices --->
[*] Loopback device support
[*] RAM disk support
[*] Initial RAM disk (initrd) support
File systems --->
[*] Compressed ROM file system support
[*] Second extended fs support
[*] ROM filesystem support
Замечание: данные опции должны быть жестко встроены в ядро (ни в коем
случае не модулями), иначе при загрузке образ initrd не будет загружен
и ядро не сможет смонтировать реальную рутовую файловую систему и в
результате - kernel panic .
3. Установка на рабочую систему.
Схема установки драйвера на рабочую систему очень схожа с предыдущей.
Необходимо:
- собрать модуль из исходников (и при необходимости подправить его)
- сделать initrd образ и запихнуть туда модуль
- подправить lilo.conf на предмет root=/dev/sda и initrd=/boot/initrd.img
- подправить конфигурационные файлы (к примеру /etc/fstab и т.д.)
- при необходимости пересобрать ядро с поддержкой initrd
4. Заключение.
В результате работы было установлено, что существует возможность
полноценной работы данного устройства в ОС Линукс (в данном случае
Slackware 9.1 , но это не принципиально).
Кроме того, было установлено, что существующий linux native driver
(входящий в состав ядра версии 2.4.22) реально не работает. Поэтому,
единственный возможный способ использования устройства - partial
linux source code от производителя .
5. What to do.
Так как данный контроллер не содержит никаких аппаратных средств
мониторинга состояния массива, в случае отказа одного из устройств,
есть вероятность не заметить этого. Отказ же второго устройства будет
настоящей катастрофой. Чтобы избежать этого, необходимо написать
какой-нибудь механизм мониторинга (так называемый механизм watchdog),
что и предстоит сделать.
1063 Прочтений • [Установка ATA RAID Promise FastTrak100 TX2 на Slackware 9.1 (hardware slackware linux disk raid ide)] [08.05.2012] [Комментариев: 0]