Этот раздел обеспечивает детальную информацию относительно использования инструментальных средств, которые мы разработали в CUI, Университете Женевы для конфигурации удаленной начальной загрузки.
Эти три названия соответствуют трем вариантам одной той же самой программы, со следующими характеристиками:
BpBatch
- специальная программа, которая может быть выполнена с BootProm прежде,
чем операционная система загружена. Она состоит из двух частей: bpbatch.P
, динамический загрузчик, и
bpbatch.ovl
, сама программа. BpBatch
имеет собственные встроенные средства
полного дискового доступа к разделам FAT16, FAT32 и Ext2fs, а также удаленного сетевого доступа через
BootProm TFTP API.
BpBatch
был откомпилирован под DOS, с использованием Borland C 5.0 и Turbo Assembler 3.2.MrBatch
- DOS/LINUX версия BpBatch
.
Все команды, распознаваемые BpBatch
, распознаются и
MrBatch
и наоборот. Это очень полезно, если Вы хотите проверить ваши пакетные сценарии
из DOS/LINUX сеанса. Под DOS MrBatch
эмулирует удаленный ввод-вывод OS-ориентированным
файловым доступом, если bootprom не доступен. Под Linux, bootprom больше не может быть виден, но
MrBatch
может эмулировать его, используя Linux IP поддержку, или использовать
OS-ориентированным файловый доступ.
MrBatch
был откомпилирован под Linux с использованием GCC 2.7.2.1 и под DOS с
использованием Borland C 5.0 и Turbo Assembler 3.2.MrZip
- интерпретатор, который распознает расширенный набор MrBatch
языка, и
служит для того, чтобы строить дисковые образы. В MrZip
ограниченный удаленный файловый
ввод-вывод заменен полнофункциональным OS-ориентированным файловым доступом. MrZip
не
включает поддержку VESA. MrZip
был откомпилирован под Linux с использованием GCC 2.7.2.1
и под DOS с использованием Borland C 5.0 и Turbo Assembler 3.2.Все программы принимают один и тот же синтаксис параметров. MrBatch
и
MrZip
берут их из командной строки, в то время как BpBatch
ищет их в опции 155 BOOTP (десятичное число). Имеется следующий синтаксис параметров:
[-x] [-l] [-b] [-v] [-w] [-i] [script-basename]
где:
-x
отключает использование расширенной памяти.-l
отключает использование ISO-LATIN-8859-1 как заданного по умолчанию набора
символов.-b
отменяет обнаружение bootprom (которое вызывает позиционирование флоппи-дисковода
под DOS).-v
отменяет обнаружение VESA (которое вызывает переключение к полному экрану под
Windows 95/98).-w
разрешает прямой дисковый доступ для записи (заблокированный по умолчанию под DOS
и Linux).-i
разрешает диалоговый режим, даже если имя сценария предоставляется.script-basename
не обязательно. Если предложено, MrBatch
и
BpBatch
загружают файл с расширением .bpb
, а MrZip
загружают файл с расширением .mrz
. Если не предложено
MrBatch
и MrZip
, выполненяются в диалоговом режиме, в то время как
BpBatch
загружает файл тем же самым basename, что и файл начальной загрузки
BOOTP и .bpb расширением.
Следующие правила применяются, когда BpBatch
анализирует входную строку.
\a
заменяется символом звукового сигнала (ASCII 7).\b
заменяется символом возврата на один символ (ASCII 8).\n
заменяется символом новой строки (ASCII 10).\r
заменяется символом возврата каретки (ASCII 13). \t
заменяется символом табулирования (ASCII 9).\v
заменяется символом вертикальной табуляции (ASCII ...).\nnn
где n - восьмеричное число с 3 цифрами между 000 и 377 заменяется символом с
указанным кодом ascii.\X
, где X - любой другой символ, не перечисленный выше, заменяется X непосредственно.
В частности \"
заменяется регулярной двойной кавычкой (не разделитель строки).\$
заменяется регулярным знаком доллара (не замена переменной).\\
заменяется регулярной обратной наклонной чертой (не специальный символ). Пустые строки игнорируются. Строки, начинающиеся с символа (#
) обрабатываются как комментарии и не
интерпретируются. Строки, начинающиеся с двоеточия (:
) обрабатываются как метки и не интерпретируются.
Строки разделяются открывающей и закрывающей кавычкой:
"Hello world"
Чтобы включать двойные квычки в строку, укажите их, используя обратную наклонную черту:
"I said: \"Hello world\""
Строки могут быть отредактированы несколькими операторами
"Hello world"/o=u/ == "Hellu wurld"
"198.76.54.32"/.= / == "198 76 54 32"
"Hello world"{0} == "Hello"
"198 76 54 32"{1-3} == "76 54 32"
"Hello world"[4] == "o"
"Hello world"[4-7] == "o wo"
Числовые выражения выполняются над 32-битовых целыми числами (от -2,147,483,646 до 2,147,483,647). Шестнадцатеричные восьмеричные и двоичные числа не распознаются. Всякий раз, когда ожидается числовое выражение, понимается следующее:
%
(модуль)
и expr
- числовое выражение.
Обратите внимание, что КАЖДАЯ операция ДОЛЖНА быть заключена в круглые скобки:
((3 * 5)+2) == 17
@"Hello world" == 11
#"Hello world" == 2
Нескоторые команды ожидают интервал времени как параметр.
Интервалы времени измеряются в секундах, с точностью до десятой части секунды:
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 ответа.
$Program
установлена в "BpBatch" в программе BpBatch, в "MrBatch" в программе
MrBatch и в "MrZip" в программе MrZip.$Basename
установлена равной имени сценария, с которым стартовал пакетный интерпретатор.$HelpFile
имя загруженного файла, когда вызвана подсказка ( Help
). Значение по умолчанию: "${Basename}.hlp"
$BOOTP-...
набор переменных из ответа BOOTP/DHCP
(см. параграф на BOOTP/DHCP переменные для детальной информации).$DHCP-...
набор переменных из ответа DHCP (см. параграф на BOOTP/DHCP переменных
для детальной информации). $Disks
установлена в список размеров для каждого диска, разделенный пробелом.
Это означает, что #"$Disks"
представляет число дисков, и "$Disks"{0}
- размер
первого диска.$Keypressed
установлена в следующую готовую к чтению клавишу,
доступную в буфере клавиатуры (если он доступен).$LBA
управляет использованием LBA для обращения к дискам > 2Gb. Значение по
умолчанию: "ON".$FDA
управляет использованием быстрого дискового доступа
(запись поперек цилиндров). Значение по умолчанию: "ON".$VESA
управляет использованием VESA графики. Значение по умолчанию: "ON", если доступно.$VESA-Modes
дает список всех доступных режимов VESA. Первый элемент списка - заданный по
умолчанию режим, который используется, когда никакой параметр не дается в команде InitGraph. Обратите
внимание: если VESA = "OFF", эта переменная пуста.$APM
установлена в "ON", если ваш компьютер поддерживает Расширенное управление питанием
(Avanced Power Management). Если $APM "ON", вы можете использовать команду PowerOff, чтобы выключить
ваш компьютер. Значение по умолчанию: зависит от ваших аппаратных средств.$Trace
управляет дисплеем каждой команды перед выполнением. Это также управляет дисплеем
имен файла при создании нового архива. Значение по умолчанию: "OFF".$AutoShowLog
управляет автоматическим переключением к текстовому файлу регистрации
всякий раз, когда клавиша ESC нажата. Значение по умолчанию: "ON".$PauseLog
управляет паузой между каждой страницей файла регистрации, когда файл
регистрации видим. Значение по умолчанию: "ON".$CacheDisk
установлена как диск, используемый для кэширования файлов удаленной загрузки.
Значение по умолчанию: пусто == 0, означает первый жесткий диск.$CacheAlways
управляет автоматическим кэшированием файлов удаленной загрузки,
скопированных, исправленных или выведенных как образы. Значение по умолчанию: "OFF".$CacheNever
предотвращает любой файл от кэширования. Включите эту переменную для
начальной загрузки Linux без диска. Значение по умолчанию: "OFF".$CacheReserve
управляет предварительным распределением большего на 25 процентов количества места, чем необходимо в разделе кэша, предоставляя возможность роста файлам. Выключите эту
переменную, если у вас мало дискового пространства. Значение по умолчанию: "ON".$ExtMemory
управляет использованием расширенной памяти (или XMS). После того, как
дезактивирована, расширенная память не может быть включена. Значение по умолчанию: "OFF", если доступно.$IsoLatin
управляет интерпретацией верхних кодов ASCII во включенных и исправленных
файлах. IsoLatin параметры настройки обрабатываются, когда файл загружен, а не тогда, когда он в работе. Значение по умолчанию: "ON".$ProgressX
и $ProgressY
управляют позицией окна прогресса,
отображаемого в VESA графике в течение загрузки архива и декомпрессии. Значение по умолчанию: 200 200.$EXT2-Backup
управляет модификацией резервирования суперблока в Linux ext2 файловой
системе. Резервирование суперблока занимает несколько секунд и никогда не
используется текущими ядрами (только e2fsck).$WatchdogPort
определяет порт ввода-вывода (десятичное значение) используемый для обращения к контрольной плате. По умолчанию эта переменная установлена в 0, отключая таким образом
контрольную поддержку. Установка этой переменной к значению отличному от нуля будет
активизировать контрольную поддержку.$Security-Gateway
управляет шлюзом, используемым для идентификации пользователя.
Наш специальный опознавательный шлюз должен выполняться на целевом компьютере. Значение по умолчанию: "${BOOTP-Server-IP}@89"
(то есть TFTP сервер, порт 89)$Security-Check
содержит ответ сервера защиты для последней выполненной
проверки, либо PASSED либо FAILED. Значение по умолчанию: "FAILED".$Security-Passwd, $HelpTopic, $OnExit, $OnKey-...
- для внутреннего использования.См. также BOOTP переменные и специфические MrZip переменные.
Следующие переменные только используются в пределах MrZip.
$TempPath
управляет каталогом, где будут сохранены временные файлы. Значение
по умолчанию: пусто == текущий каталог$DumpFormat
управляет способом, которым архив будет сброшен в файл регистрации, когда потребуется. Содержащит строки
$FragmentSize
управляет размером частей архива. Если Вы не используете расширенный
TFTP Bootix сервер, вы должны установить ее в "30 MB". Значение по умолчанию: "87 MB".$SourceArchive, $DestArchive, $Filter...
- для внутреннего использования.Следующие 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 не любит их в этом месте ...)
Показывает log файл и переключает в диалоговый режим пока не введено QUIT или EXIT. Напечатайте HideLog перед осуществлением выхода, если Вы хотите избежать раздражающих регистрационных сообщений при пакетном выполнении.
Загружает сетевой справочный файл (bpbatch.hlp), и отображает описание данной темы. Если никакая тема не предлагается, или если тема неизвестна, отображается индекс справки.
Отображает строку в log файле. Никакой return/linefeed неявно не добавляется.
Отображает строку в log файле, и переводит курсор на следующую строку.
Эквивалентно
Log "text\r\n".
Регистрирует (то есть фиксирует в log файле)
все переменные, соответствующие данному образцу. Образец может содержать подстановочные знаки (? И *).
Пример: LogVars "BOOTP-*" все BOOTP переменные
Регистрирует (то есть фиксирует в log файле) все файлы
от заданного пути, которые соответствуют образцу. Образец может содержать подстановочные знаки (? И *).
Пример: LogDir "/usr/g*p" перечисляет имена файлов соответствующие g...p
Регистрирует дерево каталогов, начинающееся с данного пути как корень.
Регистрирует содержимое файла. Файл должен быть не больше, чем 64 КБ.
Делайте файл регистрации видимым, если он был скрыт. Автоматически выполняется, когда ESC нажат с "$AutoShowLog" == "ON" и при входе в диалоговый режим.
Предотвращает показ регистрационных сообщений на экране. Заданное по умолчанию состояние, когда BpBatch, MrBatch и MrZip стартуют из файла сценария.
Записывает весь log вывод в буфер 64 КБ, пока EndCapture не выполнен. Буфер заворачивается к началу, если log вывод больше чем 64 КБ. Эта команда может использоваться, чтобы создать текстовый файл с произвольным содержанием. EndCapture ДОЛЖЕН выполнится в пределах того же самого пакетного файла.
Заканчивает сбор данных log файла. Если имя файла дается, захваченный текст сохраняется в файле. В противном случае сбрасывается.
Производит звук. Эта команда эквивалентна Echo "\007".
Этот раздел перечисляет команды, управляющие пакетным выполнением. Необязательные параметры перечислены между круглыми скобками.
Загружает указанный файл, и запускает синтаксический анализатор. Возвращается к текущей точке, когда обработка включенного файла выполнена. Интерпретация символов выше ASCII 127 в пределах включенного файла зависит от значения $IsoLatin во время, когда файл включен.
Устанавливает выходной обработчик, который будет автоматически оценен в конце текущего пакетного файла.
Перемещает курсор выполнения на данную метку (то есть строку, начинающуюся с :label).
Выполняет все подстановки в "команде", и выполняет синтаксический разбор.
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 variable = "string-value"
Set variable = <expr>
Устанавливает значение данной переменной. Если данное значение - числовое выражение, оно будет неявно преобразовано в строку. Переменная может использоваться везде через ссылку $variable или ${variable}. Если результирующая ссылка должна интерпретироваться как строка, она должна быть заключена в двойные кавычки: "$variable" или "${variable}".
Ожидает, пока указанная длительность (выраженная в секундах) не истечет. См. также параграф по формату длительностей.
Получает CMOS время, и сохраняет его в переменной в форме HH:MM:SS. Получает дату CMOS, и сохраняет ее в переменной в форме YY/MM/DD. Это может использоваться, чтобы настроить поведение ваших сценариев начальной загрузки в зависимости от времени дня или даты.
Устанавливает CMOS время или дату компьютера на заданное
значение. Если вы имеете шлюз защиты (наш специальный TFTP сервер), вы можете автоматически
корректировать CMOS время и дату компьютеров клиента при каждой начальной загрузке, выполняя следующую команду:
include "$Security-Gateway:gettime"
Если вы хотите понять, что эта команда делает, просто напечатайте:
logfile "$Security-Gateway:gettime"
Выключает компьютер. Эта команда работает, только если компьютер Advanced Power Management (APM) совместимый.
Этот раздел перечисляет команды, которые позволяют вам контролировать ввод с клавиатуры. Необязательные параметры перечислены между круглыми скобками. См. также National Language Support
Неопределенно ожидает, пока клавиша не нажата и сохраняет ее в переменной variable.
Ожидает, пока клавиша не нажата не больше, чем duration секунд. Если никакая клавиша не была нажата после данного времени, выполняет команду command. Иначе, оставляет клавишу в буфере клавиатуры. См. также параграф по формату продолжительностей.
Читает строку, завершенную символом возврата, с клавиатуры, и сохраняет результата строку в переменной variable(без завершающего возврата). Если максимальная длина max-length дается, не позволяет пользователю вводить больше заданного числа символов.
См. также GetPasswd
в разделе Security-related commands.
Устанавливает обработчик клавиши, который автоматически
выподнит данную команду command когда клавиша "c" нажата (кроме случаев явного ожидания командой
GetChar или командой Input). Если строка "default"
используется вместо одиночного символа,
команда выполняется, если любая другая клавиша нажата.
Этот раздел перечисляет команды используемые для выполнения регулярного текстового вывода. Все эти команды могут использоваться также в графическом режиме, с тем же самым поведением (за исключением того, что текстовый режим обеспечивает 80x25 символы, в то время как графический режим обеспечивает 100x37, потому что символы графического режима имеют размер 8x16). Необязательные параметры перечислены между круглыми скобками. См. также раздел National Language Support.
Печатает указанную строку/выражение в текущей позиции курсора с использованием текущих текстовых атрибутов, затем перемещает курсор. Добавьте "\r\n" к концу строки, чтобы перейти на следующую строку.
Устанавливает текстовые атрибуты. Можно также помещать одиночное числовое значение, представляющее оба цвета и определенный как 16*bg-color+fg-color.
Если вы нуждаетесь в большем количестве возможностей, можете использовать LoadFont. См. раздел National Language Support.
Перемещает курсора в
указанную позицию, и выполняет команду, если она указана.
Пример: At 10,20 Print "Gnats and rats !"
Заполняет заданную текстовую область данным случайным символьным шаблоном pattern-char(или строкой, или десятичным кодом ascii). По умолчанию область соответствует полному экрану, символ шаблона по умолчанию соответствует заполненому блоку (десятичный код ASCII 219) и значения цвета по умолчанию - черный (очищает экран). Перемещает курсор в верхний левый угол очищенной области.
.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"
.
Включает VESA графику. Начало координат находится в левом верхнем углу экрана (0 0). VESA графика может подвешивать некоторые компьютеры под Windows 95/98. Выполните MrBatch с опцией -v, чтобы избежать таких проблем.
Вы можете запрашивать определенный видеорежим, если вы используете параметр "mode". Этот параметр необязательный: если вы не определяете никакое значение, видеорежим будет определен из первого поля переменной VESA-Modes.
Допустимые режимы: :
Переменная VESA-Modes перечисляет режимы видео, поддерживаемые вашими аппаратными средствами.
Пример: InitGraph "640x480"
Закрывает VESA графический режим, и возвращает в текстовый режим.
VESA графика. Выводит заполненную полосу заданного размера и цвета.
VESA графика. Выводит окно заданного размера и цвета. Цвет фона по умолчанию LightGray и цвет области заголовка по умолчанию Blue. Если вы включаете строку заголовка и цвет, этот текст будет отображен в области заголовка.
VESA графика. Выводит текстовую строку в данной позиции с прозрачным фоном. Цвет по умолчанию соответствует цвету символов текста.
VESA графика. Загружает данный PCX 256-colors файл, и выводит его на экран. Значения по умолчанию позиции изображения соответствуют верхнему левому углу экрана (0 0).
Цветовая стратегия (color-strategy) определяет распределение цветов в палитре, когда необходимо больше чем 256 цветов (например, когда два 256-цветовых файла изображения отображаются одновременно):
Best-Colors
Использует наиболее подходящие цвета для самого последнего изображенияSpare-Colors
Пытается предупредить распределение цвета, изменяет существующие цветаShare-Colors
Пытается предупредить распределение цвета, и использует существующие цветаReuse-Colors
не распределяет никакого нового цвета, использует только существующие цветаBest-Colors
.
VESA графика. Загружает заданный GIF-87a файл, и выводит его на экран. Файл может быть с чередованием, но должен быть GIF-87A (не GIF-89a). Размер изображения должен соответствовать выбранному видеорежиму. Вы не можете загружать 1024x768 GIF файл, когда выбран 640x480 режим. По умолчанию позиции изображения - верхний левый угол экрана (0 0).
Из-за патента LZW, эта функция не доступна в коммерческой версии BpBatch/MrBatch. Вы можете использовать команду DrawPcx вместо этого.
Цветовая стратегия (color-strategy) определяет распределение цветов в палитре, когда необходимо больше чем 256 цветов (например, когда два 256-цветовых файла изображения отображаются одновременно):
Best-Colors
Использует наиболее подходящие цвета для самого последнего изображенияSpare-Colors
Пытается предупредить распределение цвета, изменяет существующие цветаShare-Colors
Пытается предупредить распределение цвета, ииспользует существующие цветаReuse-Colors
не распределяет никакого новог цвета, использует только существующие цветаBest-Colors
.
Этот раздел перечисляет команды, которые помогут вам проверить подлинность пользователя. Необязательные параметры перечислены между круглыми скобками.
Некоторые из этих функций работают совместно со шлюзом защиты (Security gateway), который вы должны сначала установить. См. раздел Special TFTP servers для подробной информации.
То же самое что и Input, но отображаются звездочки вместо напечатанных символов.
Применяет 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.
Дешифрует заданный текст, используя заданный 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.
Дешифрует заданную шестнадцатеричную строку, используя заданный 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 контрольную сумму данного текста, и сохраняет ее как шестнадцатеричную строку в переменной variable. Может использоваться как альтернатива Unix функции шифрования для проверки паролей длинной более чем 8 символов.
Эта функция - реализация MD5 стандарта. Имеется заголовок авторского права: RSA Data Security, Inc. MD5 Message-Digest Algorithm
Соединяется с $Security-Gateway
и проверяет, существует ли данный пользователь в данном
домене Radius и использует указанный пароль. Если домен - "Unix"
, использует
Unix определение пользователя/пароля на шлюзе защиты. Для любого другого домена, использует
файл определения домена шлюза защиты, чтобы определить реальный Radius или NT домен
для проверки.
Устанавливает значение $Security-Check
в "PASSED" или "FAILED".
Пароль не передается открытым текстом по сети.
Этот раздел перечисляет команды для подготовки жесткого диска. Необязательные параметры перечислены между круглыми скобками.
Читает таблицу(ы) разделов для заданного диска, и сохраняет ее как строку в заданную переменную variable. Результирующая строка - разделенный пробелами список Type:Size, где
Устанавливает таблицу(ы) разделов к содержимому строки. Используемый формат - тот же самый,что и для 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"
Получает номер раздела с включенным флагом загрузки, (DOS говорит: активный первичный раздел) и размещает его в переменной variable. Первый раздел имеет номер 1. Если никакие разделы не имеют включенного флага загрузки, выдается ноль.
Устанавливает флаг загрузки в данном разделе. Флаг загрузки позволяет главной загрузочной записи (MBR) выбирать, с какого раздела загрузиться. Первый раздел пронумерован 1.
Заполняет данный раздел нолями. Может занимать весьма много времени для
больших разделов. Не форматируйте раздел для любой операционной системы. См. также Clean
.
Быстрое форматирование данного раздела(ов) в соответствии с типом, объявленным в таблице разделов. Если
метка дается, и файловая система ее поддерживает, устанавливается метка раздела. Для параноидального полного
формата, сначала вызовите Blank
для этого раздела.
Clean поддерживается для (FAT16) BIGDOS, FAT32, EXT, LINUX-EXT2 и LINUX-SWAP разделов. Для очистки главной
загрузочной записи (MBR), используйте Clean 0
.
Clean должен использоваться на разделах с данными и на разделах MBR/EXT. Совершенно бесполезно очищать
раздел перед распаковкой файловой системы на него, используя FullUnzip
.
Распаковывает полный дисковый архив на данный раздел, записывая поверх любого существующего файла (очистка "на лету").
FullUnzip поддерживается для (FAT16) BIGDOS, FAT32 и LINUX-EXT2.
Эта команда включает VESA графику, чтобы отобразить полосу прогресса, если
VESA
не была установлена в OFF
.
Распаковывает инкрементный дисковый архив на заданный путь. Файлы из архива заменяют файлы с тем же самым именем на целевом пути, но другие файлы не удаляются.
IncrUnzip поддерживается для (FAT16) BIGDOS, FAT32 и LINUX-EXT2. Эта команда гораздо менее эффективна чем FullUnzip, так как существующая структура файловой системы должна сохраниться. Однако, это дает возможность избежать умножения числа различных дисковых образов, сохраняя только различия. IncrUnzip is supported for (FAT16) BIGDOS, FAT32 and LINUX-EXT2.
Распаковывает файл, предварительно сжатый командой FileZip MrZip
.
Файл подтверждается 32-битовой CRC.
Копирует исходный файл в целевой файл побайтно. Может использоваться после
FullUnzip, например, чтобы модифицировать файлы конфигурации с сервера без
восстановления всего образа. Лучше использовать FileUnzip
для больших и легкосжимаемых файлов.
Копирует первый, затем второй файл в файл назначения побайтно. Может использоваться на произвольно больших файлах. Файл назначения не может быть один из этих двух исходных файлов.
Читает исходный файл, и выполняет подстановку переменных перед записью в файл назначения.
Интерпретация символов выше ASCII 127 зависит от значения $IsoLatin
.
По умолчанию, переменные распознаются, когда предваряются символами "${" и заключаются символом "}".
Это может быть заменено любой другой непустой строкой. Помните, что если вы хотите использовать знак
доллара в пределах префикса или суффикса, вы должны избегать этого, или получите макро-выполнение. Например, если вы хотите явно использовать значения по умолчанию префикса и суффикса,
используйте следующее:
Patch "source-file" "dest-file" "\${" "}"
Рекурсивно создает каталоги от корня до заданного полного пути. Если путь уже существует, эта команда не дает никакого эффекта.
Удаляет заданный файл. Файл должен существовать.
Рекурсивно удаляет все файлы и каталоги под заданным путем, и удаляет непосредственно заданный каталог.
Этот раздел перечисляет команды для продолжения процесса начальной загрузки. Необязательные параметры перечислены между круглыми скобками.
Восстанавливает память и векторы прерывания, распределенные bootprom. Все попытки делать передачу TFTP будут терпеть неудачу после вызова этой команды. Это обычно хорошая идея вызвать эту команду прежде HdBoot, иначе вы можете испытывать нехватку памяти под DOS/Windows. Эта команда неявно вызывается командой FloppyBoot.
Обратите внимание, что, хотя эта функция восстанавливает все векторы "официально" перехваченные BootProm, похоже, что восстанавливаются не все. Но это работает достаточно хорошо для DOS и Windows.
Загружает образ гибкого диска в расширенную память, и переназначает дисковый сервис BIOS так, чтобы запросы гибкого диска использовали вместо него этот образ. Эта команда неявно вызывается командой HideBootProm
. Вызовите FloppyBoot
,чтобы
загрузиться с виртуального диска, который вы только что загрузили.
Этот вид виртуального диска не может быть столь же устойчивым, как тот, что вы получаете, используя команду TFTPBoot. Единственное преимущество состоит в том, что при этом захватывается только несколько сотен байтов обычной памяти вместо объема резервируемого для TCP/IP BootPROM (до 64 КБ). Предупреждение: ничто не защищает расширенную память, в которой размещается виртуальный диск. Не имеется никакого средства для деинсталляции такого виртуального диска.
Делает то же самое, что и LoadRamDisk
, но для образа, который был сжат с использованием
команды FileZip MrZip
. Сжатый виртуальный диск защищен от нарушения целостности данных (и неполной
загрузки) подсчетом байт и 32-битовой CRC.
Связь с другим файлом начальной загрузки (например, образом гибкого диска, сделанным программой BpShell Bootix). См. соглашение по файловым ссылкам для доступа к файлу на другом TFTP сервере.
Скрывает BootROM, загружает загрузочный сектор гибкого диска и загружается с него.
Загружает заданный загрузочный сектор и выполняет начальную загрузку с него. По умолчанию - диск ноль, что соответствует первому жесткому диску, и значение по умолчанию раздела также ноль, то есть главная загрузочная запись. Вы можете загружаться с любого раздела, но предупреждаем, что Windows 95/98 не может загружаться с раздела, который не был установлен как загрузочный (подсказка: используйте SetBootPart).
Эта команда не вызывает неявно команду HideBootProm, так что вы можете вызвать ее заранее.
Загружает данное ядро и виртуальный диск в область верхней памяти, установливает командную строку, и стартует
ядро. Хорошая идея поместить по крайней мере минимальную командную строку с расположением корня
файловой системы (подобно "root=
dev/hda1" /). Если Вы используете linux систему, которая жестко
связана с lilo
(подобно RedHat Linux 5.1), может быть необходимо добавить к командной строке нечто подобное
BOOT_IMAGE=linux
. Обратите внимание, что ядро может быть загружено через TFTP (с автоматическим кэшированием на жестком диске) или непосредственно с целевого корневого раздела.
Эта команда работает для маленьких и больших ядер (zImage
and bzImage
).
Этот раздел перечисляет команды, связанные с поддержкой национального языка. Необязательные параметры перечислены между круглыми скобками.
Поддержка национальной клавиатуры. Переназначает данные клавиши на другие символы.
Например, чтобы поменять клавиши 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)).
Поддержка национальной клавиатуры. Переназначает данные клавиши, когда ALT нажат.
Например, чтобы переназначить Alt-2 на знак амперсанд, используйте
RemapAltKeys "2" "@"
Обратите внимание, что мертвые клавиши не поддерживаются.
Загружает и активизирует заданный двоичный файл кодовой страницы. Кодовые страницы используются для трансляции символов Unicode (представленных, например, на VFAT томах) в 8-битовые символы. Если вы не загрузите правильную кодовую страницу, вы получите предупреждения FAT при доступе к той файловой системе, где встречаются специальные символы.
Все двоичные файлы кодовых страницы доступны в
http://cuiwww.unige.ch/info/pc/remote-boot/soft/codepage.zip
Заданная по умолчанию кодовая страница - 850, переупорядоченный супернабор ISO-Latin-1. Если вы
загружаете более экзотическую кодовую страницу, вы обычно должны переключить переменную $IsoLatin
в "off"
, иначе можете получить бессмысленные неявные преобразования. Кроме того, если вы хотите
отображать экзотические символы, вы должны также загрузить надлежащий экранный шрифт (используйте
"LoadFont"
).
Загружает и активизирует VGA/VESA шрифт, как в текстовом, так и в графическом режиме. Файл шрифта должен быть двоичный файл 16 байтов/символ (8x16 точечный рисунок). Эта команда может использоваться для поддержки национального языка также как для поддержки Fantasy.
Архив с несколькими шрифтами Fantasy доступен в
http://cuiwww.unige.ch/info/pc/remote-boot/soft/fonts.zip
.
Этот архив также содержит программу для извлечения шрифты для вашей кодовой страницы из DOS
.CPI
файла.
Source (i)archive "filename"
Source path "path"
Устанавливает источник для манипуляции архива к данному (возрастающему) файлу архива или дисковому пути.
Dest (i)archive "filename"
Dest (i)dump
Dest path "path"
Устанавливает адресата для манипуляции архива к данному (возрастающему) файлу архива, дампу или дисковому пути. Чтобы управлять количеством данных, отображенных в течение дампа, используйте специальную переменную $DumpFormat.
Сжимает файл для дальнейшей декомпрессии с FileUnzip или для использования как ZRamDisk. Файл подтверждается 32-битовой CRC.
Filter -"pattern"
Filter +"pattern"
Предотвращает/позволяет файлам и каталогам, соответствующие данному образцу (маски разрешены) быть включенным в архив. Образец согласован против полного имени пути. По умолчанию, все файлы включены в образ. Вы только должны явно разрешить файлы, которые отменены фильтром. Каждый отрицательный фильтр имеет свой собственный положительный фильтр (позволенный) подсписок.
Для образов DOS/Windows, вы будете обычно использовать
Filter -"*.swp"
Filter -"temp/*"
и для образов Unix, вы будете обычно использовать
Filter -"var/log/*"
Filter -"tmp/*"
Запускает операцию создания архива, в соответствии с параметрами настройки источника, адресата, и фильтра. За исключением некоторых обстоятельств, вы будете вероятно использовать сокращение, приведенное ниже,
вместо явного вызова CopyArchive
. Обстоятельство, при котором вы будете использовать CopyArchive
явно - тот случай, когда вы захотите изменить фрагментацию образа, как здесь:
set FragmentSize="30 MB"
Source archive "original.imz"
Dest archive "refragmented.imz"
CopyArchive
Сокращение для
Source path "path"
Dest archive "full-archive"
CopyArchive
Обычно сначала вы должны установить фильтры.
Сокращение для
Source path "path"
Dest iarchive "incr-archive"
CopyArchive
Сокращение для
Source archive "full-archive"
Dest dump
CopyArchive
Сокращение для
Source iarchive "incr-archive"
Dest dump
CopyArchive
Сокращение для
Source path "srcpath"
Dest path "dstpath"
CopyArchive
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 имеет свою собственную процедуру низкого уровня, обслуживающую клавиатуру.
Исходный текст Ассемблера доступен..