Настройка WTware для загрузки терминала по сети. Бездисковые терминалы (diskless terminal).

Внимание! В статье описываются действия, которые могут вывести из строя ваше оборудование. Мы не несем никакой ответственности за возможные повреждения. Выполняйте их на свой страх и риск. Вы можете преобрести готовое решение у специалистов.

  1. История вопроса
  2. Загрузка с сетевой карты
  3. PXE
  4. Etherboot
  5. Подбираем нужную прошивку Etherboot
  6. Эмулятор BootROM на загрузочной дискете
  7. Эмулятор BootROM напрямую с жесткого диска (без ОС)
  8. Эмулятор BootROM из DOS и Windows Command Prompt
  9. Делаем свою микросхему BootROM

 

История вопроса

В каждом персональном компьютере есть микросхема памяти, которая не теряет своего содержимого при выключении питания. На этой микросхеме записаны исполнимые коды базовой системы ввода-вывода компьютера, 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 на материнских платах не содержат кода управления всеми существующими сетевыми картами, надо каким-то способом добавить в него код управления одной единственной картой. Той, которую мы вставили в компьютер. И этот способ существует.

Любое устройство на шине ISA, а позднее и на шине PCI, может иметь свою микросхему энергонезависимой памяти, в которой будет храниться исполнимый код управления этим устройством. Существуют стандарты оформления этого кода, которые, гласно или негласно, поддерживаются подавляющим большинством BIOS.

Самый распространенный пример такого устройства — карта 3C905C-TX-M от фирмы 3com. На борту карты есть флэш-память объемом 64 килобайта, в которую фирмой 3com записан исполнимый код загрузчика. Над просто вставить эту сетевую карту в компьютер и в настройках BIOS указать, что мы хотим загружаться с сетевой карты.

Повторюсь: BIOS нашего компьютера не знает, как загружаться с сетевой карты 3C905C-TX-M. Правила аппаратного управления этой картой навсегда останутся для него тайной. Зато BIOS нашего компьютера, скорее всего, умеет находить код управления произвольным ISA- или PCI-устройством, размещенный в микросхеме энергонезависимой памяти на самом этом устройстве, и передавать управление компьютером этому коду. Эта микросхема и называется BootROM, а исполнимый код, который в ней записан, обычно называют прошивкой.

На практике в настоящее время используют два типа прошивок: PXE-совместимые и прошивки opensource проекта Etherboot. Прошивки этих двух типов предъявляют разные требования к оформлению загрузочного образа операционной системы. Имеено поэтому при загрузке WTware для карт с PXE-прошивками надо указывать файл wtware.pxe, а для карт с прошивками Etherboot файл wtshell.nbi.


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.2.6. Эта версия вполне подходит для загрузки WTware.

Для 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 при загрузке компьютера. Что делать в остальных случаях? Все просто, ведь WTware заботится о вас :)

  1. Скачиваем образ дискеты etherinst-0.1.zip, распаковываем архив.
  2. Записываем на дискету программой rawwrite. Должна получиться дискета, которая будет читаться из Windows.
  3. Загружаем терминал с этой дискеты и в меню выбираем пункт "Show PCI ID of network card". Программа укажет PCI ID карты, установленной в компьютере.

На сайте rom-o-matic в поле "Choose NIC/ROM type" возле каждой из PCI-карт указаны такие же два числа, PCI ID карты, для которой подходит этот драйвер. Остается только найти в списке ту карту, PCI ID которой совпадает с вашим.

Эмулятор BootROM на загрузочной дискете

  1. В большинстве случаев можно использовать образ дискеты с универсальным загрузчиком: eb5_4_0.zip.
  2. Если универсальный загрузчик не определит вашу сетевую карту, придется выбрать прошивку на сайте rom-o-matic так, как описано выше. Просим rom-o-matic сделать нам "Floppy bootable ROM Image", сохраняем полученный файл.
  3. Записываем на дискету программой rawwrite.

Теперь с этой дискеты можно загружать компьютер с этой сетевой картой.


Эмулятор BootROM напрямую с жесткого диска (без ОС)

Если возникают сложности с записью BootROM, то его эмулятор можно разместить на жестком диске или IDE-Flash, установленном в терминале.

ВНИМАНИЕ: все содержимое этого диска будет уничтожено!

  1. Скачиваем образ дискеты etherinst-0.1.zip, распаковываем архив.
  2. Записываем на дискету программой rawwrite. Должна получиться дискета, которая будет читаться из Windows.
  3. Выбираем прошивку на сайте rom-o-matic так, как описано выше.
  4. Просим rom-o-matic сделать нам "LILO/GRUB/SYSLINUX loadable kernel format (.zlilo)", сохраняем полученный файл на дискету под именем loader.
  5. Устанавливаем в терминал жесткий диск/IDE Flash-диск, указываем его в BIOS'е.
  6. Загружаем терминал с этой дискеты. Ни в коем случае не загружайте с нее компьютер, на жестком диске которого находятся какие-то важные данные, так как все данные на жестких дисках будут уничтожены.
  7. Выбираем в меню первый пункт: "1: Prepare hard disk". После выполнения компьютер должен автоматически перегрузиться.
  8. После перезагрузки выбираем в меню второй пункт: "2: Install Etherboot". Согласитесь форматировать диск, нажмите Enter на вопрос о VOLUME LABEL.
  9. Перегружаем компьютер, указываем BIOS'у грузиться с диска С.

После этого терминал должен загружаться с жесткого диска, автоматически запуская эмулятор BootROM, и загружать по сети образ WTware.


Эмулятор BootROM из DOS и Windows Command Prompt

  1. Выбираем прошивку на сайте rom-o-matic так, как описано выше.
  2. Просим rom-o-matic сделать нам "DOS Executable ROM Image (.COM)", сохраняем полученный файл.

Этот файл можно запускать из командной строки DOS или Windows Command Prompt

Иногда необходимо оставить возможность загружать Windows, и при этом работать с WTware. Можно организовать меню при загрузке Windows 9x, из которого пользователь будет выбирать загрузку машины как WTware-терминала или загрузку локальной копии Windows 9x. Пример меню, файл config.sys:

[menu]
menuitem=Windows
menuitem=WTware
[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
[WTware]
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
:WTware
c:\3c509.com
goto end
:end

Вместо вызова c:\3c509.com надо указать вызов загрузчика именно для той сетевой карты, которая установлена на компьютере.

В файл msdos.sys в секции [Options] добавить строку:
Logo=0
Эта строка отключит графическую заставку загрузки Windows 9x. На некоторых видеокартах это необходимо сделать для корректного запуска WTware.

Делаем свою микросхему 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. Они всегда работают.

А можно проще?

Да, если в этом списке есть люди из вашего города. Свяжитесь с ними, за некоторую компенсацию они помогут.