The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Установка ATA RAID Promise FastTrak100 TX2 на Slackware 9.1 (hardware slackware linux disk raid ide)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: hardware, slackware, linux, disk, raid, ide,  (найти похожие документы)
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). 2. Установка "с нуля". Исходные данные: - Slackware 9.1 - Kernel source code v.2.4.22 - Partial linux source code (from www.promise.com) 2.1 Компилирование модуля. Для начала необходимо собрать модуль (компилировать модуль необходимо в той же версии ядра в которой он будет использоваться). Следует распаковать partial linux source code и набрать make, после чего получим FastTrak.o В некоторых случаях в ответ на insmod FastTrak.o модульный загрузчик выдает предупреждение о несоответствии версии текущего ядра и версии ядра при котором модуль был скомпилирован (и отказывается загружать данный модуль) . В этом случае необходимо с помощью hex-редактора (к примеру khexedit) подправить модуль т.е. к примеру вместо 2.4.21 вставить 2.4.22. Далее для удобства можно записать данный модуль на инсталляционный диск и начать процедуру установки системы. 2.2 Инсталляция системы. Загрузившись с установочного cd, в ответ на вопрос о выборе образа ядра необходимо указать: bare.i ide0=0x1f0,0x3f6,14 ide1=0x170,0x376,15 ide2=0 ide3=0 ide4=0 ide5=0 ide6=0 ide7=0 ide8=0 ide9=0 Таким образом, мы блокируем все 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: image=/boot/vmlinuz-2.4.22 label=linux-2.4.22 append="ide0=0x1f0,0x3f6,14 ide1=0x170,0x376,15 ide2=0 ide3=0 ide4=0 ide5=0 ide6=0 ide7=0 ide8=0 ide9=0" initrd=/boot/initrd-2.4.22.img root=/dev/sda1 read-only после чего дать команду lilo и перезагрузиться. Строка 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 В общем случае поступают так: - dd if=/dev/zero of=/initrd.img bs=1024k count=24 - mke2fs -v -m0 /initrd.img - mount -o loop initrd.img /mnt/ После этого копируются необходимые устройства, бинарники (например 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), что и предстоит сделать.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1.1, Dimez (?), 18:24, 25/11/2003 [ответить]  
  • +/
    Собрал пакадж mkinitrd под Slackware-9.1
    ВНИМАНИЕ!!!
    Пакадж заменяет mktemp из стандартных bin-x.y.z, пока вроде глюков замечено не было...
    http://dimez.nm.ru/packages/
     
  • 1.2, Mike (?), 20:33, 25/11/2003 [ответить]  
  • +/
    что значит нет мониторинга?
    имеете в виду специальных программ? тогда может и да, но статус массива можно проверить. И в сислог бросается сообщение, что такой-то диск отказал...
    А уж скрипт написать, который по крону будет этот статус смотреть - не проблема...
    $cat /proc/scsi/FastTrak/0
    PROMISE FastTrak Series Linux Driver Version 1.02.0.25
    Adapter1 - FastTrak100, IRQ(11)
    Array    - Array[1] : 1X2 Mirror (OK)
    Drive    -
      1: ST340810A      Pri/Master Array[1]  40020MB BASE(0xdc00) BM(0xcc00) UDMA5
      3: ST340810A      Sec/Master Array[1]  40020MB BASE(0xd400) BM(0xcc08) UDMA5
    А если винты установлены в SuperSwap от того же Promice, то выдается еще и такая информация:
    SwapBox  -
      1 : SuperSwapBox  - RPM(6081) TmpC(32╟C) TmpF(89╟F) Vcc(5.0V) V12(12.1V)
      3 : SuperSwapBox  - RPM(6136) TmpC(28╟C) TmpF(83╟F) Vcc(4.9V) V12(12.0V)
     
  • 1.3, caesar (?), 22:29, 26/11/2003 [ответить]  
  • +/
    >>Кроме того, было установлено, что существующий linux native driver (входящий в состав ядра версии 2.4.22) реально не работает

    Поясните эту фразу. Как это не работает? Работает, очень даже реально.
    Мне кажется, что эмуляция SCSI - это далеко не лучшая идея. Диски-то IDE...

     
     
  • 2.4, brain (?), 23:18, 27/11/2003 [^] [^^] [^^^] [ответить]  
  • +/
    >>>Кроме того, было установлено, что существующий linux native driver (входящий в состав ядра версии 2.4.22) реально не работает
    >
    >Поясните эту фразу. Как это не работает? Работает, очень даже реально.
    >Мне кажется, что эмуляция SCSI - это далеко не лучшая идея. Диски-то
    >IDE...

    Поддерживаю вопрос. У меня уже давно работает TX4 и без всяких патчей. Но я не берусь утверждать, что это правильно. Объясните пж., почему вы "призываете" использовать драйвер от производителя взамен "родного" драйвера встроенного в ядро?

    (Кстати хочу заметить: сейчас TX4 работает на драйверах включенных в linux-2.4.20. Но есть замечание, которые видны не вооруженным глазом. Например: заливаем iso ~700mb на диски подключеные к TX4, делаем копию на эти же диски... процесс копирования перебивается паузами на 1-2 сек. На 700mb повторяется 4-6 раз)

     

  • 1.6, Android (?), 14:31, 11/12/2003 [ответить]  
  • +/
    А у меня стоит TX2000
    работает в других дистрибутивах без проблем
    с модулем ядра pdcraid.o
    через /dev/ataraid/d0
    Пробовал и через /dev/sda со скаченным работать, но
    так и не понял, что меньше грузит процессор и где быстрей ввод/вывод идёт
    Народ, кто нибудь сравнивал эти два способа?
    Поделитесь впечатлениями.

     
     
  • 2.7, Max (?), 22:13, 29/12/2003 [^] [^^] [^^^] [ответить]  
  • +/
    Лучше расскажи как ты заставил работать встроенный в ядро драйвер.
    У меня под SuSE 8.1 так и не удалось его поднять.

    При попытке загрузить модуль ругается что устройство не найдено или неверные IRQ, etc...

    а вот промайзовский драйвер завелся "на ура"

     

  • 1.8, hsx (?), 14:02, 03/02/2004 [ответить]  
  • +/
    Так как описано для Promise FastTrak378 не получается.  Может поможеш? зеркала нужны очень
     
  • 1.9, Санл (?), 17:53, 20/02/2004 [ответить]  
  • +/
    Как поставить и настоить
    Поставить вроде удалось после прикрепления модуля ft3xx.o а чтоб ядро потом работало так нет
     
  • 1.10, Alexey A. Astashov (?), 15:17, 03/12/2005 [ответить]  
  • +/
    Доп к FAQ:
    В общем проблема решилась следующем образом.
    Установил на соседнюю машину RedHat 9.0 у нее ядро 2.4.20-8, взял нормальный драйвер под RedHat 9.0 с сайта промис установил его с помощью входящего в комплект install, скопировал готовый файл из /lib/modules.... на машину с RedHat 7.3 с ядром 2.4.20-28.7, FastTrak.o назвал как ftxxx.txt зашел в mc по F3 в HEX редактор, пожертвовав License GPL поправил версию ядра на 2.4.20-28.7, скопировал в /lib/modules/kernel-2.4.20-28.7/drivers/scsi/ как FastTrak.o далее сделал
    #mkinitrd /boot/initrd-2.4.20-28.7.img 2.4.20-28.7
    #init 6
    выбрал ядро новое и все стало ок.

     

    лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру