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