Версия для печати

Архив документации на OpenNet.ru / Раздел "Сети, протоколы, сервисы" (Многостраничная версия)
Previous Next Contents

Linux Remote-Boot mini HOWTO: Настройка рабочих станций для удаленной загрузки Linux, DOS, Windows 95/98 и Windows NT.

Marc Vuilleumier Stückelberg, David Clerc

v3.26, Февраль 2000
Оригинал: www.remoteboot.ru
Перевод: Александр М. Пичкасов >alex at sw.smrtlc.ru<

Этот документ описывает установку мощной и защищенной конфигурации для кластера ПК, предоставляющей каждому клиенту выбор при загрузке, какую операционную систему запустить. Суть этой конфигурации - программа, основанная на загрузочном ПЗУ, которая предоставляет пользователю возможность выбрать при загрузке один из нескольких загрузочных образов. Эта конфигурация применима при использовании Bootix TCP/IP Bootprom (существующего как дополнение к большинству сетевых карт) или любого PXE-совместимого Boot ROM (готового к использованию в большинстве современных ПК со встроенными сетевыми картами). Большинство обновленных версий данного документа, со ссылками на загружаемое программное обеспечение и другие связанные материалы, может быть найдено по адресу http://cuiwww.unige.ch/info/pc/remote-boot/howto.html . Linuxdoc-SGML, DVI, PostScript и PDF версии доступны в том же директории. Если вы заинтересованы в получении информации о дальнейшем развитии, отправьте письмо по адресу info@bpbatch.org .


1. 1. Отречение и права

2. Что изменено...

3. Введение

4. Конфигурация How-To

5. Инструменты удаленной загрузки, ссылки на руководства

6. Специализированный TFTP сервер


Previous Next Contents
Previous Next Contents

1. Отречение и права

ПЕРЕД ИСПОЛЬЗОВАНИЕМ ДАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ВЫ ДОЛЖНЫ ТЩАТЕЛЬНО ЭТО ПРОЧИТАТЬ. .

Этот раздел определяет то, что вы можете и что не можете делать с Программным обеспечением и содержит ограничения на гарантии и средства.

УСТАНОВКА, КОПИРОВАНИЕ, ИЛИ ДРУГОЕ ИСПОЛЬЗОВАНИЕ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ОЗНАЧАЕТ ВАШЕ ПОДТВЕРЖДЕНИЕ, ЧТО ВЫ ЧИТАЛИ ЭТУ ЛИЦЕНЗИЮ И СОГЛАСНЫ С ЕЕ УСЛОВИЯМИ.

ПОЖАЛУЙСТА ОБРАТИТЕ ВНИМАНИЕ, ЧТО ЭТА ЛИЦЕНЗИЯ ДЕЙСТВИТЕЛЬНА ТОЛЬКО ДЛЯ ПЕРСОНАЛЬНОГО ИСПОЛЬЗОВАНИЯ, КАК ОПРЕДЕЛЕНО В СТАТЬЕ 1 ОБЩИХ УСЛОВИЙ.

ОБЩИЕ УСЛОВИЯ

1. Предоставление лицензии

Авторы BpBatch, MrBatch, MrZip и связанных утилит (в дальнейшем " Программное обеспечение ") предоставляют вам неисключительную, непередающуюся, безвозмездную лицензию для загрузки и использования Программного обеспечения при условиях, указанных ниже.

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

ПЕРЕДАЧА, ПРОДАЖА ИЛИ ВЗИМАНИЕ АРЕНДНОЙ ПЛАТЫ ЗА ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, ЛИБО "AS IS", ЛИБО КАК ЧАСТИ СВЯЗАННОГО ИЗДЕЛИЯ, ИЛИ ЕГО ИНСТАЛЛЯЦИЯ НА КОМПЬЮТЕРЕ, ПРИНАДЛЕЖАЩЕМ ТРЕТЬЕМУ ЛИЦУ ЗАПРЕЩЕНА, ЕСЛИ КОММЕРЧЕСКОЕ СОГЛАШЕНИЕ С АВТОРАМИ ИЛИ ИХ УПОЛНОМОЧЕННЫМ ПРЕДСТАВИТЕЛЕМ НЕ БЫЛО ЗАКЛЮЧЕНО.

Обратитесь к info@rembo.com для получения дополнительной информации. Мы предлагаем вполне приемлемые коммерческие лицензии.

2. Исключение гарантий

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "AS IS", БЕЗ ЛЮБЫХ ГАРАНТИЙ, ДВУСМЫСЛЕННОСТЕЙ ИЛИ ПОДРАЗУМЕВАНИЙЙ. ЭТО НИ ГАРАНТИРУЕТ, НИ ИСКЛЮЧАЕТ СВОБОДУ ОТ ОШИБОК.

ПОЛНЫЙ РИСК ОТНОСИТЕЛЬНО РЕЗУЛЬТАТОВ И ЭФФЕКТИВНОСТИ ИЗДЕЛИЯ ПРИНЯТ ВАМИ. В ЧАСТНОСТИ АВТОРЫ ПРЕДУПРЕЖДАЮТ ВАС, ЧТО ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ИМЕЕТ СПОСОБНОСТЬ СТИРАТЬ СОДЕРЖИМОЕ ЖЕСТКОГО ДИСКА БЕЗ ВСЯКОГО ПРЕДУПРЕЖДЕНИЯ.

АВТОРЫ НИ ПРИ КАКИХ ОБСТОЯТЕЛЬТВАХ НЕ БУДУТ ОБЯЗАНЫ ВАМ, РАВНО ПО ПРАВУ ИЛИ ДОГОВОРУ ЗА ЭКОНОМИЧЕСКИЙ, ПРОИСТЕКАЮЩИЙ ИЛИ КОСВЕННЫЙ УЩЕРБ ЛЮБОГО ВИДА, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ПОТЕРЕЙ ДОХОДА ИЛИ ПРИБЫЛИ, УТРАТОЙ ИЛИ РАЗРУШЕНИЕМ ДАННЫХ ИЛИ ОСТАНОВКОЙ БИЗНЕСА, ВОЗНИКАЮЩИХ ВСЛЕДСТВИЕ ИЛИ В СВЯЗИ С ИСПОЛЬЗОВАНИЕМ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМ СПОСОБОМ, ДАЖЕ ЕСЛИ БЫЛА ПРЕДСКАЗАНА ВОЗМОЖНОСТЬ ТАКОГО УЩЕРБА ИЛИ ТАКОЙ УЩЕРБ БЫЛ ПРЕДВИДИМ.

3. Авторское право

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

Вы не должны декомпилировать, дизассемблировать или перепроектировать Программное обеспечение ни в каком виде.

4. Делимость.

Эти общие условия объявляются делимыми. Если любое ограничение или условие в этих условиях станут по любой причине недопустимы или неосуществимы, остающиеся ограничения и условия должны оставаться допустимы и осуществимы.

5. Законодательство.

ЭТИ ОБЩИЕ УСЛОВИЯ И ЛЮБЫЕ ПРАВА ИЛИ ОБЯЗАТЕЛЬСТВА СВЯЗАННЫЕ С ЭТИМ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ДОЛЖНЫ УПРАВЛЯТЬСЯ И РАССМОТРИВАТЬСЯ В СООТВЕТСТВИИ С ЗАКОНАМИ ШВЕЙЦАРИИ, КАК ПРИМЕНИМЫЕ В КАНТОНЕ ЖЕНЕВЫ.

6. Исключительная юрисдикция

ЛЮБОЙ СПОР, ВОЗНИКАЮЩИЙ ОТНОСИТЕЛЬНО ИЛИ В СВЯЗИ С ДАННЫМ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ДОЛЖЕН БЫТЬ ПРЕДСТАВЛЕН ИСКЛЮЧИТЕЛЬНОЙ ЮРИСДИКЦИИ СУДОВ ЖЕНЕВЫ, ШВЕЙЦАРИИ, АППЕЛЯЦИИ ШВЕЙЦАРСКОМУ ФЕДЕРАЛЬНОМУ ВЕРХОВНОМУ СУДУ СОХРАНЯЮТСЯ.


Previous Next Contents
Previous Next Contents

2. Что изменено...

2.1 ...с версии 2.x

Честно говоря, почти все. Основные концепции те же самые, но программная часть была целиком перепроектирована, чтобы преодолеть ограничения предыдущих версий и сделать ее проще для использования. Отметим новые особенности:
Имеется программа для преобразования старого архива к новому формату?


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

  1. Загрузите старый образ (разархивируйте его на ваш диск)
  2. Удалите запросы к старой unzipreg утилите, и замените их адекватными patch командами(это очень просто, см. детальные инструкции ниже)
  3. Выполните новую mrzip программу, чтобы создать дисковый образ нового стиля.

2.2 ...с версии 3.0?

Версия 3.0 была бета-релизом. Дюжина узлов во всем мире проверяла её в течение месяца и уделила много своего времени, помогая нам в нахождении ошибок и предлагая расширения. Благодарим всех за их терпение, и в особенности Мачека Ухлига (Maciek Uhlig), Дика Велдерса (Dick Velders) и Джеффа Титерса (Jeff Teeters).

Несколько незначительных особенностей были добавлены с 3.01, такие как поддержка бездисковой загрузки Linux (с отключением кэша).

Версия 3.10 представила совместимость с Intel Wired for Management 1.1a NetPC стандартом. Этот инструмент теперь работает с любым PXE-совместимым Boot ROM (таким как большинство встроенных ПЗУ начальной загрузки) доступным сегодня. Благодарим Bootix GmbH за предоставленный нам PXE bootprom, который определил это развитие. Мы также успешно проверили этот инструмент с PXE Boot ROM (называемом LanDesk Service Agent), который я нашел мимоходом в моем Dell компьютере со встроенной сетевой платой.

В версиях от 3.11 до 3.12 были добавлены серверные инструменты UNIX (PXE Proxy DHCP сервер для Solaris и Linux, и усовершенствованный TFTP сервер для Linux), также как детализирована информация относительно установки серверной части и процесса PXE загрузки.

В версии 3.13 добавлена расширенная поддержка управления питанием (APM, команда PowerOff).

В версии 3.14 добавлены незначительные расширения и некоторые исправления. Мы устранили проблему с терминалом под RedHat 5.1, и другой проблемой в синтаксисе команды "if" . Мы добавили некоторые особенности, предложенные Вычислительной Лабораторией Факультета Информатики Барселоны (the Laboratori de Cаlcul de la Facultat d'Informаtica de Barcelona (LCFIB)):

В версии 3.15 добавлена полная поддержка VESA. BpBatch теперь поддерживают несколько видеорежимов, приспосабливаясь к неспособности старых компьютеров отображать графику 800x600. Новый параметр был добавлен к InitGraph, чтобы определить видеорежим, и список обнаруженных видеорежимов может быть получен из новой переменной VESA-Modes.

В версии 3.16 устранены следующие ошибки:

В версии 3.17 добавлены некоторые незначительные особенности и устранены ошибки: В версии 3.18 устранена ошибка в функции IncrUnzip. Благодарим Гэри Пайка (Gary Pike) за его сотрудничество.

В версии 3.19 устранена ошибка в обработке ошибок команды delete на ext2fs, также как неверная обработка имен, начинающихся с A: под Linux. Следующие новые особенности были также добавлены:

Благодарим Рубена Щатевого (Ruben Schattevoy) за его помощь и содействие в этом выпуске.

Версия 3.20: мы добавили ссылку к документации Питера Шмитта (Peter Schmitt).

Версия 3.21: мы изменили некоторые разделы этой документации, чтобы соответствовать изменениям, представленным спецификацией PXE 2.0. Наиболее важное изменение - то, что BpBatch опцией DHCP командной строки является теперь 135 вместо 155 (155 все еще поддерживается для обратной совместимости).

Версия 3.22 представляет новые условия лицензирования. Пожалуйста читайте эти условия очень тщательно перед использованием BpBatch.

Версия 3.24: Поддержка контрольной платы, добавленная Tellurian Pty Ltd, www.tellurian.com.au. Мы также изменили семантику имени загрузчика, чтобы позволить использование Intel и Bootware TFTP серверов. Подробности см., в файле "what's new".

Версия 3.25: Мы добавили несколько советов (фильтры для установки Windows 98 и как отключить кодирование пароля) присланные поклонниками BpBatch.

Версия 3.26: Много опечаток устранено, благодаря расширенному обзору, пожертвованному Германом Брунинкксом (Herman Bruninckx). Мы также добавили раздел по Solaris TFTP серверу.


Previous Next Contents
Previous Next Contents

3. Введение

Конфигурация, описанная здесь была разработана начиная с лета 1996 в CUI, Университете Женевы. Отдел Информатики использует несколько серверов и ряд PC, которые подразделяются на два класса:

Мы разработали эту конфигурацию со следующими целями: Эти ограничения привели нас к выбору основы для нашей конфигурации инструментальных средств bootprom. Сначала мы разработали новые инструменты для превосходного TCP/IP Bootprom от Bootix GmbH. Теперь, когда стандарт для PXE (Preboot eXecution Environments; предзагрузочных сред выполнения) наконец появился, мы переделали инструментальные средства так, что они теперь также работают для любого PXE-совместимого bootprom. PXE ПЗУ начальной загрузки, также называемые LanDesk Service Agent, теперь распространяются почти со всеми встроенными сетевыми адаптерами. Для получения более подробной информации по PXE и Intel Wired for Management стандартам, читайте http://developer.intel.com/ial/wfm/tools/index.htm .

3.1 Boot ROM и жесткий диск

Bootprom существуют действительно давно, но до недавнего времени они использовались исключительно с бездисковыми компьютерами (с использованием сетевой эмуляции диска или загрузки ramdisk). Начиная с 1996, данный How-to утверждал, что bootprom даже более интересен для компьютеров, имеющих локальный жесткий диск, так как они позволяют получить преимущество с двух сторон:

Сегодня, мы имеем удовольствие видеть, что все компьютерные изготовители пришли к тому же самому мнению и предусматривают ПЗУ начальной загрузки как часть новых компьютерных стандартов.

Обратите внимание, что вы все еще можете использовать инструментальные средства, описанные ниже старомодным способом, таким, как простой kernel/ramdisk загрузчик, даже для компьютеров без диска. Однако, мы не приветствуем такое использование.

3.2 Наша сеть

Университет Женевы имеет домен класса B , поделенный на несколько подсетей. CUI использует четыре подсети, среди них одна выделена студентам.

Первоначально, наши PC использовали два сетевых протокола: IPX и IP. В IPX части, мы использовали одиночный Novell Netware 3 сервер для совместного использования программного обеспечения и файлов пользователей для DOS и Windows. В IP части, мы использовали сервер SUN для совместного использования программного обеспечения и разделов пользователей для Linux, с NFS.

В нашей самой последней конфигурации, мы больше не используем IPX. Имеется одиночный Unix сервер (которым может быть как Linux, так и SUN), для совместного использования программного обеспечения и файлов пользователей, использующий NFS для Linux клиентов и SMB (NetBIOS) через TCP/IP для клиентов Windows и DOS. Таким образом, мы имеем один домашний каталог используемый всеми операционными системами.

3.3 Как это Работает

  1. Когда клиентский PC включается, сначала он выполняет традиционные системные проверки, прежде чем TCP/IP Bootprom или PXE Boot ROM возьмет управление.
  2. Bootprom производит BOOTP/DHCP запрос, чтобы получить IP параметры конфигурации.
  3. Если сервер распознает производимый PC запрос, он отошлет назад BOOTP/DHCP ответ с информацией, такой, как адрес IP клиента, шлюз по умолчанию, и какой образ загрузочного диска использовать.
  4. В случае PXE BootROM, происходит несколько более продолжительный обмен между клиентом и сервером, для определения инсталляционных параметров.
  5. Затем bootprom загружает образ начальной загрузки c сервера, используя TFTP протокол. Образ начальной загрузки получился маленькой программой, называемой bpbatch,- наш загрузочный интерпретатор пакетного файла.
  6. Пакетный интерпретатор стартует. В это время, он почти один в компьютерной памяти. Не имеется никакой загруженной операционной системы, кроме среды предзагрузочного выполнения (предлагаемой самим Boot ROM).
  7. Пакетный интерпретатор просматривает в ответе BOOTP/DHCP параметры командной строки, и в особенности имя пакета для выполнения. BpBatch использует опцию 155 DHCP для получения параметров командной строки. Если опция 155 пуста, он получает эти параметры из опции 135 DHCP (PXE 2.0 bootroms могут получать только опции 128-135).
  8. Согласно инструкциям пакетного файла, это будет например:
    1. Загрузка национальной раскладки клавиатуры.
    2. Аутентификация пользователя, соответствующая удаленному серверу (Unix, Radius или Windows NT).
    3. Предоставление пользователю выбора между доступными операционными системами.
    4. Переразбиение жесткого диска и быстрое форматирование некоторых разделов в соответствии с выбранной операционной системой.
    5. Проверка, присутствует ли в конце диска обновленный сжатый образ выбранной OS. Если нет, выполняется его загрузка, используя TFTP.
    6. Распаковка выбранной OS в главный раздел.
    7. Если выбранная OS - Linux, загрузка ядра и его запуск.
    8. Если выбранная OS - DOS или Windows, просто происходит загрузка компьютера с его обновленного жесткого диска.
    Для DOS и Windows 3.1, мы используем свободно доступный Microsoft LanManager для DOS (найдите зеркало, самое близкое к вам; дистрибутив состоит из трех файлов, именуемых от disk1 до disk4) как SMB клиент. Microsoft LanManager поддерживает динамическую конфигурацию, используя DHCP. После регистрации пользователь попадает в DOS, и может запустить Windows 3.1, набрав традиционную команду win. Обратите внимание, что в этот момент, DOS и Windows 3.1, предстают установленными локально. Для Windows 95/98 и Windows NT, мы также используем Microsoft SMB клиент (называемый Клиентом для Сети Microsoft), который поддерживает динамическую конфигурацию, используя DHCP. Мы уменьшаем сетевую загрузку, используя Shared LAN Cache, хорошую и мощную программу кэширования "сети на диске".
Студенческие компьютеры могут быть выключены аппаратно в любое время без риска, так как жесткий диск повторно инициализируется при каждом включении.

Для "безопасных" компьютеров (то есть для компьютеров сотрудников), если компьютер был загружен однажды через использование вышеописанной системы, сценарий начальной загрузки просто переназначает начальную загрузку на локальный жесткий диск, без того, чтобы очищать его снова. Это позволяет пользователям оставлять данные на их локальных жестких дисках. Но всякий раз, когда конфигурация разрушается, пользователь может просто выбрать из меню начальной загрузки, чтобы получить свежую инсталляцию.

3.4 Связанная некоммерческая документация

Эта конфигурация была успешно воспроизведена в нескольких местах во всем мире. Несколько людей написали некоторые подсказки и трюки, которые дополняют настоящий How-To. Если вы делали то же самое, и если ваша страница еще не упомянута в этой документации, пожалуйста пошлите электронную почту на mvuilleu@bpbatch.org. И если Вы испытываете проблемы при воспроизведении данной конфигурации, взглянете на эти страницы!

Вы можете также послать мне ваш BpBatch сценарий, если Вы хотите, чтобы я включил его в коллекцию типовых сценариев.


Previous Next Contents
Previous Next Contents

4. Конфигурация How-To

Прежде всего, условимся иметь следующие две машины:

Если вы хотите протестировать эту конфигурацию, но не имеете пока ПЗУ начальной загрузки, вы можете загрузить дискету от Bootix с адреса http://www.bootix.com . Эта дискета сделает ваш компьютер подобным компьютеру со встроенным TCP/IP BootProm.

Если вы уже имеете ПЗУ начальной загрузки, вам нужно включить эту возможность. Если вы используете Bootix TCP/IP Bootprom,вы можете сделать это с помощью специальной программы от производителя вашей сетевой карты. Если вы имеете PXE Bootrom, вы можете сделать это просто из BIOS-setup, изменяя загрузочное устройство.

Для студенческих компьютеров, мы конфигурировали сетевую загрузку первой, и дезактивировали загрузку с флоппи и жесткого диска. Для вспомогательных компьютеров, мы также конфигурировали сетевую начальную загрузку первой, но мы позволяем начальную загрузку с гибкого диска и с жесткого диска.

4.1 Настройка серверной части

На сервере вам будут нужны следующие сервисы:

  1. BOOTP/DHCP сервер.
  2. Возможно, Proxy DHCP сервер.
  3. TFTP сервер.
Замечание для PXE Bootrom пользователей: убедитесь, что вы имеете последнюю версию PXE. На момент написания данного документа, последняя версия была PXE 2.0. PXE 0.99x Bootrom также поддерживается, но некоторые опции DHCP могут не отсылаться DHCP сервером. В частности, вы должны модернизировать до версии PXE 2.0, если опция 135 не дает эффекта в BpBatch (BpBatch показывает: "Невозможно загрузить файл" при запуске.) Если ваша сетевая карта принадлежит к одной из серии Intel EPRO100 адаптеров, вы можете получить последний оценочный выпуск в Intel PXE Product Development Kit (PDK), который также включает необходимую утилиту для программирования ПЗУ.Этот PDK доступен по адресу: http://developer.intel.com/ial/wfm/tools/pxepdk20/index.htm .

Установка DHCP

Назначение DHCP сервера - предоставить клиенту IP адрес и обеспечить ему загрузку файла, именуемого bpbatch.P с TFTP сервера. DHCP является расширением протокола BOOTP. Если вы используете Bootix TCP/IP Bootprom, вы можете обойтись без DHCP (используя любой старый BOOTP сервер).

В Windows NT, вы, вероятно, будете использовать "родной" DHCP сервер. Если вы используете Bootix TCP/IP Bootprom, вы будете иметь возможность использовать специальный трюк, определяя имя загрузочного файла (более подробную информацию получите с Bootix WWW сайта). Если вы используете PXE Bootrom, вы должны будете определить имя загрузочного файла, используя DHCP опцию 67. Также вы должны определить опции VendorClass (опция 60) как "PXEClient" и VendorOptions (опция 43) как 01,04,00,00,00,00,ff (см. ниже).

В Linux, лучший способ - стандартный DHCP сервер от Internet Software Consortium. Если вы используете PXE Bootrom, в дополнение к обычным опциям вы должны будете добавить следующие:

Если вы используете ISC DHCP 3.0, синтаксис слегка отличается. Здесь представлен пример DHCP 3.0-совместимой конфигурации:

option subnet-mask 255.255.255.0;
default-lease-time -1;
option space PXE;
option PXE.mtftp-ip code 1 = ip-address; option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
host pctest {
hardware ethernet 00:01:02:03:04:05;
filename "bpbatch.P";
next-server 192.168.1.2;
fixed-address 192.168.1.100;
# BpBatch command-line argument : -i == interactive
# You can also specify a script name (do not include the
# trailing .bpb extension)
option option-135 "-i";
# PXE specific options
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
option vendor-class-identifier "PXEClient";
# At least one of the vendor-specific option must be set. We set
# the MCAST IP address to 0.0.0.0 to tell the bootrom to still use
# TFTP (address 0.0.0.0 is considered as "no address")
option PXE.mtftp-ip 0.0.0.0;
vendor-option-space PXE;
}
}
}

В Solaris, вы можете использовать либо Internet Software Consortium DHCP сервер (доступный в Web), либо Solaris DHCP сервер (доступный с версии Solaris 2.5). Однако, поскольку Solaris DHCP сервер не предоставляет возможности вставить идентификатор класса клиента в его DHCP предложение, вы должны установить Proxy DHCP сервер. Более того, этот Proxy DHCP сервер должен располагаться на другом компьютере, так как Solaris DHCP сервер блокирует DHCP порт.

Мы подразумеваем предоставление неограниченного выделения времени клиенту удаленной загрузки. Не забывайте, что BOOTP/DHCP запрос связан подсетью. Если клиент и сервер не принадлежат одной и той же подсети, вы должны инсталлировать BOOTP/DHCP Relay агент на любой из компьютеров между двумя указанными. Далее подразумевается, что обе машины находятся в одной подсети.

Если вы используете PXE 2.0 bootrom, вы можете использовать только специфические для данной конфигурации опции, нумерованные с 128 по 135 для предоставления информации BpBatch. Опции с номерами, большими чем 135 игнорируются PXE 2.0 Bootrom. Опция 135 используется BpBatch для аргументов командной строки. Вы имеете 6 оставшихся опций для своих нужд

Установка Proxy DHCP

Назначение Proxy DHCP сервера - снятие ограничений некоторых DHCP серверов и предоставление специфических PXE расширений. Proxy DHCP сервер имеет смысл только для PXE Bootrom. Однако Proxy DHCP не является обязательным. Если ваш DHCP сервер посылает все запрашиваемые параметры, PXE Bootrom не будет искать Proxy DHCP (назывемый также BINL). Под "всеми запрашиваемыми параметрами" мы понимаем основные IP параметры (IP-адрес, шлюз, маска подсети, имя хоста) и специфические параметры поставщика PXE Bootrom (vendor-class - параметр 60 -- устанавливается в "PXEClient" и опции встроенные поставщиком устанвливаются в нечто значимое для PXE Bootrom. Вы можете использовать 01:04:00:00:00:00:ff, если не знаете что значимо для PXE Bootrom). Более полное описание дано ниже.

Поскольку BpBatch сам по себе достаточно мощный, вы не нуждаетесь в использовании киких-либо специфических DHCP расширений (меню и т.д.). Однако, если ваш DHCP сервер не способен оказывать минимальную PXE согласованность, вы нуждаетесь в Proxy DHCP сервере или ваш PXE Bootrom не будет поддерживаться в дальнейшем. Под минимальной PXE согласованностью мы понимаем установки опций VendorClass и VendorOptions (опции 60 и 43 соответственно).

В Linux и Solaris, вы можете запустить нашу Proxy DHCP программу, которая просто принимает в качестве аргумента IP адрес TFTP сервера, имя загрузочного файла и необязательные аргументы, и делает все за вас. Если соответсвующий порт DHCP на сервере уже был запрошен другим демоном, proxy DHCP сервер будет настроен на порт 4011. В этом случае, необходимо , чтобы другой демон на DHCP порту отвечал DHCP предложение с классом клиента PXEClient так, чтобы PXE знал, что он обязан перестроится на порт 4011.

Если вы хотите лучше понять PXE расширение для DHCP, имеется подробное описание, доступное на сайте Intel. Однако помните, что этот документ крайне путанный, поскольку этот протокол был расширен большим числом необязательных фаз, в целях предоставления максимальной гибкости. Ключом к понимнию этого может служить то, что все, в чем нуждается PXE клиент, это полный расширенный DHCP ответ. Если клиент получит только стандартное DHCP предложение, он будет ожидать дальнейшего, до получения:

  1. класса клиента, (T60) определенного как PXEClient.
  2. инкпсулированной опции поставщика (T43).(Не может быть пустой. Но вы можете определить ее значение как 01:04:00:00:00:00, это будет правильно интерпретироваться PXE Bootrom).
  3. непустое значение имени загрузочного файла.
  4. допустимое имя хоста.
Специфическое PXE согласование заканчивется тогда, вся эта информация получена, но может привести к очень сложному процессу , если некоторая информация отсутствует.

Установка TFTP

TFTP сервер это очень простой файловый сервер. В своей основной версии TFTP использует 512-байтные блоки данных, которые крайне неэффективны. Bootix TCP/IP Bootprom и PXE Bootrom предоставляют использование расширенных блоков (1408 байт), которые значительно ускоряют передачу. Однако, это может работать только с расширенным TFTP сервером

В Windows NT мы подразумеваем использование Intel TFTP сервера, доступного из Intel PXE Product Development Kit for Windows. Вы можете найти этот PDK на http://developer.intel.com/ial/wfm/tools/pxepdk20/index.htm . Важное замечание: если вы планируете использовать Intel TFTP на Windows NT, не забудьте переименовать ваш BpBatch загрузчик с bpbatch.P на bpbatch.B. Это предпишет BpBatch использовать Intel-совместимые опции TFTP.

Intel PXE PDK также включает оценочный код PXE Bootrom для Intel EPRO100 серии сетевых адаптеров, вместе с необходимой флеш-утилитой для программирования bootrom с последним выпуском PXE.

В Linux, вы можете использовать tftp демон, включенный в большинство дистрибутивов, но вы не будете иметь никакой поддержки для расширенного TFTP режима (1408 байтовые пакеты). Мы советуем получить расширенный Bootix TFTP сервер, доступный в нашей дистрибутивной директории ( http://cuiwww.unige.ch/info/pc/remote-boot/soft/ ), имя файла incomtftpdlx.tar.gz.

В Solaris, вы можете использовать расширенный Bootix TFTP сервер, также доступный в нашей дистрибутивной директории (имя файла incomtftpdsun.tar.gz). Другой возможный выбор: Джон Мартин (John Martin) (j.martin@abdn.ac.uk) портировал Linux tftpd для Solaris. Вы можете получить его из http://www.csd.abdn.ac.uk/~jmartin/tftpd.tar.gz .

Если вы предпочтете использование стандартного демона TFTP, удалите символ P во всех расширениях имен загрузочных образов, для того, чтобы указать Bootprom использовать только стандартный TFTP порт. (Этот трюк был введен фирмой Bootix для TCP/IP Bootprom. Мы по-прежнему используем это как легкий способ выбора порта TFTP по умолчанию для PXE Bootrom. )

Итак, если вы планируете использование стандартного TFTP сервера, удалите расширения имен файла загрузчика BpBatch (например bpbatch). Если вы планируете использование Bootix TFTP сервера с поддержкой 1408 байтовых пакетов на порту 59, имя файла вашего загрузчика должно иметь расширение P. И наконец, если вы планируете использование Intel TFTP сервера (или один из Bootware), переименуйте ваш загрузчик в bpbatch.B.

4.2 Конфигурация клиента

В начале мы установим часть, общую для всех операционных систем, например интерпретатор пакетного файла. Затем, для каждой операционной системы мы пройдем следующие шаги:

  1. Установка автономного клиента.
  2. Сохранение его конфигурации на сервере.
  3. Тестирование его как клиента удаленной загрузки.
  4. Адаптирование его для работы со всеми подобными клиентскими машинами.
Сделав это однажды, вы получите возможность устанавливать дополнительных клиентов только подключая к ним Bootrom (или покупая компьютер, совместимый с Wired for Management...) и добавляя одну строку в файл конфигурации DHCP.

Наши примеры подразумевают, что вы имеете жесткий диск объемом 1,4 Гб или более. Если вы имеете меньший диск, уменьшите размер разделов, но помните, что вы должны оставить несколько сотен мегабайт нераспределенного пространства (это означает, что последний раздел не должен доходить до последнего цилиндра) чтобы оставить место для специального кэш-раздела. Более того, этот кэш всегда начинается на цилиндре, следуещем за последним распределенным, так, если вы не используете один и тот же суммарный размер для всех ваших тестов, вы будете загружать несколько раз одни и те же файлы (кэш будет автоматически очищаться).

Не отчаивайтесь. Если вы не можете заставить это заработать, во-первых посмотрите в секции Troubleshooting, возможно ваша проблема уже решена (получите последнюю версию из Web). Затем, посмотрите на форуме BpBatch. Возможно, кто-то другой имел ту же проблему, и его ответ может быть найден на этом форуме. URL форума : http://cuiwww.unige.ch/info/pc/remote-boot/forum/ . Если это все еще не работает, подумайте о наблюдении за сетевым траффиком для разрешения проблем с сетью (используйте tcpdump в Linux или snoop в Solaris) Если вы действительно не можете заставить это заработать, вы можете отправить E-mail на support@bpbatch.org. Если ваша проблема прямо относится к конфигурации удаленной загрузки, мы попытаемся решить вашу проблему.

4.3 Установка процесса загрузки.

Получите програмное обеспечение BpBatch либо как .zip, либо как tar.gz. Исполнимые файлы доступны на

В директории /tftpboot на сервере, разместите следующие три специальных загрузочных образа, которые вместе образуют наш предзагрузочный интерпретатор пакетных файлов (в следующих строках, мы используем bpbatch.P как имя загрузочного образа. Если вы не используете Bootix TFTP сервер, переименуйте имя загрузчика либо в bpbatch (стандартный TFTP), либо в bpbatch.B (Intel/Bootware TFTP сервер)):

Затем добавьте элемент в файл конфигурации DHCP для ваших клиентов с загрузочным файлом установленным в "bpbatch.P". Определите опцию поставщика 155 (десятичное) со значением "-i" (для стандартного DHCP сервера, это делается следующей командой: option option-155 "-i";). Это интерпретируется bpbatch как командная строка, и -i означает "интерактивный".

Загрузите клиентский компьютер. Вы должны на короткое время увидеть:

Поздравляем! Вы стартовали пакетный интерпретатор... Если вы интересуетесь, что вы можете сделать с этим, продолжите чтение следующей секции. Если вы спешите, пропустите это, перейдите прямо к установке выбранной операционной системы. Если вы имете какие-либо сомнения в командах интерпретатора, наберите help.

Заметьте, что вы можете запустить тот же самый интерпретатор с DOS и Linux при помощи программы MrBatch. При этом имеется очень мало различий (Linux версия не имеет графической поддержки и DOS версия может только отправлять BOOTP и TFTP запросы, если Bootrom не скрыт операционной системой).

Может быть хорошей идеей прочитать сейчас секцию о синтаксических правилах BpBatch и в особенности параграфы в File References и в The Cache Filesystem. Это поможет вам понять примеры.

Как только все операционные системы будут установлены, вы сможете сделать меню, дающее пользователям возможность выбора желаемой ОС. Вы должны быть способны обнаружить сами, как сделать такое меню. Все необходимые команды описаны в конце этого документа.

Знакомство с BpBatch

Попытайтесь напечатать LogVars. Вы получите около тридцати перечисленных переменных. Приближенно, первые - установки BpBatch, затем следуют все параметры, выделенные из ответа BOOTP/DHCP, и последняя переменная - список размеров дисков, в мегабайтах.

Напечатайте GetPartitions part, затем LogVars снова. Появиться еще одна переменная, содержащая список определенных разделов на вашем первом жестком диске. Подразумевается, что первый раздел BIGDOS, FAT32 или LINUX-EXT2, попробуйте LogDir "{:1}" чтобы получить содержимое корневого каталога, затем LogDir "{:1}/usr" если имеется usr каталог. Вы можете даже попытаться LogTree "{:1}/etc" чтобы получить дерево каталогов.

Разместите GIF файл (формат GIF-87a, с чередованием, или нет, но НЕ GIF-89a) на вашем TFTP сервере. Мы предполагаем, что этот файл называется image.gif. Вы можете копировать его откуда хотите с помощью следующей команды: Copy "image.gif" "{:1}/temp/image.gif". Или вы можете использовать его непосредственно с сервера. Теперь напечатайте Logvars "V*" и посмотрите значение переменной VESA. Если она установлена в On, что наиболее вероятно, это означает, что вы имеете VESA-совместимый видео адаптер. Вы можете получить список возможных видеорежимов, используя команду Echo "". Чтобы показать ваше изображение, попробуйте следующую команду: DrawGif "image.gif". Это изображение появится в верхнем левом углу экрана. Вы можете нарисовать это в другом месте, определяя X и Y координаты после имени изображения. Вы можете нарисовать текст командой DrawText 200 200 "Hello world" yellow. Или нарисовать пустое окно командой DrawWindow 200 200 300 150. Чтобы вставить заголовок, когда вы создаете новое окно, пробуйте DrawWindow 200 200 300 150 "My Window". Когда вы устанете от графического режима, просто напечатайте CloseGraph.

Замечание о графике: по умолчанию, все графические процедуры работают в VESA режиме 800x600 (с 256 цветами), который является первым полем в переменной VESA-Modes. Если вы хотите использовать другой видеорежим, измените эту переменную таким образом, чтобы требуемый видеорежим был первым полем в списке.

Теперь возьмите текстовый редактор, и создайте файл с именем test.bpb в директории tftpboot со следующим содержанием:


:again
DrawWindow 150 200 400 160 "Identity check"
TextAttr Black LightGray
At 15,20 Print "Username : "
Input username 8
At 17,20 Print "Password : "
Getpasswd userpass 8
if "" != "smith" goto again
if not "" match-passwd "BpR8oiIlRR9bo" goto again
clear
DrawWindow 200 200 150 100 green blue "Congratulations"
DrawText 220 250 "You got it !" yellow
WaitForKey 3
CloseGraph
interact

В вашей конфигурации BOOTP/DHCP, измените опцию 155 с "-i" на "test", и перегрузите клиентский компьютер. Этот небольшой скрипт запуститься автоматически, и запросит у вас имя пользователя и пароль. Если вы не напечатаете smith и justdoit, вы не сможете загрузить компьютер. Позднее вы узнаете, как использовать Unix, NT или Radius сервер для проверки действительности пользовательского имени.

4.4 Установка Linux

Для установки Linux, вы будете должны загрузится с дискеты, предоставляемой с дистрибутивом RedHat Linux. BpBatch включает команду, которая может перенаправить загрузку на дискету: FloppyBoot.

Установите RedHat Linux на вашего клиента, с сетевой поддержкой, и любыми желаемыми пакетами. Вы можете захотеть перекомпилировать ядро, чтобы улучшить взаимодействие с вашей аппаратурой, но в этом нет необходимости.

Настройка клиента.

Вероятно, будет хорошей идеей включить поддержку BOOTP в ядро, так, чтобы не определять клиентский IP адрес вручную.

Чтобы уменьшать сетевую загрузку, Вы можете также захотеть установить файловый кэш для кэширования на жестком диске файлов, загруженных посредством NFS. Прближенно, принцип файлового кэша - то, что всякий раз, когда встречается символьная ссылка от подкаталога кэша, она заменяется своим адресатом. Если адресат - самостоятельно подкаталог, каждый элемент подкаталога становится символьной ссылкой к исходному элементу "чужой" файловой системы. Файловый кэш был написан Unifix GmbH, и - часть Unifix Linux 2.0. Он свободно распространяется, и Вы можете получить необходимые файлы по адресу http://cuiwww.unige.ch/info/pc/remote-boot/soft/filecache.tar.gz . Чтобы использовать файловый кэш, вы должны

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

Тестирование конфигурации

Копируйте ваш сжатый образ ядра (zImage, bzImage, vmlinuz или так, как вы его назвали) в каталог /tftpboot на сервере как linux.krn. Если вы должны были отключить bootprom от PC, можете теперь включать его снова. Когда BpBatch запуститься, напечатайте LinuxBoot "linux.krn" "root=/dev/hda1 BOOT_IMAGE=linux" (предполагается, что корень ext2 файловой системы находится на первом разделе). Альтернативно, если вы установили вашу конфигурацию на компьютере без bootrom, пусть он загружается при помощи загрузчика, который вы установили (lilo, ...). Но в последнем случае, если вы хотите, чтобы файловый кэш работал, вы должны иметь явно установленное ядро с поддержкой файлового кэша в правильном месте.

Ждите, пока система не будет готова. Если вы установили файловый кэш, можете отметить, что /usr раскрылся в каталог с некоторым символьными ссылками и некоторыми уже раскрытыми каталогами. Теперь запустите программы, которые конечные пользователи будут использовать большую часть времени, чтобы загрузить их раз и навсегда на жесткий диск.

Вы можете все еще делать добавления к вашей конфигурации, так же, как на любой автономной linux станции.

Построение образа диска.

Когда вы удовлетворены вашей конфигурацией, войдите как root, перейдите к /tmp каталогу, и выполните нашу mrzip программу. MrZip - интерпретатор команд, подобный BpBatch, но он может понимать большее количество команд чем BpBatch. В частности он может понимать следующие команды:


showlog
filter -"tmp/*"
filter -"var/log/*"
fullzip "/" "/tmp/linux.imz"

Следующие команды создадут дисковый образ в /tmp/linux.imz. Переместите его в каталог /tftpboot на сервере. Затем копируйте следующий пакетный файл в /tftpboot/linux.bpb:

hidelog
setpartitions "linux-ext2:992 linux-swap:32"
fullunzip "linux.imz" 1
clean 2
linuxboot "linux.krn" "root=/dev/hda1 BOOT_IMAGE=linux"

Параметр BOOT_IMAGE остается для совместимости с lilo для RedHat 5.1 и последующего rc.sysinit.

Ваша конфигурация удаленной начальной загрузки linux готова! Вы можете теперь или устанавливать BOOTP-OPTION-155 в "linux", или напечатать include "linux.bpb" из BpBatch, чтобы проверить это.

Системное обслуживание и обновления

Если Вы хотите позже модернизировать программное обеспечение, устанавливать исправления ошибок, исправления защиты, проделайте следующее:

Это означает, что вы можете модернизировать программное обеспечение на вашей сервер-основанной конфигурации, как будто это была вполне локальная установка.

4.5 Установка DOS 6 и Windows 3.1

На клиентском компьютере, загрузитесь с вашей первичной DOS дискеты (либо удалите bootrom, либо напечатайте FloppyBoot в BpBatch). Форматируйте раздел dos на вашем жестком диске с опцией /S для размещения операционной системы на нем. Размер этого раздела не важен, поскольку дисковые архивы, создаваемые MrZip файл-ориентированные, и поэтому не зависят от размера раздела.

Создайте DOS директорию, копируйте DOS в нее. Установите ваш первичный сетевой клиент (например Microsoft LanManager), Windows 3.1, и все остальное. Если вы используете Microsoft LanManager, не используйте DHCP для IP конфигурации, поскольку это очень плохая реализация, которая почти наверняка потерпит неудачу с реальной сетевой загрузкой. Чтобы сделать это, добавьте следующие строки в ваш файл protocol.ref в секцию, которая загружает tcptsr (конечно, замените xxx вашими реальными IP параметрами):

IPADDRESS0 = xxx xxx xxx xxx
SUBNETMASK0 = 255 255 xxx xxx
DEFAULTGATEWAY0 = xxx xxx xxx xxx
DISABLEDHCP = 1

Не бойтесь использовать EMM386 для оптимизации использования памяти, и даже включить область, занимаемую ПЗУ вашей сетевой карты, поскольку она не используется в это время. Но осторожно исключите ОЗУ сетевой карты, иначе вы несможете соединится с вашим сервером. Используйте NOEMS параметр.

Если вы хотите быть уверены, что клиентский компьютер не сможет использоваться без действительного имени пользователя, воспользуйтесь нашим nobreak псевдо-драйвером, (доступным на http://cuiwww.unige.ch/info/pc/remote-boot/soft/nobreak.zip ) и запустите его в начале вашего config.sys. Затем добавьте что-то подобное этому в ваш autoexec.bat:


rem -- Мы используем файл c:\logged как признак del c:\logged >nul
:loginneeded
cls
echo Please type in your login name and password
echo.
net logon *
rem -- Сценарий входа должен создавать файл c:\logged
if not exist c:\logged goto loginneeded
del c:\logged
rem -- теперь снова разрешим break echo Yes >NOBRK

Убедитесь, что ваш клиент загружается нормально, перегрузите клиента и оцените следующие команды в интерактивном режиме BpBatch:

HideBootprom
HdBoot
ПК загрузится с жесткого диска, как если бы BpBatch не был виден.

Построение образа диска

На сервере создайте разделяемый ресурс, называемый, для примера admin , в который вы будете помещать некоторые вещи для администрирования системы. Если сервер это Unix машина, имеется удобная возможность разместить в admin ссылку на директорию /tftpboot так, что вы сможете размещать образы в ней прямо с клиента. В директории admin, создайте поддиректорию /utils и разместите в ней следующие файлы:

Вы могли бы также поместить в тот же самый каталог простой MrZip скрипт-файл названный zipdos.mrz, который содержит команды, необходимые для формирования образа DOS, подобно этому:

showlog
filter -"lanman.dos/lmuser.ini"
filter -"temp/*"
filter -"*.swp"
fullzip "c:/" "L:/tftpboot/dos.imz"

Теперь возвратитесь к вашему клиенту, смонтируйте том admin на диск L:, перейдите к вашему каталогу utils и напечатайте следующую команду:

mrzip -b zipdos

Минутой позже, вы будете иметь новый файл в подкаталоге /tftpboot на сервере, называемый dos.imz, который является сжатым образом вашего жесткого диска. Копируйте следующий пакетный файл в /tftpboot/dos.bpb:


hidelog
setpartitions "bigdos:1024"
setbootpart 1
fullunzip "dos.imz" 1
hidebootprom
hdboot :1

Ваша конфигурация с удаленной начальной загрузкой DOS готова! Вы можете теперь или устанавливать BOOTP-OPTION-155 в "dos", или напечатать include "dos.bpb" из BpBatch, чтобы проверить это.

Адаптация конфигурации для других машин

Если вы хотите настроить некоторые установки в соответствии машине, обычно IP параметры настройки, поскольку Micro DHCP насыщена ошибками, вы можете установить BpBatch так, чтобы изменять некоторые файлы перед загрузкой. Сначала перейдите в lanman.dos каталог, и дайте команду

copy *.ini *.ref
Затем отредактируйте .ref файлы, и замените все фиксированные параметры с BOOTP именами переменных, как в следующих примерах:
computername = ipaddress0 = subnetmask0 = defaultgateway = 
Затем перестройте дисковый образ как указано ранее. Обратите внимание, что для параметров IP, мы не используем BOOTP переменные непосредственно, потому что в этом случае LanManager нуждается в числах, разделенных запятыми взамен чисел, разделенных точками. Измените dos.bpb в соответствии со следующим:

hidelog
setpartitions "bigdos:1024"
setbootpart 1
fullunzip "dos.imz" 1
set MS-IPAddress=""/.= /
set MS-IPSubnet=""/.= /
set MS-IPRouter=""/.= /
patch "{:1}lanman.dos/protocol.ref" "{:1}lanman.dos/protocol.ini"
patch "{:1}lanman.dos/tcpputils.ref" "{:1}lanman.dos/tcputils.ini"
patch "{:1}lanman.dos/lanman.ref" "{:1}lanman.dos/lanman.ini"
hidebootprom
hdboot :1

Если вы предпочитаете, вы можете также помещать .ref файлы в каталог /tftpboot на сервере вместо его помещения в дисковый образ.

Мы предпочитаем иметь возможность легко изменять конфигурацию компьютеров без перестройки образа. Чтобы сделать это, копируйте ваш autoexec.bat и config.sys как autoexec.ref и config.ref в /tftpboot на сервере, и добавьте следующий две строки к пакетному файлу выше:

patch "autoexec.ref" "{:1}autoexec.bat"
patch "config.ref" "{:1}config.sys"
Вы можете тогда свободно изменять файлы и даже настраивать их с машинно-зависимыми значениями, полученными от BOOTP.

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

Системное обслуживание и обновления

Если вы позже хотите добавить новое программное обеспечение или изменять что - нибудь еще, проделайте следующее:

Это означает, вы можете модернизировать программное обеспечение на вашей сервер-основанной конфигурации, как будто это была вполне локальная установка.

4.6 Установка Windows 95/98

В предыдущей версии данного документа мы использовали серверную инсталляцию Windows 95/98 от Microsoft, но это было действительно большое страдание и небольшой выигрыш:

Поэтому мы удалили из данного документа всю информацию и обзор багов, собранный на протяжении месяца (вы можете найти ее как HTML документ по адресу http://cuiwww.unige.ch/info/pc/remote-boot/win95old/win95old.html ) и переключились на нашу новую концепцию диск-ориентированной удаленной загрузки. В основном, конфигурация для Windows 95/98 теперь почти также проста, как конфигурация для DOS.

Установка Автономного Клиента

Установите обычного клиента Windows 95/98, либо стартовав с временного места как объяснено в конфигурации DOS клиента, либо стартовав из DOS клиента и инсталлируя через сеть (по вашему желанию). Вы также можете стартовать с предустановленной Windows машины, но вы вероятно будете иметь меньше информации о том, что находится на вашем жестком диске.

Проделайте все, что описано выше для DOS клиента. Обычно нет необходимости использовать EMM386 с Windows 95/98. Если вы используете Windows 98 или Windows 95 OSR2 (псевдонимы: MSWIN 4.1, Windows 95 service pack 1, Windows 95 with Internet Explorer), вам нужно добавить следующую строку в секцию [Options] файла MSDOS.SYS (да, это текстовый файл):


AUTOSCAN=0

Это даст Windows знать, что вы не хотите автоматически запускать ScanDisk при загрузке.

Если вы хотите уменьшить загрузку сети и сервера (что повысит производительность вашей системы) пока все программное обеспечение сохраняется на сервере, вы можете установить превосходный Shared LAN Cache от Measurement Techniques, Inc (смотрите http://www.lancache.com ). Это программное обеспечение запускается на каждом клиентском компьютере и кэширует на локальном жестком диске все данные, получаемые из сети. Даже MS Office стартует быстрее , когда вы его запускаете во второй раз. Вам нужна одна лицензия на клиентский компьютер, но это не очень дорого, и фирма предлагает специальные цены для университетов и колледжей. Лучший способ сделать это - посетить их Web сайт и загрузить свободную оценочную копию.

Формирование дискового образа

В этой точке, если вы используете сервер Samba, вам, возможно, придется отключить кодирование паролей, чтобы иметь возможность смонтировать позже том admin. Вы можете делать это, добавляя ключ системного реестра EnablePlainTextPassword формата DWORD со значением 1 в разделе

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]

Ваш MrZip сценарий будет назван zipwin.mrz и будет содержать:


showlog
filter -"windows/schedlog.txt"
filter -"windows/msimgsiz.dat"
filter -"*/index.dat"
filter -"*.swp"
filter -"*.tmp"
filter -"temp/*"
fullzip "c:/" "L:/tftpboot/win.imz"

Чтобы построить образ, смонтируйте том admin как диск L:, перейдите в ваш каталог utils и наберите следующую команду:

mrzip -b zipwin

Через несколько минут, вы будете иметь новый файл в подкаталоге /tftpboot на сервере, названный win.imz, который является сжатым образом вашего жесткого диска. Если ваш сжатый образ был больше чем 87 МБ, вероятно, он будет разбит на два или больше фрагмента. Эти фрагменты будут автоматически загружены один за другим когда необходимо. Обратите внимание, что образ больше чем 87 МБ будет обычно требовать для загрузки больше одной минуты для распаковки и может раздражать ваших пользователей. Наш образ Windows 95/98 - величиной только 70 МБ, потому что большинство программных средств установлено на сервере и загружается только по требованию. Имеется только небольшое количество программного обеспечения, которое вы действительно должны установить локально. Если вы заботитесь об этом так же, как и мы, вы должны суметь распаковать образ и восстанавливать весь диск меньше чем за одну минуту.

Копируйте следующий пакетный файл в /tftpboot/win.bpb:


hidelog
setpartitions "bigdos:1024"
setbootpart 1
fullunzip "win.imz" 1
hidebootprom
hdboot :1

Ваша конфигурация Windows 95/98 с удаленной начальной загрузкой готова! Вы можете теперь либо установить BOOTP-OPTION-155 в "win", либо набрать include "win.bpb" из BpBatch, чтобы проверить это.

Адаптация конфигурации для других машин

Большое различие между Windows 3.1 и Windows 95/98 - то, что последний включает код для Plug-and-play, то есть автоматического обнаружения ваших аппаратных средств. Это не плохая вещь сама по себе, но неприятность состоит в том, что она зачастую слишком чувствительна, и поэтому иногда приводит к ошибкам.

Если вы пытаетесь запустить другого клиента с точно таким же образом начальной загрузки, вероятно вы получите несколько сообщений в течение запуска, сообщающих о том, что Windows обнаружила новые аппаратные средства: новая звуковая плата, новый жесткий диск, новая сетевая плата, и даже новая мышь ... Для этого может быть две причины:

Факт, что Windows 95/98 обнаруживает, что аппаратные средства изменились, не может быть проблемой если plug-and-play работает как должна, но это становится проблемой, когда plug-and-play не работает. Например, Windows 95 plug-and-play для нашей Logitech PS2/aux мыши не работает, и в результате система не имеет никакой мыши вообще. Решить такой вид проблем можно, договорившись иметь все компьютеры настолько подобными, насколько возможно, или делать различные образы для различных аппаратных средств. Позже, вы обнаружите, что вы можете просто использовать тот же самый образ и несколько копий системного реестра, которые вы можете копировать после восстановления дисковго образа, но перед загрузкой.

Сетевая плата - это тот элемент, которого вы не можете избежать в различиях между компьютерами. PCI платы обычно не мешают, проблемы возникают с ISA plug-and-play . Беда в том, что код plug-and-play для нашей SMC EtherEZ платы "подвешивает" компьютер. Единственное решение состоит в том, чтобы позволить Windows 95/98 считать, что она уже "знает" сетевую плату, и нет необходимоcти обращаться к plug-and-play. Уловка состоит в том, чтобы автоматически вставить элемент для сетевой платы в системный реестр Windows 95/98 перед ее стартом. Обратите внимание, что этот трюк больше не нужен с большинством PCI плат.

Переместите autoexec.bat на сервер как описано выше для DOS. Отредактируйте его (на сервере) и добавьте следующие строки:

rem --- Patch Windows registry in order to avoid plug-and-play detection
regedit /L:c:\windows\system.dat /R:c:\windows\user.dat c:\temp\patch.reg
Regedit - стандартная программа Windows, которая позволяет вам просматривать системный реестр, если вы запускаете ее из Windows, или позволяет выполнять простые операции с системным реестром, если Вы вызываете ее из DOS. Запустите regedit под Windows, найдите вашу сетевую плату, обычно под
HKEY_LOCAL_MACHINE\Enum\ISAPNP
И экспортируйте эту ветвь, используя меню File. . Это создаст текстовый файл, который вы должны разместить как patch.ref в каталог /tftpboot на сервере. Отредактируйте этот файл, и выясните, где сохранен MAC-адрес платы (сделайте это на двух различных машинах, и сравните файлы, если вы не можете найти его самостоятельно). Замените их образцом в форме . Затем добавьте строки в сценарий win.bpb подобно этому:
set macid = ""
patch "patch.ref" "{:1}temp/patch.reg"
(проделайте все необходимые манипуляции со строками для установки MACID, если это не точно MAC-адрес клиента). Это - все, ваши клиенты больше не должны пытаться определять сетевую плату.

Отметим еще раз, в целом это не нужно при использовании PCI сетевых адаптеров. Кстати, мы можем использовать тот же самый механизм для автоматически конфигурирования имени хоста, которое Windows, по-видимому, не принимает во внимание при конфигурировании через DHCP. Мы только добавляем следующую строку к нашему patch.ref файлу:


[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"ComputerName"=""
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP]
"HostName"=""
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\ComputerName\ComputerName]
"ComputerName"=""

Используя этот несложный трюк с системным реестром, ваша конфигурация обычно должна быть переносима на все машины с подобными конфигурациями. Если Вы не можете избежать того, что Windows обнаруживает некоторые аппаратные средства как новые на одной из машин, попытайтесь перестроить дисковый образ с этой машины. Новый образ будет включать конфигурацию системного реестра, определенную для этой машины, что надежно решит проблему

Системное обслуживание и обновления

Если вы позже захотите модернизировать программное обеспечение, установить исправления ошибок и исправления защиты, проделайте следующее:

Это означает, что вы можете модернизировать программное обеспечение на вашей сервер-основанной конфигурации, как будто это вполне локальная установка.

4.7 Установка Windows NT

Мы не используем Windows NT для клиентских компьютеров с удаленной начальной загрузкой, но мы проверили нашу систему, чтобы гарантировать, что это также работает. И это работает.

Поскольку наши утилиты в настоящее время не поддерживают NTFS (мы не имеем ни документации, ни времени, чтобы сделать это, но я был бы счастлив помочь любому, кто заинтересован в этом), вы должны будете установить NT на FAT16 (просто не конвертируйте ваши разделы в NTFS при установке)...

Скопируйте ваш сценарий начальной загрузки win.bpb в winnt.bpb. Измените setpartitions строку в winnt.bpb следующим образом:

setpartitions "BIGDOS:512 BIGDOS:512"
Затем загрузите Windows, используя этот сценарий, и установите вашего NT клиента на диске C. Не волнуйтесь пока относительно второго раздела. Не устанавливайте слишком много компонентов, иначе вы получите большой и медленно распаковывающийся образ. Удалите Windows с диска C, послольку вы не нуждаетесь в этом при использовании Windows NT образа (меню начальной загрузки обрабатывается bootrom, а не загрузчиком NT).

Перезагрузите ваш компьютер, не переписывая жесткий диск, то есть не выполняя winnt сценарий, только

hidebootprom
hdboot
Ваша NT станция должна стартовать правильно. Сделайте любую необходимую настройку.

Формирование дискового образа

Неприятность с Windows NT состоит в том, что прямой дисковый доступ запрещен ядром. Это означает, что MrZip даже не будет способен читать загрузочные секторы. Лучший способ построить образ состоит в загрузке Windows 95/98 и выполнении MrZip из окна DOS. Чтобы сделать это, измените winnt.bpb сценарий так, чтобы образ Windows был восстановлен не на первом, а на втором разделе:


hidelog
setpartitions "BIGDOS:512 BIGDOS:512"
setbootpart 2
fullunzip "win.imz" 2
hidebootprom
hdboot :2

(Если Вы имеете любую дополнительную заплату, замените "{:1}" на "{:2}"). Загрузившись с этим сценарием, вы получите работающую Windows, но новый диск D: должен быть доступен, и содержать Windows NT.

Постройте ваш дисковый образ как обычно (но диска D:, конечно), и сохраните его как winnt.imz в каталоге /tftpboot на сервере. Отредактируйте в последний раз winnt.bpb сценарий подобно этому:


hidelog
setpartitions "BIGDOS:512 BIGDOS:512"
setbootpart 1
fullunzip "winnt.imz" 1
clean 2
hidebootprom
hdboot :1

Ваш конфигурация Windows NT с удаленной начальной загрузкой готова. Конечно, если Вы не хотите иметь два раздела, Вы можете установить один раздел вместо этого. Но когда вы соберетесь перестроить образ, вы будете должны будете снова установить второй раздел для загрузки Windows 95.

Системное обслуживание и обновления

Если вы захотите позже модернизировать программное обеспечение, установить исправления ошибок и защиты, проделайте следующее:

Это - все, народ!

4.8 Неисправности.(ЧаВо)

Эта секция содержит наиболее часто встречающиеся проблемы.

Загрузка образа никогда не заканчивается

Вероятно, вы используете стандартный TFTP сервер, и он не может обработать более чем 65535 пакетов по 512 байт (или даже 32767 пакетов для Solaris сервера) Если так , ваш образ должен быть фрагментирован на части не более 30 МБ (или 15 Мб для Solaris) Смотрите ниже CopyArchive для инструкций по фрагментации существующего образа. Если вы используете стандартный сервер, вы должны согласиться инсталлировать Bootix или Intel TFTP сервер. Смотрите следующий вопрос об этом сервере

BpBatch показывает сообщение об ошибке "Fragment is not complete"

Это проблема TFTP. Расширение имени файла вашего загрузчика должно быть соответственно установлено (читает раздел относительно TFTP серверов). Если вы используете Bootix TFTP сервер с -s 1408 59 опцией, ваш загрузчик должен быть назван bpbatch.P. Если вы используете Intel или Bootware TFTP сервер с поддержкой опции TFTP blksize, переименуйте ваш загрузчик в bpbatch.B. Наконец, если вы используете стандартный TFTP сервер, переименуйте ваш загрузчик в bpbatch (без расширения). В этом последнем случае BpBatch будет использовать 512-байтовые пакеты вместо 1408-байтовых. Это ограничит размер фрагментов до 32МБ (внутреннее TFTP ограничение) вместо 87МБ. См. выше вопросы для проблем относительно 512-байтовых пакетов.

Распаковк архива прерывается немедленно.

Имеются три возможных причины. Или образ действительно разрушен на сервере (попытайтесь использовать MrZip, чтобы видеть, имеет ли это место), или передача файла потерпела неудачу из-за TFTP таймаута, или из-за несовместимого протокола.

TFTP таймаут происходит, когда сеть сильно загружена (например, если ы пытаетесь загрузить огромный образ более чем четырьмя клиентами одновременно). В этом случае, BpBatch не делает бесконечных попыток, потому что это не помогло бы. Выключите несколько компьютеров и попытайтесь снова с не более чем четырьмя компьютерами (или возможно даже тремя). Если вы часто должны загружать образы на большое количество компьютеров, вы можете опробовать наш специальный Broadcast TFTP сервер (см. раздел, посвещенный этому).

Ошибка несовместимости протоколов вызвана использованием стандартного TFTP сервера (обычно встроенного на вашем UNIX сервере) в то время как BpBatch запрашивает работу с расширенным TFTP. Если вы используете стандартный TFTP сервер, вы должны удалить .P расширение (см. объяснение в следующем вопросе).

Компьютер зависает вместо загрузки/распаковки (1)

Если вы используете Bootix TFTP сервер, пробуете добавить -s 1408 59 к командной строке. Если Вы не используете расширенный TFTP сервер, удалите .P расширение из имени файла BpBatch на сервере и в файле bootptab.

Детальное объяснение: эта проблема происходит, если вы не установили расширенный TFTP сервер, но использовали bpbatch.P как значение имени файла начальной загрузки DHCP/BOOTP. BpBatch будет в действительности пытаться подключиться к Bootix TFTP серверу, когда имя файла начальной загрузки заканчивается расширением .P. Чтобы решить эту проблему, вы можете или удалить .P расширение в конце имени файла начальной загрузки (это предпишет BpBatch использовать стандартный TFTP) или устанавить расширенный TFTP сервер. Альтернативно, вы можете устанавить Intel TFTP сервер и переименовать загрузчик в bpbatch.B. Обратите внимание: для Bootix TFTP сервера, чтобы должным образом работать с расширенными возможностями TFTP, вы должны добавить -s 1408 59 к командной строке.

Компьютер зависает вместо загрузки/распаковки (2)

Возможно, ваш компьютер имеет плохую поддержку VESA. Попробуйте дать параметр командной строки -v или устанавить VESA переменную в "OFF".

Нарушение VESA прокрутки.

Мы используем VESA 1.1 функцию для прокрутки. Если ваш видеоадаптер не поддерживает 1.1 VESA, забудьте об этом. Если прокрутка выполняется для одной страницы, а затем воспроизводит странный рваный шаблон, не волнуйтесь. Это - известная ошибка, я буду устранять ее, как только буду иметь время для этого (VESA прокрутка не столь необходима ...).

Имеется разрушенный файл в кэше

Когда файл в кэше разрушается внешней программой, он автоматически удаляется из кэша. Когда файл в кэше записан не полностью (если компьютер был выключен в течение передачи файла), он также автоматически удаляется. Но если сервер передает разрушенный файл или если передача прерывается со стороны сервера, возможно, что этот файл останется в кэше. Вы можете очистить кэш просто держа обе клавиши SHIFT нажатыми в то время как BpBatch обращается к кэшу впервые. Альтернативно, вы можете испытать clean -1 в диалоговом режиме.

Команда EXIT не работает в пакетном файле

Это - не ошибка. Выход - не команда. Не имеется никакой команды выхода, потому что нет никакого смысла выйти из сценария начальной загрузки без загрузки. И MrBatch - действительно та же самая программа как BpBatch. Что Вы можете делать, так это вызывать HdBoot вместо этого. Это имеет смысл, и версия DOS чисто выйдет вместо перезагрузки. Обратите внимание, что Вы можете выйти из DOS в любое время, нажимая Ctrl-Break. Это восстановит все перехваченные прерывания перед оставлением.

Команда Print не печатает

Если вы пробуете напечатать что-то и немедленно перейти в диалоговый режим, вы не сможете увидеть ваш текст. Это происходит потому, что ваш текст был написан на runtime экране, а команда Interact переключила дисплей на экран Log. Достаточно поместить GetKey после команд печати, и вы увидите напечатанный текст.

MrZip сообщение Malloc failed

MrZip нуждается в достаточном количестве обычной памяти для выполнения. Если вы сталкиваетесь с этой проблемой, сначала убедитесь, что вы выгрузили bootrom либо использовав команду HideBootprom либо использовав Bootix's bputil. Если вы выполняете MrZip из чистого MS DOS (не из DOS-сессии Windows 95/98), вы должны использовать EMM386, чтобы загрузить сетевые драйверы в верхнюю память, чтобы максимально возможный объем обычной памяти. Из окна DOS-сессии Windows обычно не встречается никаких проблем (если вы не оставили ваших старых 16-разрядных драйверов в вашем autoexec.bat, когда устанавливали Windows).

MrZip прерывается при чтении каталогов

Эта ошибка уже была устранена однажды. Получите самый последний выпуск MrZip. Если проблема сохраняется, попытайтесь построить ваш образ с переменной Trace установленной в "ON" (и обычно PauseLog установленной в "OFF"); это позволит вам обнаружить, какой файл вызывает эту проблему. Пришлите детальное сообщение об ошибке.

MrZip не может обращаться к некоторому файлу

MrZip вероятно пробует прочитать блокированный, открытый или специальный файл, например файл подкачки Windows. Такие файлы не должны обычно включаться в образ и должны быть отфильтрованы (использованием команды filter). Также возможно, что операционная система обманывает вас. Если MrZip не сообщает вам, какой файл вызывает проблему, попытайтесь построить ваш образ с переменной Trace установленной в "ON" (и обычно PauseLog установленной в "OFF"). Вы можете также попробовать использовать прямой дисковый доступ (то есть обращаться к исходному разделу не как к "C:" или "/", а как к "{:1}" каким бы ни был этот раздел). Использование прямого дискового доступа обычно медленнее, потому что мы имеем меньшее количество буферов чем операционная система, но это может быть иногда более надежно.

Дисковые образы всегда перезагружаются с сервера

Дисковые образы сохраняются в специальной области кэша и не должны быть перезагружены, если они не изменились на сервере. Однако, поскольку область кэша всегда начинается после последнего используемого раздела, изменение полного размера разделов переместит расположение кэша и таким образом уничтожит его содержимое. Другая возможная причина исчезновения файла из кэша - то, что предыдущий файл вырос больше чем в полтора раза от своего начального размера. Этот файл мог бы быть перезаписан и требует повторной загрузки. Это почти никогда не должно происходить. Третья возможная причина - слишком маленькая область кэша. Если свободное пространство, оставленное вне разделов - меньше чем в полтора раза превышает сумму размеров всех сжатых образов, только последние использовавшиеся образы будут присутствовать в кэше, а другие должны будут перезагружаться по требованию.

Red Hat Linux 5.1 не загружается должным образом

Этот дистрибутив предполагает, что Linux был загружен используя lilo и проверяет BOOT_IMAGE параметр командной строки (в /etc/rc.d/rc.sysinit). Просто добавьте это в вызове linuxboot или измените ваш rc.sysinit.

Широковещание TFTP подвешивает ramdisk (Входит в связанное состояние))

Linux DHCP клиент - программа, которая динамически изменяет адрес IP клиента в соответствии с предложением DHCP. Если адрес предоставляется навсегда (неограниченное время аренды), DHCP клиент только устанавливает адрес, и возвращается (это - то, что мы ожидаем). Однако, если время аренды ограничено, DHCP клиент должен остаться загруженным и просить о новых адресах каждые несколько минут. И если DHCP клиент не возвращается, MrBatch никогда не будет загружен ... Решение состоит в том, чтобы предоставить неограничное время аренды (иногда кодируется как -1).

Доступ к файлам виснет под BpBatch, но не под MrBatch

Эта проблема проиходит на AMI BIOS датированной 94/07/25. Мы исследовали немного, и не нашли никакого решения. Кажется, что эта проблема из-за ошибки в этой BIOS (некоторый регистр, или расположение памяти должно быть разрушено).

Сбой распаковки фрагментированного архива (Malloc failed)

Эта проблема была связана с PXE совместимостью, но теперь она устранена. Пожалуйста получите самую последнюю версию.

MrBatch и MrZip жалуются на терминал под RedHat 5.x

Эта проблема была устранена в версии MrBatch/MrZip от 9-ого августа. Имелась проблема с новой версией ncurses, которая была выпущена с RedHat 5.1.

"libncurses.so.3.0: cannot open shared object file" под Linux

MrZip был связан с версией 3.0 libncurses. Вы можете использовать другие версии libncurses только, если они более новые чем версия 3.0. Чтобы использовать более новый libncurses, все, что вы должны cделать - это создать символьную ссылку от libncurses.so.3.0 до вашего libncurses.so.xx файла. С RedHat 5.1, вы можете использовать следующую команду: cd /usr/lib ; ln -s libncurses.4.2 libncurses.3.0 Вы можете также загрузить последнюю версию mrzip/mrbatch. Начинаясь с выпуска 10/25/98, MrBatch откомпилирован под RedHat 5.1.

MrBatch и MrZip не стартуют под Linux (file not found)

Эта проблема - обратная предыдущей. Теперь, когда дистрибутив libc6 готов, он не может использоваться больше с libc5. Если вы сталкиваетесь с этой проблемой, просто модернизируете ваш Linux блок (Конечно, поскольку мы слышим слишком большое количество жалоб, мы могли бы попробовать сохранить два дистрибутива ...).

Я не могу обращаться к другому режиму, кроме установленного по умолчанию режима VESA 800x600

Вы должны сначала отобразить содержимое переменной VESA-Modes, чтобы увидеть поддерживают ли ваши аппаратные средства режим, который вы хотели бы использовать. Затем попробуйте один из этих двух способов выбрать специальный режим VESA:

BpBatch печатает " Malloc failed " сообщение при восстановлении образов, состоящих из большого числа фрагментов

Мы исправили ошибку в функциях распределения памяти BpBatch. Вы должны удостовериться, что имеете версию BpBatch, которая была выпущен после 22-ого сентября 1998.

Fullunzip при использовании под Linux версии MrBatch всегда терпит неудачу

Мы исправили эту проблему в выпуске 09/22/1998.

Scandisk сообщает что диск разрушен

Выпуск 10/25/98 исправлял проблему с большими образами. Пробуйте загрузить последнюю версию BpBatch.

Моя RedHat загрузочная дискета не работает с FloppyBoot

Эта ошибка была исправлена в выпуске 10/25/98.

Мой дисковый образ FAT32 не загружается должным образом

Эта ошибка была исправлена в выпуске 02/09/99.

Вы всегда получаете "Cannot load file", когда запускаете BpBatch

Ваш DHCP сервер не посылает правильную опцию 135 клиенту. BpBatch использует опцию 135 как параметр командной строки. Вы можете определить "-i", если вы хотите перейти в диалоговый режим, или можете определить имя сценария, если хотите, чтобы BpBatch запустил выбранный сценарий (не включайте .bpb расширение). Если вы используете PXE Bootrom, удостоверитесь, что Вы используете опцию -135 для параметров командной строки. Опция -155 больше не поддерживается PXE 2.0 Bootrom.


Previous Next Contents
Previous Next Contents

5. Справочное описание инструментальных средств удаленной начальной загрузки

Этот раздел обеспечивает детальную информацию относительно использования инструментальных средств, которые мы разработали в CUI, Университете Женевы для конфигурации удаленной начальной загрузки.

5.1 BpBatch, MrBatch и MrZip

Эти три названия соответствуют трем вариантам одной той же самой программы, со следующими характеристиками:

Параметры командной строки

Все программы принимают один и тот же синтаксис параметров. MrBatch и MrZip берут их из командной строки, в то время как BpBatch ищет их в опции 155 BOOTP (десятичное число). Имеется следующий синтаксис параметров:

[-x] [-l] [-b] [-v] [-w] [-i] [script-basename]
где: Имя сценария script-basename не обязательно. Если предложено, MrBatch и BpBatch загружают файл с расширением .bpb, а MrZip загружают файл с расширением .mrz. Если не предложено MrBatch и MrZip, выполненяются в диалоговом режиме, в то время как BpBatch загружает файл тем же самым basename, что и файл начальной загрузки BOOTP и .bpb расширением.

Правила синтаксиса

Следующие правила применяются, когда BpBatch анализирует входную строку.

Пустые строки игнорируются. Строки, начинающиеся с символа (#) обрабатываются как комментарии и не интерпретируются. Строки, начинающиеся с двоеточия (:) обрабатываются как метки и не интерпретируются.

Строковые выражения

Строки разделяются открывающей и закрывающей кавычкой:

"Hello world"
Чтобы включать двойные квычки в строку, укажите их, используя обратную наклонную черту:
"I said: \"Hello world\""
Строки могут быть отредактированы несколькими операторами Операторы могут быть выполнятся последовательно, редактируя один за другим. Информацию относительно длины строки и операторов подсчета слов, см. "Числовые выражения".

Числовые выражения

Числовые выражения выполняются над 32-битовых целыми числами (от -2,147,483,646 до 2,147,483,647). Шестнадцатеричные восьмеричные и двоичные числа не распознаются. Всякий раз, когда ожидается числовое выражение, понимается следующее:

Интервалы времени

Нескоторые команды ожидают интервал времени как параметр. Интервалы времени измеряются в секундах, с точностью до десятой части секунды:

Delay 3 задержка 3 секунды
Delay 0.3 задержка 3/10 секунды

Цвета

Всякий раз, когда цвет ожидается, вы можете использовать или числовое значение цвета или его символическое (независимое от регистра) имя. Следующие цвета распознаются:

Black 0
Blue 1
Green 2
Cyan 3
Red 4
Magenta 5
Brown 6
LightGray 7
DarkGray 8
LightBlue 9
LightGreen 10
LightCyan 11
LightRed 12
LightMagenta 13
Yellow 14
White 15

Обращение к файлам

Имена файлов - строки. Поэтому они должны всегда заключаться в двойные кавычки. Имена файлов чувствительны к регистру на чувствительной к регистру файловой системе, нечувствительны к регистру на нечувствительной к регистру файловой системе. Наклонная черта вправо и наклонная черта влево могут свободно использоваться одна вместо другой. Не забудьте удваивать наклонную черту влево, так как одиночная наклонная черта влево - символ ESC.

Имеются два вида обращения к файлам:

Прямое обращение к файлам использует следующую запись:

"{disk:partition}/absolute/filename"
Номер диска может быть опущен и по умолчанию равен нолю. Например, "{:1}/usr/bin" указывает на /usr/bin, поразумевается что такой каталог есть на первом разделе. Прямой файловый ввод-вывод является основанным исключительно на наших собственных подпрограммах доступа к файлам (мы не используем операционную систему).

Имеются два специальных раздела. Раздел ноль соответствует блоку начальной загрузки жесткого диска (MBR), и имеет файловую псевдо-систему, которая позволяет Вам обращаться к коду начальной загрузки. Раздел "минус один" (-1) соответствует файловой системе кэша (см. ниже).

Под BpBatch/MrBatch, "чужие" файлы соответствуют удаленным файлам на TFTP сервере, когда BootProm доступен:

"help.bpb" файл help.bpb в /tftpboot каталоге "images/MyImage.pcx" файл в /tftpboot/images 
Другие TFTP серверы могут быть упомянуты:
"198.76.54.32:help.bpb" 
Если другой сервер - позади шлюза:
"198.70.0.1/198.76.54.31:help.bpb"
Можно также определить конкретный порт для TFTP подключения:
"198.76.54.32@89:getpasswd/smith"
Может иметься одновременно только один открытый удаленный файл . Если BootProm - не доступен, удаленные файлы эмулируются, используя файловый ввод-вывод операционной системы, но применяется то же самое ограничение.

Под MrZip, "чужие" файлы соответствуют файлам, "видимым" операционной системой. Не имеется никакого ограничения, и "чужие" файлы могут использоваться везде, где могут быть прямые дисковые файлы. "Чужие" файлы обычно быстрее чем прямые дисковые файлы, потому что операционная система имеет большее количество буферов. "Чужие" файлы могут обратиться к сетевым файлам, если это поддерживается операционной системой.

"C:\\autoexec.bat"
"C:/config.sys"
"/mnt/net/usr"

Файловая система кэша.

Чтобы уменьшить сетевую загрузку и ускорить процесс начальной загрузки, дисковый архив, linux ядра и возможно другие файлы кэшируются на жестком диске. Этот буфер системы ввода-вывода расположен в конце жесткого диска, между последним цилиндром, распределенным в таблице разделов и последним физическом цилиндром диска (вне любого распределенного раздела). ДОЛЖНО ИМЕТЬСЯ место между последним разделом и концом диска, если вы хотите, чтобы файловая система кэша работала. файловая система кэша ДОЛЖНА работать, если Вы хотите восстанавливать дисковый образ.

Этот дисковый кэш организован во временную, основанную на проверке CRC файловую систему: каждый элемент каталога и каждый блок данных объемом 32 кб подтверждаются 32-битовой циклической контрольной суммой. Всякий раз, когда элемент каталога или блок данных неожиданно изменяются, файл автоматически удаляется из кэша и загружается снова при следующем запросе.

Вы можете свободно обращаться к файловой системе кэша из BpBatch, MrBatch и MrZip использованием прямого дискового доступа на специальном разделе "{:-1}".. Чтобы видеть содержимое кэша, просто напечатайте:

logdir "{:-1}"
Если даже кэш был разрушен и не очищен автоматически (что не должено происходить никогда), вы можете либо напечатать:
clean -1
(в диалоговом режиме) или держать нажатыми обе клавиши SHIFT, когда BpBatch впервые обращается к кэшу.

Специальные переменные

Некоторые переменные первоначально установлены и/или имеют специальные значения. Некоторые из них существуют во всех программах, другие доступны только под MrZip, остальные доступны только при получении BOOTP/DHCP ответа.

Общие переменные

См. также BOOTP переменные и специфические MrZip переменные.

Специфические MrZip переменные

Следующие переменные только используются в пределах MrZip.

BOOTP переменные

Следующие BOOTP- ... и DHCP- ... переменные распознаются, когда ответ BOOTP/DHCP был получен (TCP/IP Bootprom должен сообщать об обнаружении):

$BOOTP-Client-ID
$BOOTP-Your-IP
$BOOTP-Server-IP
$BOOTP-Gateway-IP
$BOOTP-Bootfile
$BOOTP-Server-Name
$BOOTP-Subnet-Mask
$BOOTP-Time-Offset
$BOOTP-Routers
$BOOTP-Time-Servers
$BOOTP-Name-Servers
$BOOTP-Domain-name-Servers
$BOOTP-BOOTP-Log-Servers
$BOOTP-Cookie-Servers
$BOOTP-Lpr-Servers
$BOOTP-Impress-Servers
$BOOTP-Resource-Location-Servers
$BOOTP-Host-Name
$BOOTP-Boot-Size
$BOOTP-Merit-Dump
$BOOTP-Domain-Name
$BOOTP-Swap-Servers
$BOOTP-Root-Path
$BOOTP-Extensions-Path
$BOOTP-IP-Forwarding
$BOOTP-Interface-MTU
$BOOTP-All-Subnets-Are-Local
$BOOTP-Broadcast-Address
$BOOTP-NIS-Domain
$BOOTP-NIS-Servers
$BOOTP-NTP-Servers
$BOOTP-Font-Servers
$BOOTP-X-Display-Manager
$DHCP-IP-Address-Lease-Time
$DHCP-Message-Type
$DHCP-Server-Identifier
$DHCP-Message
$DHCP-Renewal-Time
$DHCP-Rebinding-Time
$BOOTP-NIS+-Domain
$BOOTP-NIS+-Servers
$BOOTP-Server-Name
$BOOTP-Bootfile
$BOOTP-Mobile-IP-Agent
$BOOTP-SMTP-Servers
$BOOTP-POP3-Servers
$BOOTP-NNTP-Servers
$BOOTP-WWW-Servers
$BOOTP-Finger-Servers
$BOOTP-IRC-Servers
$BOOTP-StreetTalk-Servers
$BOOTP-STDA-Servers

Другие параметры BOOTP/DHCP могут использоваться под именем

$BOOTP-Option-n
где n - десятичное представление номера опции BOOTP.

Не смешивайте BOOTP-Gateway-IP, который является шлюзом, чтобы использовать для TFTP и должен быть 0.0.0.0, если TFTP сервер находится в той же самой подсети, и BOOTP-Routers, который содержит значение IP шлюза по умолчанию. TCP/IP Bootprom иногда, кажется, устанавливает значение BOOTP-Gateway-IP из значения BOOTP-Routers, вызывая отсылку каждого подтверждающего TFTP пакета сначала на маршрутизатор. Чтобы избежать такого поведения, если ваш TFTP сервер находится в той же самой подсети, что и клиент, установите принудительно BOOTP-Gateway-IP в 0.0.0.0 (благодарность Мачеку Ухлигу (Maciek Uhlig) за указание на эту проблему).

Команды контроля

Этот раздел перечисляет команды для контроля системного состояния. Необязательные параметры перечислены между круглыми скобками (я предпочел бы квадратные скобки, но LaTeX не любит их в этом месте ...)

Interact

Показывает log файл и переключает в диалоговый режим пока не введено QUIT или EXIT. Напечатайте HideLog перед осуществлением выхода, если Вы хотите избежать раздражающих регистрационных сообщений при пакетном выполнении.

Help (topic)

Загружает сетевой справочный файл (bpbatch.hlp), и отображает описание данной темы. Если никакая тема не предлагается, или если тема неизвестна, отображается индекс справки.

Log "text"

Отображает строку в log файле. Никакой return/linefeed неявно не добавляется.

Echo "text"

Отображает строку в log файле, и переводит курсор на следующую строку. Эквивалентно

Log "text\r\n".

LogVars ("pattern")

Регистрирует (то есть фиксирует в log файле) все переменные, соответствующие данному образцу. Образец может содержать подстановочные знаки (? И *).

Пример: LogVars "BOOTP-*" все BOOTP переменные

LogDir "path/pattern"

Регистрирует (то есть фиксирует в log файле) все файлы от заданного пути, которые соответствуют образцу. Образец может содержать подстановочные знаки (? И *).

Пример: LogDir "/usr/g*p" перечисляет имена файлов соответствующие g...p

LogTree "path"

Регистрирует дерево каталогов, начинающееся с данного пути как корень.

LogFile "filename"

Регистрирует содержимое файла. Файл должен быть не больше, чем 64 КБ.

ShowLog

Делайте файл регистрации видимым, если он был скрыт. Автоматически выполняется, когда ESC нажат с "$AutoShowLog" == "ON" и при входе в диалоговый режим.

HideLog

Предотвращает показ регистрационных сообщений на экране. Заданное по умолчанию состояние, когда BpBatch, MrBatch и MrZip стартуют из файла сценария.

CaptureLog

Записывает весь log вывод в буфер 64 КБ, пока EndCapture не выполнен. Буфер заворачивается к началу, если log вывод больше чем 64 КБ. Эта команда может использоваться, чтобы создать текстовый файл с произвольным содержанием. EndCapture ДОЛЖЕН выполнится в пределах того же самого пакетного файла.

EndCapture ("filename")

Заканчивает сбор данных log файла. Если имя файла дается, захваченный текст сохраняется в файле. В противном случае сбрасывается.

Beep

Производит звук. Эта команда эквивалентна Echo "\007".

Команды управления

Этот раздел перечисляет команды, управляющие пакетным выполнением. Необязательные параметры перечислены между круглыми скобками.

Include "filename"

Загружает указанный файл, и запускает синтаксический анализатор. Возвращается к текущей точке, когда обработка включенного файла выполнена. Интерпретация символов выше ASCII 127 в пределах включенного файла зависит от значения $IsoLatin во время, когда файл включен.

OnExit command

Устанавливает выходной обработчик, который будет автоматически оценен в конце текущего пакетного файла.

Goto label

Перемещает курсор выполнения на данную метку (то есть строку, начинающуюся с :label).

Eval "command"

Выполняет все подстановки в "команде", и выполняет синтаксический разбор.

If ...

If (not) <expr1> (==|!=|<|>|>=|<=|=>|=<|<>) <expr2> <command>
If (not) (ci) "str1" (==|!=|<|>|>=|<=|=>|=<|<>) "str2" <command>
If (not) (ci) "str1" Match-Expr "pattern" <command>
If (not) (ci) "str1" Match-Passwd "unix-passwd" <command>
If (not) (ci) "str1" in "wordlist" <command>
If (not) (ci) "str1" in-file "filename" <command>
If (not) exist "filename" <command>
If (not) valid <disk>:<partition> <command>

Эти команды выполняют команду command;, если проверка успешна. 1-ая форма сравнивает два числовых выражения. 2-ая форма сравнивает две строки, опционально независимо от регистра. 3-ья форма проверяет, соответствует ли "str1" данному образцу (подстановочные знаки разрешены). 4-ая форма проверяет, соответствует ли открытый пароль "str1" шифрованному паролю Unix. 5-ая форма проверяет, включен ли "str1" в список слов. 6-ая форма проверяет, включен ли "str1" в файл слов. 7-ая форма проверяет, существует ли данный файл. 8-ая форма проверяет, правилен ли данный раздел (то есть форматирован). Эта форма поддерживается только версиями BpBatch после февраля 1999.

Set ...

Set variable = "string-value"
Set variable = <expr>

Устанавливает значение данной переменной. Если данное значение - числовое выражение, оно будет неявно преобразовано в строку. Переменная может использоваться везде через ссылку $variable или ${variable}. Если результирующая ссылка должна интерпретироваться как строка, она должна быть заключена в двойные кавычки: "$variable" или "${variable}".

Delay duration

Ожидает, пока указанная длительность (выраженная в секундах) не истечет. См. также параграф по формату длительностей.

GetTime variable, GetDate variable

Получает CMOS время, и сохраняет его в переменной в форме HH:MM:SS. Получает дату CMOS, и сохраняет ее в переменной в форме YY/MM/DD. Это может использоваться, чтобы настроить поведение ваших сценариев начальной загрузки в зависимости от времени дня или даты.

SetTime "HH:MM:SS", SetDate "YY/MM/DD"

Устанавливает CMOS время или дату компьютера на заданное значение. Если вы имеете шлюз защиты (наш специальный TFTP сервер), вы можете автоматически корректировать CMOS время и дату компьютеров клиента при каждой начальной загрузке, выполняя следующую команду:

include "$Security-Gateway:gettime"
Если вы хотите понять, что эта команда делает, просто напечатайте:
logfile "$Security-Gateway:gettime"

Poweroff

Выключает компьютер. Эта команда работает, только если компьютер Advanced Power Management (APM) совместимый.

Команды работы с клавиатурой

Этот раздел перечисляет команды, которые позволяют вам контролировать ввод с клавиатуры. Необязательные параметры перечислены между круглыми скобками. См. также National Language Support

GetKey (variable)

Неопределенно ожидает, пока клавиша не нажата и сохраняет ее в переменной variable.

WaitForKey duration (command)

Ожидает, пока клавиша не нажата не больше, чем duration секунд. Если никакая клавиша не была нажата после данного времени, выполняет команду command. Иначе, оставляет клавишу в буфере клавиатуры. См. также параграф по формату продолжительностей.

Input (variable (max-length))

Читает строку, завершенную символом возврата, с клавиатуры, и сохраняет результата строку в переменной variable(без завершающего возврата). Если максимальная длина max-length дается, не позволяет пользователю вводить больше заданного числа символов.

См. также GetPasswd в разделе Security-related commands.

OnKey "c" command

Устанавливает обработчик клавиши, который автоматически выподнит данную команду command когда клавиша "c" нажата (кроме случаев явного ожидания командой GetChar или командой Input). Если строка "default" используется вместо одиночного символа, команда выполняется, если любая другая клавиша нажата.

Команды текстового вывода

Этот раздел перечисляет команды используемые для выполнения регулярного текстового вывода. Все эти команды могут использоваться также в графическом режиме, с тем же самым поведением (за исключением того, что текстовый режим обеспечивает 80x25 символы, в то время как графический режим обеспечивает 100x37, потому что символы графического режима имеют размер 8x16). Необязательные параметры перечислены между круглыми скобками. См. также раздел National Language Support.

Print "text"/expr

Печатает указанную строку/выражение в текущей позиции курсора с использованием текущих текстовых атрибутов, затем перемещает курсор. Добавьте "\r\n" к концу строки, чтобы перейти на следующую строку.

TextAttr fg-color bg-color

Устанавливает текстовые атрибуты. Можно также помещать одиночное числовое значение, представляющее оба цвета и определенный как 16*bg-color+fg-color.

Если вы нуждаетесь в большем количестве возможностей, можете использовать LoadFont. См. раздел National Language Support.

At line,col (command)

Перемещает курсора в указанную позицию, и выполняет команду, если она указана.

Пример: At 10,20 Print "Gnats and rats !"

Clear (color (pattern-char (top,left,bottom,right)))

Заполняет заданную текстовую область данным случайным символьным шаблоном pattern-char(или строкой, или десятичным кодом ascii). По умолчанию область соответствует полному экрану, символ шаблона по умолчанию соответствует заполненому блоку (десятичный код ASCII 219) и значения цвета по умолчанию - черный (очищает экран). Перемещает курсор в верхний левый угол очищенной области.

BpMenu команды для обратной совместимости

.ATT (<attribute>)
.CLS (<attribute>)
.DEF <key> (<timeout_val>)
.KEY <key> <filename>
.POS ((<x>) <y>)
.PWD <key> <cpasswd>
.WLN (<text>)
.WRT <text>

См. руководство Bootix для подробной информации. Мы написали некоторое время назад программу для редактирования файлов меню, использующих этот синтаксис, но предпочтительно делать ваши меню используя новый явный синтаксис. Обратите внимание, что .PWD команда не осуществлена, потому что мы не знаем алгоритм шифрования пароля, используемый Bootix.

Команды графического вывода

Этот раздел описывает команды используемые для выполнения вывода в графическом режиме. Для функций, перечисленных в этом разделе, координаты даются в пикселях. Вы можете также использовать все текстовые команды вывода (см. выше) в графическом режиме. Необязательные параметры перечислены между круглыми скобками.

Обратите внимание, что графический режим автоматически включается всякий раз, когда используется графическая команда, если только переменная VESA не установлена в "OFF".

InitGraph ("mode")

Включает VESA графику. Начало координат находится в левом верхнем углу экрана (0 0). VESA графика может подвешивать некоторые компьютеры под Windows 95/98. Выполните MrBatch с опцией -v, чтобы избежать таких проблем.

Вы можете запрашивать определенный видеорежим, если вы используете параметр "mode". Этот параметр необязательный: если вы не определяете никакое значение, видеорежим будет определен из первого поля переменной VESA-Modes.

Допустимые режимы: :

Переменная VESA-Modes перечисляет режимы видео, поддерживаемые вашими аппаратными средствами.

Пример: InitGraph "640x480"

CloseGraph

Закрывает VESA графический режим, и возвращает в текстовый режим.

DrawBar x-координата y-координата ширина высота цвет

VESA графика. Выводит заполненную полосу заданного размера и цвета.

DrawWindow x-координата y-координата ширина высота (цвет фона (цвет окна)) ("заголовок" (цвет загодовка))

VESA графика. Выводит окно заданного размера и цвета. Цвет фона по умолчанию LightGray и цвет области заголовка по умолчанию Blue. Если вы включаете строку заголовка и цвет, этот текст будет отображен в области заголовка.

Drawtext x-координата y-координата "текст" (цвет)

VESA графика. Выводит текстовую строку в данной позиции с прозрачным фоном. Цвет по умолчанию соответствует цвету символов текста.

DrawPcx "pcx-filename" (x-координата y-координата (color-strategy))

VESA графика. Загружает данный PCX 256-colors файл, и выводит его на экран. Значения по умолчанию позиции изображения соответствуют верхнему левому углу экрана (0 0).

Цветовая стратегия (color-strategy) определяет распределение цветов в палитре, когда необходимо больше чем 256 цветов (например, когда два 256-цветовых файла изображения отображаются одновременно):

По умолчанию задана Best-Colors.

DrawGif "gif-filename" (x-координата y-координата (color-strategy))

VESA графика. Загружает заданный GIF-87a файл, и выводит его на экран. Файл может быть с чередованием, но должен быть GIF-87A (не GIF-89a). Размер изображения должен соответствовать выбранному видеорежиму. Вы не можете загружать 1024x768 GIF файл, когда выбран 640x480 режим. По умолчанию позиции изображения - верхний левый угол экрана (0 0).

Из-за патента LZW, эта функция не доступна в коммерческой версии BpBatch/MrBatch. Вы можете использовать команду DrawPcx вместо этого.

Цветовая стратегия (color-strategy) определяет распределение цветов в палитре, когда необходимо больше чем 256 цветов (например, когда два 256-цветовых файла изображения отображаются одновременно):

По умолчанию задана Best-Colors.

Команды, связанные с безопасностью

Этот раздел перечисляет команды, которые помогут вам проверить подлинность пользователя. Необязательные параметры перечислены между круглыми скобками.

Некоторые из этих функций работают совместно со шлюзом защиты (Security gateway), который вы должны сначала установить. См. раздел Special TFTP servers для подробной информации.

GetPasswd (variable (max-length))

То же самое что и Input, но отображаются звездочки вместо напечатанных символов.

Crypt "text" "salt" variable

Применяет Unix функцию шифрования к заданному 8-символьному тексту, и сохраняет результирующую зашифрованную строку в переменной. "Salt" - обычно двухсимвольная строка, которая будет найдена как первые два символа зашифрованной строки.

Обратите внимание, что Unix шифрование - односторонняя функция. Невозможно декодировать зашифрованную строку. Можно только попытаться зашифровать другую строку с тем же самым salt и сравнить результирующую зашифрованную строку.

Эта функция использует BSD реализацию DES. Имеется заголовок из BSD дистрибутива: Copyright (c) 1989 The Regents of the University of California. This product includes software developed by the University of California, Berkeley and its contributors.

DESCrypt "text" "key" variable

Дешифрует заданный текст, используя заданный 8-символьный ключ, и сохраняет результат как шестнадцатеричную строку в переменной variable.

Эта функция использует BSD реализацию DES. Имеется заголовок из BSD дистрибутива: Copyright (c) 1989 The Regents of the University of California. This product includes software developed by the University of California, Berkeley and its contributors.

DESDecrypt "hexcode" "key" variable

Дешифрует заданную шестнадцатеричную строку, используя заданный 8-chars клавиша(ключ), и храните результат в переменной variable.

Эта функция использует BSD реализацию DES. Имеется заголовок из BSD дистрибутива: Copyright (c) 1989 The Regents of the University of California. This product includes software developed by the University of California, Berkeley and its contributors.

MD5 "text" variable

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

Эта функция - реализация MD5 стандарта. Имеется заголовок авторского права: RSA Data Security, Inc. MD5 Message-Digest Algorithm

CheckUser "user" "password" "domain"

Соединяется с $Security-Gateway и проверяет, существует ли данный пользователь в данном домене Radius и использует указанный пароль. Если домен - "Unix", использует Unix определение пользователя/пароля на шлюзе защиты. Для любого другого домена, использует файл определения домена шлюза защиты, чтобы определить реальный Radius или NT домен для проверки.

Устанавливает значение $Security-Check в "PASSED" или "FAILED". Пароль не передается открытым текстом по сети.

Дисковые команды

Этот раздел перечисляет команды для подготовки жесткого диска. Необязательные параметры перечислены между круглыми скобками.

GetPartitions variable (disk)

Читает таблицу(ы) разделов для заданного диска, и сохраняет ее как строку в заданную переменную variable. Результирующая строка - разделенный пробелами список Type:Size, где

См. SetPartitions для получения дополнительной информации относительно разделов.

SetPartitions "partitions" (disk)

Устанавливает таблицу(ы) разделов к содержимому строки. Используемый формат - тот же самый,что и для GetPartitions. Эта команда также сбрасывает все флаги начальной загрузки (подсказка: используйте SetBootPart).

Основная таблица разделов в главном блоке начальной загрузки (MBR), имеет только четыре элемента. Кроме того, DOS и Windows принимают только ОДИН раздел FAT (называемый Первичным разделом, C:) в основной таблице разделов. Любой дополнительный раздел FAT должен быть расположен в расширенном разделе (и таким образом называется Логическим разделом). Если мы дадим номера 1-4 разделам, описанным в таблице разделов MBR и номера 5-8 разделам, описанным в первом расширенном разделе, определение двух разделов работало бы путем определения раздела 1 как FAT, раздела 2 как EXT и раздела 5 как FAT. Разделы 3,4,6,7, и 8 должны быть отмечены как UNUSED. Та же самая схема может использоваться рекурсивно, чтобы определить больше чем два FAT раздела: вложение другого расширенного раздела в разделе 6 и добавлении логического раздела FAT в разделе 9.

В наиболее строгой интерпретации спецификаций DOS определяется, что элементы 3 и 4 из таблицы разделов никогда не используются. Практически, некоторые версии DOS и некоторые другие OS способны использовать больше чем два раздела в таблице разделов, но не имеется никакого четкого правила. С этой точки зрения, BpBatch довольно гибок в интерпретации таблиц разделов, он часто может понимать вещи, которые OS не может.

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

Если вы хотите опробовать забавные конфигурации, делайте ваши собственные эксперименты, но не жалуйтесь, если OS не признает ваши разделы. Единственный способ гарантировать работу состоит в использовании первичного раздела для хранения раздела начальной загрузки OS, и вкладывать все другие разделы, по одному, в расширенных разделах.

Пример расширенных разделов:

SetPartitions "BIGDOS:100 EXT:400 EMPTY EMPTY BIGDOS:400"

GetBootPart variable (disk)

Получает номер раздела с включенным флагом загрузки, (DOS говорит: активный первичный раздел) и размещает его в переменной variable. Первый раздел имеет номер 1. Если никакие разделы не имеют включенного флага загрузки, выдается ноль.

SetBootPart partition (disk)

Устанавливает флаг загрузки в данном разделе. Флаг загрузки позволяет главной загрузочной записи (MBR) выбирать, с какого раздела загрузиться. Первый раздел пронумерован 1.

Blank partition (disk)

Заполняет данный раздел нолями. Может занимать весьма много времени для больших разделов. Не форматируйте раздел для любой операционной системы. См. также Clean.

Clean partitions (disk) ("label")

Быстрое форматирование данного раздела(ов) в соответствии с типом, объявленным в таблице разделов. Если метка дается, и файловая система ее поддерживает, устанавливается метка раздела. Для параноидального полного формата, сначала вызовите Blank для этого раздела.

Clean поддерживается для (FAT16) BIGDOS, FAT32, EXT, LINUX-EXT2 и LINUX-SWAP разделов. Для очистки главной загрузочной записи (MBR), используйте Clean 0.

Clean должен использоваться на разделах с данными и на разделах MBR/EXT. Совершенно бесполезно очищать раздел перед распаковкой файловой системы на него, используя FullUnzip.

FullUnzip "full-archive" partition (disk)

Распаковывает полный дисковый архив на данный раздел, записывая поверх любого существующего файла (очистка "на лету").

FullUnzip поддерживается для (FAT16) BIGDOS, FAT32 и LINUX-EXT2.

Эта команда включает VESA графику, чтобы отобразить полосу прогресса, если VESA не была установлена в OFF.

IncrUnzip "incr-archive" "destpath"

Распаковывает инкрементный дисковый архив на заданный путь. Файлы из архива заменяют файлы с тем же самым именем на целевом пути, но другие файлы не удаляются.

IncrUnzip поддерживается для (FAT16) BIGDOS, FAT32 и LINUX-EXT2. Эта команда гораздо менее эффективна чем FullUnzip, так как существующая структура файловой системы должна сохраниться. Однако, это дает возможность избежать умножения числа различных дисковых образов, сохраняя только различия. IncrUnzip is supported for (FAT16) BIGDOS, FAT32 and LINUX-EXT2.

FileUnzip "source-filename" "dest-filename"

Распаковывает файл, предварительно сжатый командой FileZip MrZip. Файл подтверждается 32-битовой CRC.

Copy "source-filename" "dest-filename"

Копирует исходный файл в целевой файл побайтно. Может использоваться после FullUnzip, например, чтобы модифицировать файлы конфигурации с сервера без восстановления всего образа. Лучше использовать FileUnzip для больших и легкосжимаемых файлов.

Append "src-filename-1" "src-filename-2" "dest-filename"

Копирует первый, затем второй файл в файл назначения побайтно. Может использоваться на произвольно больших файлах. Файл назначения не может быть один из этих двух исходных файлов.

Patch "source-filename" "dest-filename" ("prefix" ("postfix"))

Читает исходный файл, и выполняет подстановку переменных перед записью в файл назначения. Интерпретация символов выше ASCII 127 зависит от значения $IsoLatin.

По умолчанию, переменные распознаются, когда предваряются символами "${" и заключаются символом "}". Это может быть заменено любой другой непустой строкой. Помните, что если вы хотите использовать знак доллара в пределах префикса или суффикса, вы должны избегать этого, или получите макро-выполнение. Например, если вы хотите явно использовать значения по умолчанию префикса и суффикса, используйте следующее:

Patch "source-file" "dest-file" "\${" "}"

MkDir "path"

Рекурсивно создает каталоги от корня до заданного полного пути. Если путь уже существует, эта команда не дает никакого эффекта.

Delete "filename", Del "filaname"

Удаляет заданный файл. Файл должен существовать.

DelTree "path"

Рекурсивно удаляет все файлы и каталоги под заданным путем, и удаляет непосредственно заданный каталог.

Команды начальной загрузки

Этот раздел перечисляет команды для продолжения процесса начальной загрузки. Необязательные параметры перечислены между круглыми скобками.

HideBootProm

Восстанавливает память и векторы прерывания, распределенные bootprom. Все попытки делать передачу TFTP будут терпеть неудачу после вызова этой команды. Это обычно хорошая идея вызвать эту команду прежде HdBoot, иначе вы можете испытывать нехватку памяти под DOS/Windows. Эта команда неявно вызывается командой FloppyBoot.

Обратите внимание, что, хотя эта функция восстанавливает все векторы "официально" перехваченные BootProm, похоже, что восстанавливаются не все. Но это работает достаточно хорошо для DOS и Windows.

LoadRamDisk "ramdisk-filename"

Загружает образ гибкого диска в расширенную память, и переназначает дисковый сервис BIOS так, чтобы запросы гибкого диска использовали вместо него этот образ. Эта команда неявно вызывается командой HideBootProm. Вызовите FloppyBoot,чтобы загрузиться с виртуального диска, который вы только что загрузили.

Этот вид виртуального диска не может быть столь же устойчивым, как тот, что вы получаете, используя команду TFTPBoot. Единственное преимущество состоит в том, что при этом захватывается только несколько сотен байтов обычной памяти вместо объема резервируемого для TCP/IP BootPROM (до 64 КБ). Предупреждение: ничто не защищает расширенную память, в которой размещается виртуальный диск. Не имеется никакого средства для деинсталляции такого виртуального диска.

LoadZRamDisk "ramdisk-filename"

Делает то же самое, что и LoadRamDisk, но для образа, который был сжат с использованием команды FileZip MrZip. Сжатый виртуальный диск защищен от нарушения целостности данных (и неполной загрузки) подсчетом байт и 32-битовой CRC.

TFTPBoot "remote-bootfile"

Связь с другим файлом начальной загрузки (например, образом гибкого диска, сделанным программой BpShell Bootix). См. соглашение по файловым ссылкам для доступа к файлу на другом TFTP сервере.

FloppyBoot

Скрывает BootROM, загружает загрузочный сектор гибкого диска и загружается с него.

HdBoot (disk)(:partition)

Загружает заданный загрузочный сектор и выполняет начальную загрузку с него. По умолчанию - диск ноль, что соответствует первому жесткому диску, и значение по умолчанию раздела также ноль, то есть главная загрузочная запись. Вы можете загружаться с любого раздела, но предупреждаем, что Windows 95/98 не может загружаться с раздела, который не был установлен как загрузочный (подсказка: используйте SetBootPart).

Эта команда не вызывает неявно команду HideBootProm, так что вы можете вызвать ее заранее.

LinuxBoot "kernelfile" ("command-line" ("ramdisk-file"))

Загружает данное ядро и виртуальный диск в область верхней памяти, установливает командную строку, и стартует ядро. Хорошая идея поместить по крайней мере минимальную командную строку с расположением корня файловой системы (подобно "root=dev/hda1" /). Если Вы используете linux систему, которая жестко связана с lilo (подобно RedHat Linux 5.1), может быть необходимо добавить к командной строке нечто подобное BOOT_IMAGE=linux. Обратите внимание, что ядро может быть загружено через TFTP (с автоматическим кэшированием на жестком диске) или непосредственно с целевого корневого раздела.

Эта команда работает для маленьких и больших ядер (zImage and bzImage).

Поддержка национального языка

Этот раздел перечисляет команды, связанные с поддержкой национального языка. Необязательные параметры перечислены между круглыми скобками.

RemapKeys "original-keys" "remapped-keys"

Поддержка национальной клавиатуры. Переназначает данные клавиши на другие символы. Например, чтобы поменять клавиши Y и Z, используйте

Remapkeys "yzYZ" "zyZY"
Хорошая идея использовать указанное восьмеричное значение при использовании символов, не включенных в минимальный набор символов ASCII, чтобы избежать зависимости от iso-latin модальных установок.

Для интернациональных клавиатур имеются две клавиши, которые порождают символ "backslash" в непереназначанном режиме (US). Каждая из них может быть независимо переназначена благодаря тому факту, что BpBatch видит одну из них как клавишу, соответствующую ASCII коду 252(восьмеричный), или ASCII коду 335(восьмеричный) при нажатом "Shift".

Если вы пришлете мне типовой сценарий, который делает отображение для вашей национальной клавиатуры, я сделаю его доступным в http://cuiwww.unige.ch/info/pc/remote-boot/soft/sample-scripts Чтобы помочь вам сделать ваше собственное отображение клавиатуры, я советую нажимать все специальные клавиши без переназначения клавиатуры и записывать символ, который они производят. Это будут оригинальные клавиши. Переназначенные клавиши - это просто клавиши, которые вы хотели бы видеть, в том же самом порядке. Если некоторые клавиши (оригинальные или переназначенные) порождают символы выше ASCII 127(десятичное), используют указанное восьмеричное значение. Вы можете легко получить восьмеричный код для любого данного символа например из таблицы ASCII HelpPC (HelpPC - гипертекстовая онлайновая shareware программа предоставления справочной информации от Дэвида Юргенса (David Jurgens)).

RemapAltkeys "original-keys" "remapped-keys"

Поддержка национальной клавиатуры. Переназначает данные клавиши, когда ALT нажат. Например, чтобы переназначить Alt-2 на знак амперсанд, используйте

RemapAltKeys "2" "@"
Обратите внимание, что мертвые клавиши не поддерживаются.

LoadCodePage "cpxxx.bin"

Загружает и активизирует заданный двоичный файл кодовой страницы. Кодовые страницы используются для трансляции символов Unicode (представленных, например, на VFAT томах) в 8-битовые символы. Если вы не загрузите правильную кодовую страницу, вы получите предупреждения FAT при доступе к той файловой системе, где встречаются специальные символы.

Все двоичные файлы кодовых страницы доступны в http://cuiwww.unige.ch/info/pc/remote-boot/soft/codepage.zip

Заданная по умолчанию кодовая страница - 850, переупорядоченный супернабор ISO-Latin-1. Если вы загружаете более экзотическую кодовую страницу, вы обычно должны переключить переменную $IsoLatin в "off", иначе можете получить бессмысленные неявные преобразования. Кроме того, если вы хотите отображать экзотические символы, вы должны также загрузить надлежащий экранный шрифт (используйте "LoadFont").

LoadFont "fontfile"

Загружает и активизирует VGA/VESA шрифт, как в текстовом, так и в графическом режиме. Файл шрифта должен быть двоичный файл 16 байтов/символ (8x16 точечный рисунок). Эта команда может использоваться для поддержки национального языка также как для поддержки Fantasy.

Архив с несколькими шрифтами Fantasy доступен в http://cuiwww.unige.ch/info/pc/remote-boot/soft/fonts.zip . Этот архив также содержит программу для извлечения шрифты для вашей кодовой страницы из DOS .CPI файла.

Специальные команды MrZip

Source...

Source (i)archive "filename"
Source path "path"

Устанавливает источник для манипуляции архива к данному (возрастающему) файлу архива или дисковому пути.

Dest...

Dest (i)archive "filename"
Dest (i)dump
Dest path "path"

Устанавливает адресата для манипуляции архива к данному (возрастающему) файлу архива, дампу или дисковому пути. Чтобы управлять количеством данных, отображенных в течение дампа, используйте специальную переменную $DumpFormat.

FileZip "source-filename" "dest-filename"

Сжимает файл для дальнейшей декомпрессии с FileUnzip или для использования как ZRamDisk. Файл подтверждается 32-битовой CRC.

Filter...

Filter -"pattern"
Filter +"pattern"

Предотвращает/позволяет файлам и каталогам, соответствующие данному образцу (маски разрешены) быть включенным в архив. Образец согласован против полного имени пути. По умолчанию, все файлы включены в образ. Вы только должны явно разрешить файлы, которые отменены фильтром. Каждый отрицательный фильтр имеет свой собственный положительный фильтр (позволенный) подсписок.

Для образов DOS/Windows, вы будете обычно использовать

Filter -"*.swp"
Filter -"temp/*"
и для образов Unix, вы будете обычно использовать
Filter -"var/log/*"
Filter -"tmp/*"

CopyArchive

Запускает операцию создания архива, в соответствии с параметрами настройки источника, адресата, и фильтра. За исключением некоторых обстоятельств, вы будете вероятно использовать сокращение, приведенное ниже, вместо явного вызова CopyArchive. Обстоятельство, при котором вы будете использовать CopyArchive явно - тот случай, когда вы захотите изменить фрагментацию образа, как здесь:

set FragmentSize="30 MB"
Source archive "original.imz"
Dest archive "refragmented.imz"
CopyArchive

FullZip "path" "full-archive"

Сокращение для

Source path "path"
Dest archive "full-archive"
CopyArchive
Обычно сначала вы должны установить фильтры.

IncrZip "path" "incr-archive"

Сокращение для

Source path "path"
Dest iarchive "incr-archive"
CopyArchive

FullDump "full-archive"

Сокращение для

Source archive "full-archive"
Dest dump
CopyArchive

IncrDump "incr-archive"

Сокращение для

Source iarchive "incr-archive"
Dest dump
CopyArchive

XCopy "srcpath" "dstpath"

Сокращение для

Source path "srcpath"
Dest path "dstpath"
CopyArchive

5.2 NoBreak.sys

Nobreak.sys очень маленький (приблизительно только 350 байтов) драйвер, который вы включаете в начале вашего config.sys. Его цель состоит в том, чтобы гарантировать процесс начальной загрузки до момента регистрации пользователя. DOS обеспечивает установку для этого (а именно BREAK=OFF), но этого совершенно не достаточно, и не дает почти никакого эффекта в autoexec.bat. Наш драйвер работает, изменяя скэн-код нажатой клавиши, когда запрашивается прерывание работы, непосредственно на уровне BIOS. Таким образом, вообще никакая программа не может получать запрос прерывания работы, пока снова не будет разрешено.

Драйвер должен быть загружен из config.sys (или использованием devlod программы из Undocumented DOS). Впоследствии, запрос прерывания можно разрешить, посылая Yes на NOBRK псевдо-устройство, и заблокировать снова посылая No (фактически, только первый символ, Y или N значим).

Поскольку этот драйвер полагается на BIOS, он работает только в DOS и Windows 3.1. Windows 95/98 имеет свою собственную процедуру низкого уровня, обслуживающую клавиатуру.

Исходный текст Ассемблера доступен..


Previous Next Contents
Previous Next Contents

6.Специальные TFTP Серверы

Поскольку единственная поддержка сети, доступная в TCP/IP BootPROM - TFTP, имеется особый интерес в расширении TFTP серверов для обеспечения новых возможностей.

6.1 Расширенный Bootix TFTP сервер

Bootix распространяет с TCP/IP BootPROM расширенный TFTP сервер, который может посылать пакеты до 1408 байтов вместо стандартных в 512 байтов. Это большое расширение, которое вы должны использовать. Этот сервер доступен на Сервисном диске TCP/IP Bootprom для Solaris, Windows и как Netware NLM.

6.2 Расширенный Linux TFTP сервер

Под Linux, получите TFTP сервер Bootix/Incom. Версия, откомпилированная для Linux доступна на http://cuiwww.unige.ch/info/pc/remote-boot/soft/incomtftpdlx.tar.gz .

6.3 Solaris TFTP сервер

Оригинальный Solaris TFTP сервер имеет серьезное ограничение на размеры файла, из-за использования подписанного 16-bits целого числа для подсчета пакетов. Bootix предоставляет расширенный TFTP сервер для Solaris, который решает эту проблему при обеспечении намного более высокой скорости передачи.

Однако, некоторые пользователи сообщили о проблемах (в особенности с SMC9432 платами) создания тупиков на запуске. Поэтому, Джон Мартин (John Martin) (j.martin@abdn.ac.uk) перенес Linux tftpd на Solaris. Вы можете получить это из http://www.csd.abdn.ac.uk/~jmartin/tftpd.tar.gz .

6.4 Защитный шлюз

Мы написали специальный TFTP сервер, который служит как шлюз защиты для аутентификации пользователей. Этот сервер запускается под Linux или Solaris, и может аутентифицировать пользователей согласно базе данных паролей Unix (NIS, и теневые пароли поддерживаются), Windows NT (или Самба) сервера или сервера Radius. Он доступен на http://cuiwww.unige.ch/info/pc/remote-boot/soft/stdtpd.tar.gz , с источником и прекомпилированными двоичными файлами. Прекомпилированные двоичные файлы не включают NT кодирование пароля, поскольку мы не можем распространять libdes, но трансляция совершенно честная.

Чтобы использовать шлюз защиты, вы должны только установить тривиальный файл конфигурации security domains, который описывает, к какому серверу аутентификации каждый логический домен защиты отнесен (Unix домен неявно отнесен на сервер базы данных паролей Unix). Это - образец конфигурационного файла:


radius sec-dom-rad radiusserver testing123
winnt sec-dom-nt1 192.168.1.1 NTSERVER1
winnt sec-dom-smb samba SAMBA1

Обратите внимание, что если вы используете Samba, вы должны установить security = user.

Вы можете также разместить на сервере защиты файл, содержащий список пользователей, которым не позволяют регистрироваться (для которых проверка будет терпеть неудачу в любом случае).

6.5 Широковещательный TFTP сервер

Мы написали специальный TFTP сервер, который представляет собой кустарный широковещательный вариант TFTP. Используя этот сервер, мы были способны загружать образы к 25 клиентам на тяжело загруженной 10 МБ локальной сети со скоростью 6 Мб/сек (это более эффективно чем обычный TFTP, поскольку не требуется подтверждения каждого пакета). Этот сервер выполняется под Linux или Solaris. Он доступен на http://cuiwww.unige.ch/info/pc/remote-boot/soft/btdtpd.tar.gz , с источником и прекомпилированными двоичными файлами.

Поскольку TCP/IP bootprom не поддерживает этот протокол, наше решение состоит в загрузке крошечной linux системы базирующейся на виртуальном диске, используя инструментальные средства, описанные в этом документе, и выполнении Linux версии MrBatch, которая имеет встроенную поддержку широковещательного TFTP. Простой пакетный файл может затем загрузить все файлы в кэш в течении нескольких минут, одновременно на всех компьютерах клиента. Вы не должны устанавливать Linux самостоятельно, чтобы использовать этот пакет, за исключением случая, когда вы имеете экзотические аппаратные средства и не можете непосредственно использовать ядро, предложенное в пакете.

Процесс осуществляется следующим образом. Сначала вы запускаете широковещательный сервер вручную, давая число ожидаемых клиентских компьютеров как параметр (помните, эта процедура должны использоваться не каждый день, но только когда вы изменили образ и хотите гарантировать, что это немедленно загрузится на все ваши клиентские компьютеры). Затем, вы включаете все клиентские компьютеры, которые выполнят следующий BpBatch сценарий:


setpartitions "BIGDOS:50"
clean 0
linuxboot "linux.krn" "" "bcastrd.gz"

Инициирующий виртуальный диск содержит: Все программы статически связаны и удалены, для предотвращения libc.so, который является действительно огромным. Получающийся виртуальный диск сжат и занимает менее 300 КБ. Само ядро занимает 450 КБ (с многими сетевыми платами и поддержкой initrd). Когда Linux готов и выполняется, MrBatch вызывается со следующим сценарием (который вы должны отредактировать для ваших потребностей):

showlog
set pauselog="OFF"
setpartitions "BIGDOS:1024"
clean -1
copy "$BOOTP-Server-IP@99:mblinux.imz" "{:-1}mblinux.imz"

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


Previous Next Contents
Previous Next Contents

Linux Remote-Boot mini HOWTO: Настройка рабочих станций для удаленной загрузки Linux, DOS, Windows 95/98 и Windows NT.

Marc Vuilleumier Stückelberg, David Clerc

v3.26, Февраль 2000
Оригинал: www.remoteboot.ru

Этот документ описывает установку мощной и защищенной конфигурации для кластера ПК, предоставляющей каждому клиенту выбор при загрузке, какую операционную систему запустить. Суть этой конфигурации - программа, основанная на загрузочном ПЗУ, которая предоставляет пользователю возможность выбрать при загрузке один из нескольких загрузочных образов. Эта конфигурация применима при использовании Bootix TCP/IP Bootprom (существующего как дополнение к большинству сетевых карт) или любого PXE-совместимого Boot ROM (готового к использованию в большинстве современных ПК со встроенными сетевыми картами). Большинство обновленных версий данного документа, со ссылками на загружаемое программное обеспечение и другие связанные материалы, может быть найдено по адресу http://cuiwww.unige.ch/info/pc/remote-boot/howto.html . Linuxdoc-SGML, DVI, PostScript и PDF версии доступны в том же директории. Если вы заинтересованы в получении информации о дальнейшем развитии, отправьте письмо по адресу info@bpbatch.org .


1. 1. Отречение и права

2. Что изменено...

3. Введение

4. Конфигурация How-To

5. Инструменты удаленной загрузки, ссылки на руководства

6. Специализированный TFTP сервер


Previous Next Contents