На главную

Установка ASP Linux Server II на FastTrak100 Lite



Copyright © 2005 М. Альхименко.
Оригинал (и самая последняя версия) этого документа находится на http://lithium.opennet.ru.
По всем вопросам обращайтесь на articles <at> lithium.opennet.ru




Собственно, кроме описания процесса установки ASP Linux Server II на FastTrak100 Lite на некоторые контроллеры Promise здесь содержится информация о том, как:
  1. Установить ASP Linux Server II на контроллер, драйвер которого инсталлятор ASP не загружает при инсталляции. Это может быть как контроллер, модуль для которого у вас есть на дискете или который он просто не захотел распознать, например Intel ICH5 и модуль ata_piix
  2. Собирать модуль под готовое ядро, существующее в rpm-пакете.
Вообщем, есть надежда, что хоть кто-то вынесет отсюда для себя что-то полезное.

Итак, перед нами стоит задача установить ASP Linux Server II на FastTrak100 Lite. Основаная проблема заключается в том, что ядро Linux определяет RAID-контроллер Promise как обычный IDE-контроллер и видит массив как несколько обычных IDE-дисков. Чтобы работать с RAID-массивом в нормальном режиме, необходимо использовать или модуль ataraid (идет в составе пакета kernel-unsupported) или родные драйвера Promise. В случае использования второго варианта, ядру передаются параметры, отключающие обнаружение устройств на всех IDE-каналах кроме первых двух. При этом RAID-массив видится системой как SCSI-диск (например, /dev/sda). Этот вариант мы и попробуем реализовать.

Кроме FastTrak100 Lite упомянутые ниже драйвера от Promise подходят для:
  • FastTrak66
  • FastTrak100
  • FastTrak100 LP/TX2/TX4
  • FastTrak TX2000
  • MBFastTrak133 Lite
  • SBFastTrak133 Lite
В исходниках модуля в файле global.h упоминаются и другие чипы — можно глянуть самому.

Поскольку создатели инсталлятора не предусмотрели использование дискеты с драйверами, как это сделано у RedHat, придется немного извратиться. Для начала нужна машина с установленным ASP Linux Server II, чтобы собрать модуль. Если у вас большая проблема со свободной машиной на день, можете использовать VMWare — все железо там нормально определяется и установка проходит без проблем. Само собой, необходимо поставить такие пакеты как make, kernel-source, gcc и пр.

Скачиваем драйвера с сайта Promise со страницы драйверов FastTrak100 TX2, они называется "Partial Linux Source Code". Promise не открывает исходников модуля, поэтому драйвера состоят из бинарного модуля ftlib.o и нескольких файлов на C, чтобы создать "обертку" вокруг этого модуля для ядра пользователя.

Итак, мы скачали исходники, распаковали их, и теперь у вас есть возможность почитать readme.txt. Желательно не пропускать этот момент. После этого приступаем к собственно сборке модуля и копирование его на дискету (заранее подготовленную и отформатированную).

  1. # cd /usr/src
  2. # ln -s linux-2.4.21-15.0.2.EL.asp/ linux (создаем symlink на каталог с исходниками ядра — без этого не будет работать)
  3. # cd linux
  4. # make mrproper (делаем профилактическую чистку следов старых сборок. Внимание, старый конфиг ядра будет удален!)
  5. # cp configs/kernel-2.4.21-i386-BOOT.config .config (копируем конфиг, с которым собиралось ядро на загрузочном CD)
  6. Убеждаемся, что в Makefile в поле EXTRAVERSION указано корректное окончание имени ядра. В ASP необходимо удалить слово "custom"
  7. # make oldconfig (это необходимо для того, чтобы заполнить параметры сборки, не указанные в конфиге из состава исходников)
  8. # make dep
  9. Переходим в каталог с исходниками для модуля
  10. Если вы еще не прочитали readme — рекомендуется это все-таки сделать
  11. # make clean all (собираем модуль)
  12. # mkdir BOOT
  13. # mv FastTrak.o BOOT (создаем каталог для собранного модуля и переносим его туда — на всякий случай)
  14. После этого копируем каталог BOOT на дискету.

Итак, модуль для загрузки у нас есть. Теперь нужно собрать модуль для ядра, которое нам поставит инсталлятор, и с которым будет работать установленная система. Тут следует иметь в виду, что инсталлятор по умолчанию ставит версию ядра под ваш процессор (i386, i686, athlon etc). Вам нужно скопировать конфиг ядра для того типа процессора, для которого будет ставиться ядро. Если вы не знаете, какой у вас тип процессора, можно выбрать конфиг для i386 и при установке отключить выбор пакетов, оптимизированных для вашей версии процессора, но этот вариант на практике не опробован. В крайнем случае, если ошибетесь, можно, не прерывая инсталляции, собрать новый модуль.

Повторяем предыдущие пункты, начиная с 4-го, за исключением имени конфига из /usr/src/linux/configs и имени каталога (пусть он будет называться "main"), в который копируем готовый модуль. Отмонтируем дискету и можно приступать к установке.

  1. Загружаемся с инсталляционного CD, успеваем нажать на ESC.
  2. Выбираем в меню пункт Options -> Linux Kernel Settings и прописываем там параметр ide0=0x1f0,0x3f6,14 ide1=0x170,0x376,15 ide2=0 ide3=0 ide4=0 ide5=0 ide6=0 ide7=0 ide8=0 ide9=0 (набирайте внимательно!)
  3. Выбираем text mode installation и после загрузки инсталлятора, не продолжая, жмем Alt+F2 и переходим во вторую виртуальную консоль
  4. # mount /dev/fd0 /mnt/ (монтируем дискету)
  5. # lsmod (смотрим, чтобы scsi_mod был загружен, если это не так делаем — insmod scsi_mod)
  6. # insmod /mnt/boot/FastTrak.o
    Загружаем наш модуль. Если мы все сделали правильно, на консоль не должно выводиться ничего, в выводе dmesg последними строками должно идти нечто вроде:
    	PROMISE FastTrak Series Linux Driver Version 1.03.0.2
    	scsi0 : FastTrak
    	  Vendor: Promise   Model: 1X2 Mirror/RAID1  Rev: 1.10
    	  Type:   Direct-Access                      ANSI SCSI revision: 02
    	Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
    	SCSI device sda: 78242816 512-byte hdwr sectors (40060 MB)
    	Partition check:
    	 sda: sda1 sda2 sda3 sda4 < sda5 sda6 >
    			
    Если на консоль выводятся сообщения о "unresolved symbols" или о чем-то похожем, значит, вы что-то сделали не так.
  7. # detect probe (пересоздаем список оборудования)
  8. # mkbiosdisks (пересоздаем список дисков для установки загрузчика)
    (эта команда была обманом и хитростью выведана у техподдержки ASP и сообщается вам по большому секрету ;) )
  9. Переключаемся на первую консоль и продолжаем установку, не забывая о оптимизированных версиях пакетов.
    Также, нужно обязательно поставить пакет mkinitrd и mc (для удобства).
  10. При выборе загрузчика советую выбрать Grub. Затем необходимо в "Дополнительно -> Параметры ядра" указать опции ide0=0x1f0,0x3f6,14 ide1=0x170,0x376,15 ide2=0 ide3=0 ide4=0 ide5=0 ide6=0 ide7=0 ide8=0 ide9=0
    (набирайте внимательно!) Также, у меня почему-то после установки не оказалось параметра "ro", проверьте, есть ли он у вас.
  11. После окончания установки, не нажимая на кнопку перезагрузки, опять переключаемся во вторую консоль.
  12. # cp /mnt/main/FastTrak.o /target/lib/modules/2.4.21-15.0.2.EL.asp/kernel/drivers/scsi (копируем модуль для только что установленного ядра)
  13. # cat /target/etc/modules.conf (смотрим на всякий случай, не затесался ли туда модуль для контроллера)
  14. Скорее всего, его там не будет, поэтому нам нужно сделать следующее:
    # echo "alias scsi_hostadapter FastTrak" >> /target/etc/modules.conf (не забудьте правильно написать знак перенаправления, а то затрете весь конфиг!)
  15. # chroot /target/
    Переходим в нашу новую систему. Теперь нам необходимо положить модуль для контроллера в initrd
  16. # mkinitd -v /boot/initrd-2.4.21-15.0.2.EL.my.img 2.4.21-14.0.2.EL.asp | less (Создаем новый файл initrd. Внимательно смотрим, чтобы туда добавился наш модуль)
  17. # echo "/boot/initrd-2.4.21-15.0.2.EL.my.img" >> /boot/grub/grub.conf (это делать необязательно, но используя автодополнение в предыдущей команде и автоповтор в этой, удается перенести точный путь в конфиг)
  18. Редактируем конфиг загрузчика — комментруем строку с опцией initrd и заменяем своей, с путем к нашему файлу. Если вы выбрали Grub и создали для /boot отдельный раздел, то следует иметь в виду, что Grub считает за корень раздел с каталогом /boot, поэтому в этом случае, необходимо удалить "/boot" из пути. Выглядит это примерно вот так:
    initrd /initrd-2.4.21-15.0.2.EL.my.img
    Если у вас каталог /boot находится на одном разделе с /, то судя по всему, убирать строку /boot смысла нет. Во всяком случае вся прелесть Grub заключается в том, что даже если вы ошибетесь в путях, их можно вручную указать при загрузке, использую командную строку Grub с очень удобной функцией автодополнения.
  19. Выходим из chroot (exit), переключаемся на первую консоль и жмем на кнопку перезагрузки. Если вы все сделали правильно, проблем быть не должно. Не забудьте в работающей системе сразу отключить автообновление ядра (man yum.conf, опция exclude) и делать это вручную, не забывая собрать модуль, подсунуть его в каталог модулей нового ядра и пересоздать initrd перед перезагрузкой. Т.к. модуль прописан в modules.conf, mkinitrd будет пытаться положить его в initrd при установке нового ядра, но поскольку его там нет, ничего не получится. Можно попробовать создать каталог для модуля заранее и положить модуль до установки ядра. При обновлении ядра лучше оставить предыдущее, чтобы в случае чего можно было загрузиться для исправления ошибок.

P.S. Если при инсталляции вы выбрали grub, следует иметь в виду, что при обновлении grub средствами yum иногда происходят странные вещи. Возможно, это связано с тем, что rpm не обновляет ссылки на новые stage-файлы в mbr. Поэтому, после обновления лучше выполнить grub-istall.

Автор выражает признательность www.google.com, техподдержке ASP и всем друзьям и знакомым, которые помогали в этой нелегкой битве ;).

Ссылки:



Рейтинг@Mail.ru