Эта статья прислана на конкурс.
i8088 (автор играет на конкурсе под псевдонимом)
Хочу рассказать про историю появления у меня платы SuperMicro P6DLS и про введение ее в эксплуатацию. Я писал вкратце об этом на форуме vogons.org, однако здесь хочу написать
более подробно. Не все еще реализовано, что хотелось, однако расскажу о том, что уже сделано. Приношу извинения за невысокое качество фотографий.
Скажу сразу — я любитель чипсета Intel i440lx (это первый Intel чипсет с AGP и SDRAM для процессоров P6, штатно поддерживается FSB не более 66MHz). Всегда считаю нахождение достойной платы на этом чипсете важным событием. Однопроцессорных плат на i440lx у меня имеется несколько, но долгое время не попадалось ни одной двухпроцессорной. Однако в марте 2015 года, я просматривал ebay и увидел аукцион на SuperMicro P6DLS (dual i440lx со SCSI) в комплекте с одним процессором PentiumII-233 Klamath всего за 10$! Карты для заказов с ebay у меня по некоторым причинам до сих пор нет, однако мой товарищ сделал для меня ставку. К моему удивлению, больше желающих не нашлось, возможно сказалось предупреждение продавца о погнутых пинах (floppy, IDE, SCSI и коннектора кнопок/светодиодов передней панели). Оно и к лучшему! Плата была куплена по начальной цене, и пришла ко мне примерно через две недели. Все было упаковано как положено, плата оказалась рабочей, только несколько "потертой" предыдущей жизнью, о чем собственно и предупреждалось. Вот, собственно, оригинальное фото P6DLS с того аукциона на ebay.
А вот фото полученной платы, уже с двумя процессорами PentiumII-300 (об этом ниже).
Плата, судя по инструкции, поддерживает только процессоры PentiumII Klamath (Vcore 2.8V). Изначально я хотел поставить два имеющихся одинаковых Klamath 266MHz, но не хватало двух одинаковых (или хотя бы похожих) больших радиаторов для Klamath, а ставить совершенно разные не хотелось, т.к. некрасиво. С небольшими же радиаторами в летнее время Klamath-ы будут очень горячими (эти процессоры довольно "прожорливы"). Однако осмотр моей платы (rev 3.0) показал, что она оснащена VRM CS5155, который в отличие от своего предшественника CS5150 обеспечивает напряжения от 1.3 до 3.5V (CS5150 умеет только от 2.1 до 3.5V). Соответственно, Deschutes с его 2.0V Vcore должен работать! Дополнительно это дает возможность поставить 1GB памяти (дело в том, что Klamath кэширует только 512MB RAM, а Deschutes все доступную память).
В моем распоряжении имелась пара PentiumII-300 Deschutes SL2W8. Один из них был установлен, плата запустилась, но не работал L2 cache, а CPU определялся как "unknown CPU". Проблема очевидно кроется в старом BIOS, и собствнно SuperMicro в последней версии BIOS (DLS2081.ROM) добавил поддержку процессоров Deschutes. Сказано об этом было довольно туманно: "Supports Pentium II/Celeron Slot1". Осталось всего ничего — прошить.
Кстати интересно, что BIOS DLS2081.ROM общий для плат P6DLF (AT "монстр", dual i440lx в AT исполнении), P6DLS, P6DLE (та же P6DLS, но не припаян SCSI) и P6SLS (та же P6DLS, но не припаян слот для второго CPU) и P6SLA R1.xx и R2.xx (это простая плата с одним CPU на i440lx). Такой подход, с универсальными BIOS, вообще характерен для SuperMicro (например, общий BIOS имеют 370DE6/P3TDE6; 370DL3/370DLE/P3TDL3/P3TDLE). ASUS же, напротив, поставляет персональные BIOS даже для не сильно отличающихся плат, например платы P2B-DS и P2B-D (то же что P2B-DS, но SCSI не припаян) имеют разные BIOS.
Я сделал несколько попыток прошивки BIOS штатным SM2FLASH.COM, но все время получал ошибки. Утилита SM2FLASH сообщала нечто вроде (точный текст не помню) "chip erasing OK, but write to flash failed", но после перезагрузки все работало со старым BIOS, т.е. BIOS реально не изменился. Было решено снять микросхему flash BIOS (AT29C020) из платы и проверить на программаторе. Оказалось, что микросхема была просто неисправна, первый сектор не записывался, но ранее записанная в него информация хранится надежно! Я нашел в своих запасах чип W29C020, записал в него новый BIOS и установил прошитую микросхему в P6DLS. OK, мой Deschutes заработал корректно с новым BIOS. Далее немедленно был установлен второй Deschutes, BIOS распознал два процессора и наконец-то я получил долгожданную дуальную систему на i440lx! Интересно, что BIOS этой платы указывает на наличие SMP "Pentium(R)II x2" лишь на странице с информацией о системе, в самом конце POST. FreeBSD 8.4 также корректно распознает наличие SMP и нормально использует оба процессора. Специфических SMP проблем, связанных именно с этой платой, при работе FreeBSD замечено не было.
Одно замечание для любителей FreeBSD и старых SMP плат. Рекомендую использовать версию не ниже 6.x, т.к. реализация SMP в версии 4.x (эта версия замечательна во всем, кроме SMP) очень сырая, использует так называемый механизм "BIG GIANT LOCK". Подробности и историю изменений реализации SMP во FreeBSD можно найти в сети, а коротко — старый механизм в 4.x дает выигрыш намного меньше теоретически возможного, а в моих экспериментах с параллельным запуском dd иногда даже получалось медленнее, чем на однопроцессорной машине. SMP реализация была полностью переработана в версии 5.x, но эта версия сыровата, а вот начиная с 6.x уже можно смело ставить. Я обычно использую версию 8.4.
Но вернемся к нашей плате. P6DLS использует AMI WIN-BIOS со смешным графический интерфейсом SETUP, но он очень неудобный и мне не нравится (особенно не понравилось "шевеление" хвоста
мыши, показалось несерьезным, особенно для такой платы). Вот как это выглядело:
В целом, на мой взгляд такой SETUP был единственным заметным недостатком платы, и я стал думать о путях его преодоления. На первый взгляд, казалось, что изменить SETUP на нормальный текстовый затруднительно, но я проанализировал имеющиеся в интернет BIOS-ы для Tyan Tiger100 (i440bx) и Tiger2 (i440lx). Продукция фирм Tyan и SuperMicro во многом похожа, концепции почти одинаковые. Я заметил, что для вышеупомянутых плат предлагались по два варианта BIOS: как с текстовым, так и с графическим интерфейсом SETUP. Причем последние версии BIOS для Tiger 100 - только текстовые. Я подумал, что если бы для сборки BIOS-ов с разным интерфейсом SETUP требовалась бы большая работа, производитель не стал бы морочиться с разными SETUP интерфейсами (хотя под конец Tyan-у это все же, видимо, надоело :)
Одинаковые во всем, кроме пользовательского интерфейса, версии BIOS от Tyan были сравнены. Сравнивались модули BIOS (все современные BIOS состоят из загрузочного блока (boot-block), блока распаковщика (decompressor) и запакованных модулей) с помощью AMIBCP, это DOS программа для небольшого редактирования AMI BIOS. Есть разные ее версии, для разных "ядер" (core) AMIBIOS. Выяснилось, что эти BIOS-ы отличаются только модулем 0x04 - "setup client item".
Я сделал небольшой hack: заменил в BIOS P6DLS модуль "setup client item" на аналогичный модуль, но от Tyan Tiger100 (или Tiger2, эти модули в них одинаковые) с текстовым интерфейсом.
Измененный BIOS был записан штатными средствами (SM2FLASH), и заработал с первого раза (я даже удивился). Так у меня появился новый BIOS для P6DLS с классическим удобным текстовым интерфейсом SETUP! Дополнительно (с помощью того-же AMIBCP) было разблокированы множество интересных настроек в BIOS (у этой платы имеется много необычных настроек, особенно связанных с контролером памяти). Отмечу, что BIOS надо прошивать именно с помощью SM2FLASH, другие утилиты для прошивки на этой плате у меня не работали.
Интерфейс SETUP после редактирования.:
BIOS платы не имеет поддержки раширенных функций int13h, т.е. поддерживает диски только до 8GB на IDE, SCSI BIOS тоже имеет ограничения, но для работы во FreeBSD это не имеет значения, т.к. функции int13h используются только для загрузки, далее OS функции BIOS не использует. Для полной уверенности в отсутствии проблем нужно, чтобы root раздел уместился в пределах доступной BIOS адресации, хотя фактически достаточно, чтобы загрузилось ядро в память, далее интерфейс int13h уже не нужен.
На фото ниже — запущенная плата с тремя подключенными дисками: один SCSI SEAGATE ST373207LW (73GB) и два IDE WD800 (80GB), на всех дисках имеется OS FreeBSD. Один из WD800 подключен к встроенному IDE, второй к контроллеру Promise FastTrak66. FreeBSD 8.4 загружен с диска, подключенному к Promise, причем для возможности загрузки с одиночного диска он объявлен как псевдомассив из одного диска. Promise использован для увеличения скорости работы IDE диска, т.к. встроенный в PIIX4 IDE контроллер ограничивает скорость режимом UDMA33 (реальная скорость около ~25-28MB/s).
P.S. Отмечу, что такую модификацию BIOS можно, видимо, провести и с другими платами с AMI WIN-BIOS, где имеется модуль "setup client item" (надо найти правильный BIOS для извлечения текстового модуля). Возможно, кому-то будет интересна обратная задача...
Однако с широко распространенными 486 платами с AMI WIN-BIOS (размер его - 64KB) такая модификация не получается, т.к. BIOS там на другом ядре, найти для которого нужную версию AMIBCP мне не удалось.
Надеюсь, информация в этой заметке будет кому-нибудь полезной.
Прилагаю архив с модифицированным BIOS.
Обсудить статью в специально созданной ветке форума. Эта статья прислана на конкурс.
© Текст, фотографии - i8088 (автор играет на конкурсе под псевдонимом)
© Железные призраки прошлого - 2017 г.
Опубликовано 15.03.2017 г.
Дополнения или поправки на phantom@sannata.ru
|