Интерфейсы UDMA в виде PCI плат

Существуют интерфейсы UDMA, выполненные в виде PCI-плат, позволяющие установить поддержку UDMA без замены материнской платы, или для установки четырех дополнительных устройств. К тому же, они изначально устанавливаются на некоторые виды компьютеров (Gateway 2000, Dell).

Большинство из них не поддерживаются старыми ядрами (2.0.x), но многие из них должны работать с ядром 2.2.x и, соответственно, с дистрибутивами, основанными на этих версиях (RedHat 6.0, SuSE 6.1). Тем не менее, некоторые последние платы (например Promise Ultra66) не работают даже с текущими ядрами версий 2.2.x. Если у вас есть такая плата, то либо надо произвести патч ядра, либо установить свежий дистрибутив. В случае, если вам надо установить Linux на жесткий диск, подключенный к такой интерфейсной плате, то придется использовать пару фокусов:

Promise Ultra33

Это PCI-карта с двумя UDMA-каналами, поддерживающая до четырех устройств http://www.promise.com. Она поставлялась с ранними моделями компьютеров Gateway 2000 Pentium II.

Ядра 2.0.35 и выше, и все 2.2.x поддерживают Ultra33, и у вас не должно быть проблем с установкой дистрибутивов. Тем не менее, старые версии (2.0.34) не имеют такой поддержки, и вам будет сложно установить старый дистрибутив, если не можете или не хотите использовать новый (например, если это утвержденная версия в вашей организации).

Установка Linux и Ultra33

Хотя существует патч для Ultra33, не так уж просто его применить и пересобрать ядро, если нет инсталлированного Linux. Так что вам понадобятся следующее (спасибо Gadi Oxman'у):

Если во время инсталляции у вас есть доступ к консоли, использовуйте
команду "cat /proc/pci", чтобы посмотреть установки Promise Ultra33:


    RAID bus interface: Promise Technology Unknown device (rev 1).
      Vendor id=105a. Device id=4d33.
      Medium devsel.  IRQ 12.  Master Capable.  Latency=32.
      I/O at 0xe000.   (a)
      I/O at 0xd804.   (b)
      I/O at 0xd400.   (c)
      I/O at 0xd004.   (d)
      I/O at 0xc800.   (e)

и использовать параметры "ide2=a,b+2 ide3=c,d+2" при запуске ядра.

В нашем случае это будет "ide2=0xe000,0xd806 ide3=0xd400,0xd006". Замечу, что в вашем случае цифры могут отличаться. Если у вас только один винчестер или два на одном кабеле, то можете не указывать ide3.

Red Hat 5.1: Загрузитесь с загрузочной дискеты и нажмите "Enter", когда появится приглашение. Когда запустится ядро, выберите язык, тип клавиатуры и вид инсталляции. Выберите, откуда будет производиться установка (пока это не имеет значения). Когда появится "Выберите путь к дистрибутиву", нажмите Alt-F2, и вы попадете в командный режим. Запустите "cat /proc/pci", запишите цифры и снова загрузитесь с загрузочной дискеты. Наберите "linux ide2= (цифры как в примере выше) ide3=(еще цифры)". Теперь можете без проблем поставить дистрибутив на винчестер. Тем не менее, вы не сможете поставить LILO. Вместо этого сделайте загрузочную дискету и загрузитесь с нее с теми же параметрами. Затем вы можете произвести патч ядра.

Red Hat 5.0 и Slackware 3.4: Примерно так же, но программа инсталляции этих дистрибутивов не позволяет устанавливать Linux на /dev/hde-h (устройства на ide2 и ide3). В этом случае необходимо использовать ide0 и ide1, вместо ide2 и ide3. Только не забудьте про устройства, необходимые для инсталляции. Например, если мы хотим поставить Linux c CD-ROM /dev/hdd (интерфейс ide1 на материнской плате) на винчестер /dev/hdd (ide2 - Ultra33), то должны использовать свободный ide0, а ide1 оставить без изменения. В нашем случае мы должны загрузится с параметром "ide0=0xe000,0xd806". В Red Hat 5.0 в командный режим можно попасть, используя "аварийный диск" (rescue disk). В Slackware в командный режим можно попасть в процессе стандартной установки. Тем не менее, в Red Hat 5.0 трудно загрузить Linux после окончания установки. Если у вас появились проблемы с загрузкой, попробуйте использовать загрузочный диск из Slackware ftp://ftp.cdrom.com/pub/linux/slackware-3.5/bootdsks.144/

С другими дистрибутивами Linux вам придется немного поимпровизировать, но процесс должен быть похож на вышеописанный.

ВАЖНО: Без патча (описываемого в разделе "Унифицированные патчи IDE"), ядру необходимы эти параметры, чтобы иметь доступ к диску! Следовательно, вы должны сконфигурировать LILO, вне зависимости, находится ли оно на винчестере или на флоппи-диске. Вы должны указать те же самые параметры, что и во время инсталляции, иначе система не загрузится! И придется указывать эти параметры вручную для LILO. Также вы можете, как можно быстрее, произвести патч ядра, и больше не придется беспокоится о параметрах загрузки. И еще, не существует возможности передать параметры ядру, находящемуся на флоппи-диске (сделанному при помощи "make zdisk"), т.е. вы должны использовать LILO (или LOADLIN).

В случае, если ядра без патча и программы инсталляции не могут использовать ide2 и ide3, даже если устройства определились правильно, попробуйте указать ide0 или ide1, вместо ide2 и ide3. Это, по сути, отключает IDE интерфейс материнской платы, и можете следовать инструкциям так, как если бы физически заменили интерфейс. Замечу, что если вы используете IDE CD-ROM, подключенный к материнской плате, но должны убедиться, что не перекрыли этот интерфейс. Если CD-ROM на hda или hdb, используйте ide1. Если он на hdc или hdd, используйте ide0.

Другой вариант установки Linux и Ultra33

Если вы не можете добиться желаемого результата программным путем, то попробуйте более грубый метод. Этот альтернативный метод практически должен сработать, но придется залезть в компьютер, со всеми выходящими отсюда последствиями. ВНИМАНИЕ: Если процесс подключения/отключения IDE устройств вам не знаком, то, перед тем как начать, прочитайте руководства, идущие вместе с компьютером, винчестером и/или с Promise Ultra33! Если вы что-нибудь открутите и не будете знать, как это поставить обратно, то останется лишь сожалеть об этом!

Как было сказано, все очень просто. В большинство современных материнских плат встроены IDE-интерфейсы. Отключите винчестер от Ultra33 и подключите его к материнской плате. Если к материнской плате подключены другие IDE устройства, такие как CD-ROM или ZIP, то очень просто подключить винчестер к свободному разъему кабеля IDE или временно отключить устройство, которое сейчас вам не нужно (стриммер или ZIP). Установите Linux. Скачайте и примените патч для Promise UDMA (см. следующий раздел).

Теперь вы готовы (почти) к тому, чтобы подключить винчестер обратно к Promise. Чтобы обезопасить себя, сделайте загрузочный диск с ядром (cd /usr/src/linux ; make zdisk), с которого можете загрузиться, если не получится с винчестера. На самом деле, лучше всего сделать два диска и один спрятать.

Хорошо, теперь настало время немного подумать: если у вас только один жесткий диск, и он будет подключен к Promise, то скорее всего он будет /dev/hde (a и b - это первичный интерфейс, c и d - это вторичный интерфейс материнской платы). Если вы хотите подключить другие устройства к первичному интерфейсу Promise, это будет /dev/hdf, к вторичному - /dev/hdg и /dev/hdh.

Отредактируйте /etc/fstab, сменив все разделы на винчестерах, отключаемых от материнской платы (/dev/hda, hdb, и т.д.), на соответственные значения в Promise (/dev/hde, hdf, и т.д.). Если вы хотите переподключить другие устройства (такие как CD-ROM или ZIP), смените и их. Например, если CD-ROM сначала был на /dev/hda, а туда вы подключали жесткий диск, и он теперь на /dev/hdb или /dev/hdc, поставьте обратно /dev/hda.

Если вы используете LILO, настройте его на загрузку с правильного устройства (если не знаете как, прочитайте LILO mini-HOWTO), иначе не удастся загрузиться даже с загрузочной дискеты, которая у вас есть, т.к. ее тоже нужно настроить на загрузку с нового раздела. Это можно сделать при помощи команды rdev. Вставьте диск в дисковод и наберите "rdev /dev/fd0 /dev/hde1". Только, конечно, вам нужно указать правильный корневой раздел (у меня, например, /dev/hde7)!

Перезагрузитесь. Система должна работать нормально.

Патч для Ultra33

Ядра 2.0.35 и выше поддерживают Promise Ultra33; скачайте и установите ядро из вашего дистрибутива или с http://www.kernel.org.

В качестве инструкции по сборке ядра, прочитайте Kernel HOWTO.

Использование других карт Ultra33 на одной машине

В данный момент это не поддерживается: не делайте это прямо сейчас, если вы только не хотите возиться с ядром, чтобы заставить их работать.

Promise Ultra66

По сути это та же Ultra33, но поддерживающая UDMA в режиме 4 со скоростью передачи 66МБ/сек

Патч для ядер 2.0.x и 2.2.x доступен на http://www.kernel.org/pub/linux/kernel/people/hedrickК тому же поддержка этих карт включена в серию 2.3.x (начиная с 2.3.3).

Тем не менее, чтобы произвести патч или заменить ядро, вам нужно использовать те же фокусы, как и для Ultra33 в предыдущем разделе. Или использовать загрузочный диск, provided by Promise

Artop ATP850UF

Эта карта поддерживается унифицированным кодом IDE. Инсталляция Linux на жесткий диск, подключенный к этой плате, потребует того же, что и для Promise Ultra33.

Добавление файлов устройств

Третий и четвертый интерфейс IDE (ide2 and ide3) используют файлы от /dev/hde* до /dev/hdh*. В старых дистрибутивах они автоматически не создаются, так что вам придется создать их вручную.

Это можно довольно просто сделать, если у вас установлены исходные тексты ядра. Просто запустите /usr/src/linux/scripts/MAKEDEV.ide, и он создаст все необходимые файлы устройств.