Настройка ElinuxT для загрузки по сети
История вопроса
В каждом персональном компьютере есть микросхема памяти, которая не теряет своего содержимого при выключении питания. На этой микросхеме записаны исполнимые коды базовой системы ввода-вывода компьютера, BIOS. Во все времена исполнимый код BIOS решал одну задачу: загрузить в память исполнимый код операционной системы.
Раньше BIOS умел работать только с дисководами. Он загружал первые 512 байт с дискеты с операционной системой и дальше выполнял служебные функции, компьютером же управляла операционная система, заголовок которой по стандарту содержался в этих 512 байтах.
Затем в компьютерах появились жесткие диски, а в настройках BIOS дополнительный пункт меню, определяющий, откуда BIOS должен загружать операционную систему: с дискеты или с жесткого диска.
Далее добавились возможности загрузки с CDROM, ZIP, USB карт памяти. У всех этих устройств есть одна общая черта: интерфейс работы с ними на аппаратном уровне описывается стандартом. И если код в BIOS умеет грузиться с одного CDROM, поддерживающего стандарт ATAPI, - он сможет загрузиться с любого другого, также поддерживающего этот стандарт.
Загрузка с сетевой карты
Производители сетевых карт никогда не утруждали себя разработкой стандартного протокола управления картой на аппаратном уровне. Они просто выпускали драйвера для Windows, и в большинстве случаев потребителю этого было достаточно.
Для того чтобы компьютер смог загружаться с CDROM , производителю BIOS нужно написать один драйвер: драйвер ATAPI. И все производители BIOS после появления стандарта ATAPI очень быстро добавили этот драйвер. Поэтому любой новый компьютер сейчас умеет загружаться с CDROM.
Для того чтобы компьютер смог загружаться с сетевой карты, производителю BIOS нужно написать множество драйверов, по одному для каждой из существующих сетевых карт. Потому что нет единого стандарта, который бы описывал управление сетевой картой на аппаратном уровне, и карты 3com управляются совсем не так, как карты Intel. Ни один производитель BIOS на это не пойдет. Поэтому обычно компьютеры не умеют загружаться с сетевых карт. За исключением материнских плат с встроенными сетевыми картами, на этих материнских платах драйвер и загрузчик для сетевой карты прошит в BIOS.
Выход из этой ситуации один. Раз микросхемы BIOS на материнских платах не содержат кода управления всеми существующими сетевыми картами, надо каким-то способом добавить в него код управления одной единственной картой. Той, которую мы вставили в компьютер. И этот способ существует.
Любое устройство на шине ISA, а позднее и на шине PCI, может иметь свою микросхему энергонезависимой памяти, в которой будет храниться исполнимый код управления этим устройством. Существуют стандарты оформления этого кода, которые, гласно или негласно, поддерживаются подавляющим большинством BIOS.
Самый распространенный пример такого устройства - карта 3C905C-TX-M от фирмы 3com. На борту карты есть флэш-память объемом 64 килобайта, в которую фирмой 3com записан исполнимый код загрузчика. Надо просто вставить эту сетевую карту в компьютер и в настройках BIOS указать, что мы хотим загружаться с сетевой карты.
Повторюсь: BIOS нашего компьютера не знает, как загружаться с сетевой карты 3C905C-TX-M. Правила аппаратного управления этой картой навсегда останутся для него тайной. Зато BIOS нашего компьютера, скорее всего, умеет находить код управления произвольным ISA- или PCI-устройством, размещенный в микросхеме энергонезависимой памяти на самом этом устройстве, и передавать управление компьютером этому коду. Эта микросхема и называется BootROM, а исполнимый код, который в ней записан, обычно называют прошивкой.
PXE
Pre-boot (или Pre-OS) eXecution Environment (среда предзагрузочного выполнения) - спецификация, предложенная фирмой Intel. Такие и только такие прошивки используются производителями при изготовлении сетевых карт и BIOS материнских плат с интегрированными сетевыми картами. Прочитайте документацию к вашему оборудованию чтобы узнать, поддерживает ли оно загрузку по методу PXE. Если ваша сетевая карта или материнская плата уже укомплектованы прошивкой PXE, то никаких дополнительных действий вам делать не придется. Такие сетевые карты и материнские платы сразу после покупки готовы для использования в качестве бездисковых терминалов.
Для некоторых карт (в том числе для всех моделей карт на чипе rtl8139C,D) прошивку можно найти на сайте фирм-производителей чипсетов. Эту прошивку нужно самостоятельно прошивать в микросхему BootROM. Подробности этого процесса описаны ниже.
Если для вашей сетевой карты производитель не сделал прошивку, то единственным решением будет использование прошивок Etherboot.
Etherboot
Etherboot - оpensource проект, который выпускает прошивки практически для всех существующих сетевых карт. Прошивка Etherboot может быть записана в микросхему BootROM или flash-память сетевой карты, может быть запущена с дискеты или жесткого диска как загрузочный сектор или как программа из DOS. Прошивки Etherboot являются единственным способом загрузки по сети парка компьютеров с разномастными сетевыми картами, для которых производители не написали PXE-прошивки.
Подбираем нужную прошивку Etherboot
Прошивка Etherboot индивидуальна для каждой модели сетевой карты. Готовые прошивки проекта Etherboot берутся на сайте rom-o-matic.net , на момент написания статьи последняя версия имела номер 5.4.1. Эта версия вполне подходит для загрузки ElinuxT.
Для ISA-карт подобрать прошивку иногда достаточно сложно. Большинство встречающихся ISA-карт поддерживаются прошивкой ne. Некоторые карты поддерживаются только прошивкой ne более старых версий Etherboot - 5.0.x. На сайте rom-o-matic можно получить прошивки и этих версий. В самых сложных случаях следует воспользоваться базой знаний о картах, которая также доступна на сайте rom-o-matic.
Для PCI-карт задача подбора прошивок решается достаточно просто. Каждое PCI-устройство обладает идентификатором PCI ID, который уникален для каждой модели. PCI ID состоит из двух групп по четыре шестнадцатиричных цифры, например, так - 0x0113, 0xaab5. Нужно только узнать PCI ID своей карты. Иногда список PCI ID пишет BIOS при загрузке компьютера. Что делать в остальных случаях?
- Загружаем ElinuxT любым из способов.
- В окне загрузки пишем debug
- После загрузки системы нажимаем Alt + F1 и видим PCI ID + MAC адрес сетевой карты.
- Нажатие Alt + F2 возвращает окно входа в систему
На сайте rom-o-matic в поле "Choose NIC/ROM type" возле каждой из PCI-карт указаны такие же два числа, PCI ID карты, для которой подходит этот драйвер. Остается только найти в списке ту карту, PCI ID которой совпадает с вашим.
Эмулятор BootROM на загрузочной дискете
- В большинстве случаев можно использовать образ дискеты с универсальным загрузчиком. Информация об установке универсального загрузчика на дискету здесь.
- Если универсальный загрузчик не определит вашу сетевую карту, то напишите письмо по адресу etherboot@wtpro.ru. В письме укажите PCI ID карты и, если возможно производителя сетевой карты и ее модель.
Теперь с этой дискеты можно загружать компьютер с этой сетевой картой.
Эмулятор BootROM напрямую с жесткого диска
Если возникают сложности с записью BootROM, то его эмулятор можно разместить на жестком диске или IDE-Flash, установленном в терминале.
Информацию об установке на жесткий диск можно получить здесь.
После этого терминал должен загружаться с жесткого диска, автоматически запуская эмулятор BootROM, и загружать по сети образ ElinuxT.
Эмулятор BootROM из DOS и Windows Command Prompt
Можно воспользоваться мастером установки ElinuxT на жесткий диск - он сам создаст все необходимые меню. Информация о нем здесь
- Выбираем прошивку на сайте rom-o-matic так, как описано выше .
- Просим rom-o-matic сделать нам "DOS Executable ROM Image (.COM)", сохраняем полученный файл.
Этот файл можно запускать из командной строки DOS или Windows Command Prompt
Иногда необходимо оставить возможность загружать Windows, и при этом работать с ElinuxT. Можно организовать меню при загрузке Windows 9x, из которого пользователь будет выбирать загрузку машины как ElinuxT-терминала или загрузку локальной копии Windows 9x. Пример меню, файл config.sys:
[menu]
menuitem=Windows
menuitem=ElinuxT
[Windows]
DEVICE=C:\WINDOWS\HIMEM.SYS
DEVICE=C:\WINDOWS\emm386.exe
device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1)
Country=007,866,C:\WINDOWS\COMMAND\country.sys
[ElinuxT]
DOS=NOAUTO
Файл autoexec.bat:
@echo off
goto %config%
:Windows
mode con codepage prepare=((866)
C:\WINDOWS\COMMAND\ega3.cpi)
mode con codepage select=866
keyb ru,,C:\WINDOWS\COMMAND\keybrd3.sys
goto end
:ElinuxT
c:\3c509.com
goto end
:end
Вместо вызова c:\3c509.com надо указать вызов загрузчика именно для той сетевой карты, которая установлена на компьютере.
Эмулятор BootROM с CDROM
Универсальный загрузчик EtherBOOT можно запустить с компакт диска.
Для этого:
- Вставьте CD ElinuxT в привод компакт дисков и перезагрузите компьютер
- В окне загрузки наберите net
- Дополнительная информация об опциях загрузки здесь
Делаем свою микросхему BootROM
Что делать, если производитель нашей карты не встроил в нее микросхему энергонезависимой памяти, но мы все-таки хотим избавить наш компьютер от винчестера и прочих крутящихся устройств, сделать его бездисковым и научить загружаться по сети? Встроить в него эту микросхему самостоятельно!
Наша практика позволяет сделать такой вывод: разбираться в теории BootROM стоит, если надо сделать хотя бы 10-20 бездисковых терминалов. Если терминалов предполагается меньше, то дешевле заменить имеющиеся сетевые карты на карты, которые изначально умеют загружать компьютер, например, упомянутые 3C905C-TX-M от 3com, либо обратиться за помощью к специалистам .
Самыми дешевыми и вполне доступными в любом магазине радиодеталей являются однократно программируемые микросхемы (ПЗУ, EPROM) серии 27C256. 27 означает "однократно программируемая", 256 - размер памяти в килобитах, т.е. 32 килобайта. До и после серии производители могут дописывать дополнительные символы. Например, микросхемы фирмы Atmel, которые используем мы, полностью называются AT27C256R. Микросхемы должны быть в DIP-корпусе (параллелепипед размером примерно 12x36x3 миллиметра с 28 ногами), это важно.
Микросхемы дополнительно характеризуются по классу условий эксплуатации ("коммерческие", "индустриальные", "военные" и другие). Для использования в качестве BootROM подойдут микросхемы любого класса.
Еще один параметр - время доступа. Осмелюсь утверждать, что для использования в качестве BootROM подойдут микросхемы с любым временем доступа. Просто потому, что нам ни разу не встречалось на практике проблем, с этим связанных.
Сетевая карта должна иметь колодку для установки микросхемы. Колодки могут быть на 28, 32 или даже 34 ноги. Нет колодки - нет бездискового терминала.
Далее, необходим программатор. Это специальное устройство, которое умеет прошивать микросхемы. Программаторы заводского изготовления стоят от $100, сделанные радиолюбителями встречаются на радиорынках за треть этой суммы. Нам никогда не встречались программаторы, которые бы не умели прошивать микросхемы 27C256, это наиболее простая из возможных микросхем. Программаторы подключаются к компьютеру через порт COM или LPT. В комплекте с программатором идет программное обеспечение и инструкция по эксплуатации.
Далее, необходимо выбрать прошивку. Все в точности так же, как описано выше, только получить надо "Binary ROM Image". Если получится файл размером 16 килобайт - надо приклеить файл к нему же самому, чтоб размер увеличился в два раза.
Далее читаем инструкцию про программатор и прошиваем микросхему. Устанавливаем микросхему на сетевую карту. Не забудьте, что метка на микросхеме должна находиться с той же стороны, что и метка на колодке. Если в колодке больше 28 дырок - все пустые дырки должны оставаться со стороны меток на микросхеме и колодке. Устанавливаем карту в компьютер. Включаем.
Не работает? Действуем по списку:
1. Находим на дискете, прилагавшейся к сетевой карте или на сайте производителя, утилиту-конфигуратор. Обычно эта утилита запускается только из-под чистого DOS. Грузимся с загрузочной DOS-дискетки, запускаем конфигуратор, находим опцию, разрешающую использовать BootROM. Разрешаем. Перезагружаемся.
2. Обновляем BIOS материнской платы. Внимательно читаем описание настроек BIOS и ищем, что там отвечает за загрузку с сетевой карты. Иногда попадаются загадочные настройки, например, на одном из моих Fujitsu надо было опцию "Boot" установить в значение "Legal". Перезагружаемся.
3. Достаньте микросхему из карты, засуньте обратно в программатор и попытайтесь прочитать ее содержимое. Должно прочитаться именно то, что вы туда записывали.
4. Возможно, компьютер патологически не умеет грузиться с сетевой карты? Найдите карту 3c905c-tx-m и попробуйте загрузиться с нее. Если компьютер откажется - в морг этот компьютер, придется использовать другой.
5. Все еще не работает? Бывает и такое, особенно с экзотическими картами. Попробуйте с другой картой. Самая хорошая карта для установки BootROM - любая на чипе RTL8139C или RTL8139D. Они всегда работают.
Замечание! В статье описываются действия, которые могут вывести из строя ваше оборудование. Мы не несем никакой ответственности за возможные повреждения. Выполняйте их на свой страх и риск. Вы можете приобрести готовое решение у специалистов
А можно проще?
Да, если в этом списке есть люди из вашего города. Свяжитесь с ними, за некоторую компенсацию они помогут.
|