Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Dos7book

.pdf
Скачиваний:
76
Добавлен:
09.02.2015
Размер:
5.1 Mб
Скачать

Глава 9: Примеры композиции исполняемых файлов

Сейчас широко распространены адаптеры для флэш-карт и твердотельные аналоги дисков, играющие роль накопителей с интерфейсом USB. Для загрузки компьютера с таких приборов они должны быть взяты под управление BIOS так же, как реальные дисковые накопители. Сначала надо задать способ эмуляции "Hard Disk". Если носитель записи оказывается доступен, значит, он форматирован как жесткий магнитный диск. Если носитель недоступен, следует предпочесть способ эмуляции "Forced FDD". В последнем случае надо проверить место соответствующего накопителя в списке устройств на странице "Removable Drives" программы BIOS Setup. Его надо поставить там на первое или на второе место, иначе он не получит буквенного обозначения, и к нему нельзя будет обращаться.

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

твердотельных накопителях проверять и изменять статус раздела приходится с помощью старой программы FDISK.EXE, запускаемой с параметрами /fprmt и /actok (6.13). Многие версии систем BIOS не загружают компьютер из разделов с файловой системой FAT-12, однако программа FDISK.EXE не позволяет размечать иначе разделы, размер которых не превышает 16 Мбайт. При необходимости надо будет считать таблицу разделов (9.02-02), заменить в ней идентификатор файловой системы (A.13-6) с 01h на 06h, и потом записать таблицу разделов обратно (9.02-03). После такой подмены программа FORMAT.COM (6.15), запущенная с параметром /z:1, сформирует в этом разделе желаемую файловую систему FAT-16.

На следующем этапе подготовки загрузочного носителя на него можно записать boot-сектор и системные файлы с помощью программы SYS.COM (6.24), и далее формировать конфигурацию загрузки DOS. Предпочтительны конфигурации с перебазированием DOS на RAM-диск (9.04, 9.09), потому что у твердотельных ячеек памяти ресурс числа актов изменения состояния ограничен, и скорость доступа невелика. Согласно избранной конфигурации на носителе формируют структуру каталогов, и заполняют их необходимыми файлами.

Когда загрузочный твердотельный носитель сформирован, соответствующий ему накопитель надо поставить на первое место на странице "Hard Disk Drives" или на странице "Removable Drives" – в зависимости от того, какой способ эмуляции был применен. При необходимости на этом этапе способ эмуляции "Hard Disk" может быть заменен на "Forced FDD". Когда наименование твердотельного накопителя появилось на странице "Boot Device Priority" программы BIOS Setup,

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

– 579 –

Глава 9: Примеры композиции исполняемых файлов

9.11-02 Использование Windows-2000/XP для запуска MS-DOS7.

MS-DOS7 оставляет мало места для выбора: при старте с жесткого магнитного

диска ей обязательно должен быть предоставлен первичный раздел с файловой системой FAT-16 или FAT-32. В отличие от того операционные системы Windows-2000/XP позволяют устанавливать себя и в первичные, и в не-первичные разделы с файловой системой FAT-32 или NTFS. Совсем безвыходных ситуаций не бывает. Даже если у Вас весь диск размечен как один раздел NTFS, можно программой Partition Magic высвободить место для DOS-раздела, а потом с помощью boot-менеджера (например, System Commander) выбирать ту или иную операционную систему. Но здесь будет рассмотрен вариант с использованием только собственного загрузочного модуля систем Windows-2000/XP.

Структуры разметки дисков, содержащие первичный раздел с файловой системой FAT-32, обычно бывают сформированы при установке операционных систем Windows-2000/XP "поверх" ранее установленной Windows-95/98 с сохранением возможности ее загрузки. Если после включения компьютера вслед за отчетом POST появляется загрузочное меню со строкой "Previous operating system", и если эта предыдущая операционная система именно Windows-95/98, значит, Вы имеете дело с одним из подобных вариантов структуры, и тогда для обеспечения альтернативной загрузки MS-DOS7 нужно править не загрузочные спецификации Windows-2000/XP, а сохраненные конфигурационные файлы Windows-95/98. Пример такой правки показан в разделе 9.11-03.

Если в ходе загрузки Windows-2000/XP загрузочное меню не появляется или не содержит строки "Previous operating system", то надо будет выяснить тип файловой системы на том диске, который назначен загрузочным в спецификациях программы BIOS Setup. Обычно это диск C:. В окне программы Explorer (Проводник) нужно вывести контекстное меню загрузочного диска и в нем выбрать пункт "Properties" (Свойства). На открывшейся вкладке будет указан тип файловой системы. Если там написано "NTFS", то организовать альтернативную загрузку MS-DOS7 без boot-менеджера и без переразметки диска, видимо, нельзя. Но если там написано "FAT", то можно обойтись корректировкой записей в файле BOOT.INI. Конечно, помимо того потребуется перенести системные файлы MS-DOS7 и заново сформировать конфигурационные файлы для нее.

К правке записей в файле BOOT.INI существует официально предписанный путь: в меню "Start" ("Пуск") надо выбрать пункт "Settings" ("Настройка"), оттуда выйти в "Control Panel" ("Панель управления"), там выбрать папку "Performance and maintenance" ("Производительность и обслуживание"), потом папку "System" ("Система"), в ней вкладку "Advanced" ("Дополнительно"), там нажать кнопку "Startup and Recovery Settings" ("Параметры загрузки и восстановления"), и тогда откроется окно, где, наконец, имеется кнопка "Edit" ("Правка"). В том же окне надо установить ненулевое время индикации загрузочного меню. По завершении правки

– 580 –

Глава 9: Примеры композиции исполняемых файлов

файл BOOT.INI следует сохранить, и потом дважды закрывать "окна" кнопкой "OK". Помимо того, изменять содержание файла BOOT.INI можно программой Msconfig.exe. Ее запускают из командной строки в окне, которое открывается при выборе пункта "Run" ("Выполнить") в меню кнопки "Start" ("Пуск").

Синтаксис в файле BOOT.INI такой же, как в файлах MSDOS.SYS (5.01-01) и CONFIG.SYS (9.04-01, 9.09-01). В каждой строке - отдельная спецификация. Ее наименование отделено от значения знаком равенства. Заголовки секций выделены квадратными скобками. В файле BOOT.INI две секции: в первой - параметры загрузки, а во второй - список установленных операционных систем. Ниже показан пример файла BOOT.INI, обеспечивающего загрузку трех операционных систем:

[boot loader] timeout=30

default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS [operating systems]

multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP...

multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000...

C:\bootsect.dos="Microsoft DOS 7.10"

В представленном примере пятая и шестая строки обрезаны по размеру страницы, в реальном файле они длиннее. Но это не существенно: концы усеченных строк в реальном файле в любом случае не должны быть изменены. Из содержания файла понятно, что он обеспечивал раздельную загрузку операционных систем Windows-XP и Windows-2000, поставленных в разделы 2 и 3 жесткого магнитного диска, так что первый раздел диска оставался свободным. Оставлять первый загрузочный раздел свободным не обязательно, но полезно, так как это дает возможность установить MS-DOS7 отдельно от других операционных систем. Последняя строка в приведенном примере именно та, которую Вам предстоит вписать самостоятельно для обеспечения загрузки MS-DOS7, в частности, с диска C:. Слова, заключенные в двойные кавычки, на процесс загрузки не повлияют, они представляют лишь название пункта меню.

Загрузчик NTLDR, интерпретирующий строки файла BOOT.INI, поймет

вписанную Вами последнюю строку как команду искать в корневом каталоге загрузочного диска образ boot-сектора Bootsect.dos. Если его там нет, то его предстоит создать, причем в среде MS-DOS7, загрузившись с восстановительной дискеты для Windows-95/98. Сначала надо сохранить имеющийся boot-сектор загрузочного раздела жесткого магнитного диска в файл, как показано в разделе 9.02-01, затем обновить содержимое boot-сектора с помощью программы SYS.COM (6.24), скопировать это новое содержимое в файл Bootsect.dos, и потом восстановить из файла прежнее содержимое boot-сектора, также по рекомендациям раздела 9.02-01. Вместе с обновлением boot-сектора программа SYS.COM

– 581 –

Глава 9: Примеры композиции исполняемых файлов

скопирует в корневой каталог файлы COMMAND.COM и IO.SYS. Загрузчику IO.SYS будет передано управление в результате исполнения кода boot-сектора.

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

Io.sys

скрытый системный файл: загрузчик и ядро MS-DOS7;

Msdos.sys

скрытый системный файл: параметры загрузки (5.01-01);

Config.sys

конфигурационный файл (9.01-01, 9.04-01, 9.11-03);

Autoexec.bat

конфигурационный файл (9.01-02, 9.04-02, 9.11-03);

Command.com

файл только для чтения: командный интерпретатор.

Три конфигурационных файла из приведенного перечня – MSDOS.SYS, CONFIG.SYS и AUTOEXEC.BAT – Вам предстоит написать; в скобках в строках перечня указаны номера разделов данной книги, где даны образцы их составления.

Помимо файлов корневого каталога, для загрузки и последующей работы MS-DOS7 необходимы еще драйверы, упоминаемые в строках конфигурационных файлов, а также различные программы из числа описанных в главе 6. Всех их размещают в структуре каталогов DOS, которую также предстоит создать на том же диске. Примеры конфигурационных файлов, представленные в этой книге, написаны в расчете на одну и ту же структуру каталогов: драйверы помещены в каталог \DOS\DRV, файлы из поставки MS-DOS7в каталог \DOS\MS7, файловый менеджер в каталог \DOS\VC4, все остальные файлы в каталог \DOS\OTH. Конкретный вид структуры каталогов DOS и состав размещаемых в ней файлов Вы вправе задать иначе, но в любом случае они должны быть точно согласованы со всеми ссылками в примененных Вами конфигурационных файлах.

Какому примеру конфигурационных файлов следовать тоже вопрос Вашего выбора. Иногда бывает достаточен простейший вариант, подобный показанному в разделе 9.01. Чаще полезны варианты с перебазированием MS-DOS7 на RAM-диск, подобные описанным в разделах 9.04 и 9.09. Специальные примеры конфигурационных файлов для желающих экспериментировать с DOS и другими операционными системами показаны в разделе 9.11-03. На основе упомянутых примеров несложно комбинировать такие конфигурации загрузки, которые наиболее точно отвечают стоящим перед Вами задачам.

Примечание 1: в ходе установки операционных систем Windows-2000/XP "поверх" установленных ранее MS-DOS7 или Windows-95/98 командному интерпретатору COMMAND.COM, который остается в корневом каталоге, оказываются приписаны атрибуты H (скрытый) и S (системный). Из-за них обращения к командному интерпретатору из batch-файлов не будут исполняться. Упомянутые атрибуты необходимо снять с помощью программы ATTRIB.EXE (6.01).

– 582 –

Глава 9: Примеры композиции исполняемых файлов

9.11-03 MS-DOS7 в роли boot-менеджера.

Операционные системы Windows-95/98 используют MS-DOS7 в процессе загрузки, но не раскрывают секретов отдельного конфигурирования MS-DOS7. Между тем раздельное конфигурирование вполне возможно, и оно полезно не только ради самой MS-DOS7, но и для осуществления выборочной альтернативной загрузки ряда других операционных систем, способных стартовать из среды

MS-DOS7.

Приведенный здесь образец файла CONFIG.SYS предназначен для Windows-95/98, но, помимо того, обеспечивает загрузку двух конфигураций MS-DOS7 и еще двух других операционных систем. Для старта показанных загрузчиков операционных систем QNX и Linux необходим диск с файловой системой FAT-16. Если Вам нужна только альтернативная загрузка MS-DOS7 и Windows-95/98, то все строки, относящиеся к системам QNX и Linux, нужно просто исключить, и тогда можно будет использовать загрузочный диск с файловой системой FAT-32.

Файл CONFIG.SYS начинается с секции [menu]. Выбор пункта меню направляет процесс интерпретации к секциям [L08] – [L25]: каждая из них соответствует одной из альтернатив. Секции названы по именам меток в файле Autoexec.bat. Пустые строки между секциями введены только для удобства восприятия, при наборе текста файла их можно пропускать.

[menu] numlock off

menuitem=L08, Real mode MS-DOS7 menuitem=L09, Protected mode MS-DOS7 menuitem=L16, Microsoft's Windows-98 menuitem=L24, QNX v.6.0 menuitem=L25, Linux Slackware v.3.5 menudefault=L16,20

[L08] device=\DOS\DRV\Himem.sys /v device=\DOS\DRV\Umbpci.sys include=S08

include=S09

[S08]

accdate c- d- e- dos=high,umb,noauto buffershigh=30,0 fileshigh=30,0

– 583 –

Глава 9: Примеры композиции исполняемых файлов

lastdrivehigh=Z

multitrack=On

fcbshigh=1,0

stackshigh=9,256

[L09] device=\DOS\DRV\Himem.sys /v

device=\DOS\DRV\Emm386.exe ram v include=S08

include=S09

[S09]

country=007,866,C:\DOS\DRV\Country.sys

devicehigh=\DOS\DRV\Dblbuff.sys

devicehigh=\DOS\DRV\Ifshlp.sys

devicehigh=\DOS\DRV\Setver.exe devicehigh=\DOS\DRV\Atapimgr.sys /W:6 /T:5 /LUN devicehigh=\DOS\DRV\Oakcdrom.sys /D:CD001 installhigh=\DOS\DRV\Shsucdx.com /D:CD001 /L:N /~+ /R /Q

[L16]

device=\WINDOWS\Himem.sys

include=S08

Country=007,866,C:\WINDOWS\COMMAND\Country.sys

devicehigh=\WINDOWS\Dblbuff.sys

devicehigh=\WINDOWS\Ifshlp.sys

devicehigh=\WINDOWS\Setver.exe devicehigh=\WINDOWS\COMMAND\Display.sys con=(ega,,1)

[L24]

device=\QNX\boot\bin\loadqnx.sys C:\QNX\boot\fs\qnxbas.ifs

[L25]

device=\DOS\DRV\Himem.sys

include=S08

install=\linux\loadlin.exe @\linux\linparam.scr

[common]

installhigh=\DOS\DRV\Mouse.com shell=C:\COMMAND.COM C:\ /E:2016 /L:511 /U:255 /p

Секции [L08] и [L09] в приведенном файле CONFIG.SYS загружают MS-DOS7 как самостоятельную операционную систему, но [L09] обеспечивает доступ к области UMB как обычно с помощью драйвера EMM386.EXE (5.04-02), а [L08] –

– 584 –

Глава 9: Примеры композиции исполняемых файлов

с помощью драйвера UMBPCI.SYS (5.04-04) без перевода процессора в защищенный режим. Последний вариант необходим для работы с программами реального режима, такими как DUSE.EXE (5.07-05) или GS_limit.com (9.10-01).

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

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

Секция [L16] для загрузки операционной системы Windows-95/98 содержит ряд спецификаций, которые обычно принимаются по умолчанию, но здесь написаны явно для обеспечения совместимости с обособленной загрузкой MS-DOS7. Пути в секции [L16] соответствуют обычной файловой структуре, которая создается автоматически при установке операционной системы Windows-95/98 на диск. Но если на Вашем компьютере структура каталогов другая, то пути в секции [L16] надо будет привести в соответствие с ней.

При выборе пунктов меню [L24] или [L25] управление передается загрузчикам UNIX-подобных операционных систем, которые не возвращают управление обратно к MS-DOS7. В таких случаях команды в секции [common] не будут исполнены, и единственный путь обратно лежит через команду SHUTDOWN с последующей перезагрузкой. Пути, указанные в строках секций [L24] и [L25], отражают ту структуру каталогов, которая создается на текущем диске в ходе распаковки пакетов поставки соответствующих операционных систем.

При выборе пунктов меню [L08], [L09] или [L16] интерпретация команд продолжится в секции [common]. В последней строке команда SHELL запустит интерпретатор COMMAND.COM. Он продолжит процесс загрузки согласованным исполнением команд из последнего конфигурационного файла – AUTOEXEC.BAT.

Файл AUTOEXEC.BAT получается простым, потому что варианты [L08] и [L09] обрабатываются одинаково, и множество альтернатив сужается до двух. Конкретное содержание файла AUTOEXEC.BAT может выглядеть, например, так:

@echo off prompt $p$g set dsk=C:

if not exist %dsk%\Temp\nul md %dsk%\Temp set Temp=%dsk%\Temp

set dircmd= /A /O:GNE /P goto %CONFIG%

:L08

:L09

Lh %dsk%\DOS\DRV\Keyrus.com path ;

set VC=%dsk%\DOS\VC4

– 585 –

Глава 9: Примеры композиции исполняемых файлов

path=%VC%;%dsk%\DOS\OTH;%dsk%\;%dsk%\DOS\MS7 Vc.com /TSR /no2E /noswap

goto L25 :L16

path=%dsk%\WINDOWS;%dsk%\WINDOWS\COMMAND

Mode.com con codepage prepare=((866) %dsk%\WINDOWS\COMMAND\Ega3.cpi) Mode.com con codepage select=866

Lh Keyb.com ru,866,%dsk%\WINDOWS\COMMAND\Keybrd3.sys echo.

echo Loading Windows-98. Wait...

Win.com

:L24

:L25

В этом варианте файла AUTOEXEC.BAT строки 2 – 6 представляют общую часть с присвоением значений обычным переменным окружения. Важно не оставлять пробелов в конце 3-й и 5-й строк с присвоением значений переменным DSK и TEMP. В 7-й строке выполняется переход на метку, определяемую значением переменной CONFIG. Значение этой переменной неявно задает загрузчик IO.SYS в ходе интерпретации секции [menu] файла CONFIG.SYS, причем значением становится имя избранного пункта меню. Поскольку до исполнения файла AUTOEXEC.BAT дело доходит только в случаях выбора пунктов меню L08, L09 (MS-DOS7) и L16 (Windows-95/98), постольку переход из

7-й строки может произойти только на метки :L08, :L09 или :L16.

После меток :L08 и :L09 следует группа команд, обеспечивающая загрузку MS-DOS7. Команды этой группы задают пути, специфичные для MS-DOS7, и вызывают на исполнение файл-менеджер Volcov Commander.

После метки :L16 следует группа команд, аналогичным образом обеспечивающая загрузку операционной системы Windows-95/98. Здесь в переменную PATH записываются другие пути, специфичные для Windows-95/98.

Следует также обратить внимание на применение тривиального варианта национальной адаптации, чтобы обеспечить правильное переключение кодировок во всех видеорежимах индикации "окна DOS". В заключительных строках инициируется загрузка Windows-95/98 посредством вызова на исполнение загрузчика файла WIN.COM. Выведение логотипа Windows на экран дисплея не предусмотрено, вместо него на экране появится текстовое сообщение, которое по окончании загрузки сменится привычным изображением "рабочего стола".

Примечание 1: хотя операционная система Windows-XP не приспособлена для старта в среде MS-DOS7, тем не менее все необходимые условия

для ее старта могут быть подготовлены с помощью программы Dostowxp.com. Вариант этой программы, модифицированный

– 586 –

Глава 9: Примеры композиции исполняемых файлов

В.Ашумовым, способен инициировать загрузку систем Windows Vista и Windows-7. И исходный, и модифицированный варианты программы выложены на сайте http://www.multiboot.ru/files.htm .

Благодаря им Вы сможете запускать заранее установленные современные версии операционной системы Windows так же, как и другие операционные системы, упоминаемые в разделе 9.11-03.

Примечание 2: установка операционной системы Linux выполняется путем рекомпиляции ее ядра с теми драйверами, которые нужны для обслуживания конкретного компьютера. В сети Интернет на сервере ftp://ftp.wolfmountaingroup.org/pub/linuxware/ выложен архив linuxware-09072008.tar.gz, позволяющий рекомпилировать ядро 2.4 Linux в виде обычной программы для DOS. Это рекомпилированное ядро запускает Linux из среды DOS, сохраняет DOS, и по окончании работы Linux обеспечивает возврат обратно в DOS. Ядро 2.4 используется в версиях 8 – 10 Mandrake Linux и во многих других современных разновидностях Linux.

– 587 –

Приложения

A.01 Основные системные структуры данных

И система BIOS, и MS-DOS хранят необходимые им данные в выделенных областях памяти компьютера. Размещение данных в этих областях не является строго определенным, оно может зависеть как от версии системы BIOS, так и от версии MS-DOS. В общем случае доступ к системным данным должен осуществляться не путем прямой адресации, а через вызовы функций, описанных в главе 8. Помимо прочего, системные данные не будут обновлены должным образом, если не будет вызвана обслуживающая их функция.

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

A.01-1. Область данных BIOS

Сразу после включения компьютера система BIOS начинает собирать сведения о нем и формировать свою область данных. В AT-совместимых компьютерах область данных BIOS занимает 100h байт, начиная с адреса 0040:0000h.

Приведенная ниже таблица дает общее представление о расположении данных в области данных BIOS со ссылками на другие таблицы, где более детально показаны сведения, касающиеся флоппи-дисков (A.08-1), видеосистемы (A.10-6), состава оборудования (A.11-1) и состояния клавиатуры (A.02-3).

Смещение

Длина

Содержание

00h

2

Базовый адрес ввода-вывода для порта COM-1

02h

2

Базовый адрес ввода-вывода для порта COM-2

08h

2

Базовый адрес ввода-вывода для порта LPT1

0Eh

2

Сегмент данных BIOS (0000h, если его нет)

10h

2

Состав оборудования, подробнее в A.11-1

12h

1

Отчет о результатах теста POST

13h

2

Размер базовой памяти в килобайтах

17h

39

Буфер и флаги клавиатуры, подробнее в A.02-3

 

 

– 588 –

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]