UR4QTP: записная книжка 

На главную

Установка FreeDOS

Если посмотреть на мой компьютерный зверинец, то пока можно представить себе четыре варианта установки:
1) с дискеты 5″ 360 кБ,
2) с дискеты 5″ 1,2 МБ,
3) с дискеты 3,5″ 1,44 МБ,
4) с CD-ROM.

Установка с дискеты 5″ 360 кБ

Ещё не закончено…

Подопытная зверушка, над которой проводились экзекуции:

Тип: IBM PC XT
Материнская плата: беспородная
Процессор: NEC V20
Тактовая частота: 4,77 МГц
Сопроцессор: нет
ОЗУ: 512 кБ
Накопитель для гибких дисков: 1×360 кБ 5,25″
Накопитель для жёстких дисков: 1×20 МБ 5,25″ ST-506 (Seagate ST-225)
Видео: EGA
Порты: 1×LPT, 4×COM (один из них занимает внутренний модем)
Сеть: толстый либо тонкий коаксиал (выбирается перемычками на сетевой плате)
Звук: только встроенный динамик

Узкими местами данной конфигурации являются:

Для оголтелых минималистов работа без жёсткого диска и с одним 360 кБ дисководом тоже возможна, хотя и потребует постоянного тасования кучи дискет. Но для возни и тестирования железок – вполне себе вариант.

Для вышеприведенной же конфигурации с жёстким диском перед установкой нужно убедиться, что компьютер определяет объём ОЗУ, а контроллер жёсткого диска получает управление и уже сам определяет, какой накопитель к нему подключен. Нужно взять листик бумаги и ручку и ещё даже до сборки компа определиться, как будут распределены ресурсы компьютера между платами. Обычно на платах контроллеров можно перемычками выбирать адрес встроенного ПЗУ (если оно есть – так называемая additional ROM BIOS; всегда, насколько мне известно, присутствует на платах контроллеров жёстких дисков с интерфейсом ST-506, часто – на сетевых платах), выбрать другими перемычками адреса платы в пространстве ввода-вывода (I/O address), выбрать номер линии прерывания, которое займёт плата (IRQ), а также канал ПДП (прямой доступ в память, он же DMA). Разные платы могут требовать либо не требовать себе каких-либо ресурсов, так что какие-то перемычки могут быть, а какие-то – могут не быть :-). Как правило, эта работа может стать увлекательным квестом, хотя во многих случаях может заканчиваться и воспоминаниями о родственниках по материнской линии – всё зависит от вашего опыта в подобных делах, настойчивости, наличия справочной литературы и любви к гуглям.

Особое внимание нужно уделить связке «Контроллер жёсткого диска – накопитель». Контроллеры с интерфейсом ST-506, которые часто именуют MFM-контроллером (по методу записи на диск), были слабо стандартизированы между производителями. Сам электрический интерфейс между контроллером и накопителем вполне у всех одинаков, но на более высоком уровне начинаются проблемы. Часто контроллеры одного производителя не работают с накопителями другого производителя, а контроллеры старые не работают с накопителями более новыми, в том числе и своего же производителя. Но даже если контроллер видит и читает диск, это не значит, что проблем нет. Попытка произвести низкоуровневое форматирование диска силами программы, встроенной в контроллер, может привести к самым различным последствиям – от полного успеха до полной потери работоспособности диска с данным контроллером. Поэтому самым безопасным, хотя, разумеется, и самым трудозатратным способом будет заранее узнать, полностью ли совместимы ваши диск и контроллер. Имеющийся у меня контроллер Seagate ST-11R с BIOS rev.2.0.0 полностью поддерживает диск ST-225, а вот диск ST-251 даже правильно определить не может. Кстати, буква R в названии контроллера отражает тот факт, что он может работать с дисками, использующими метод записи RLL (run length limited, запись с ограниченной длиной неперемагничиваемых участков дорожки), более поздними и более ёмкими по сравнению с дисками MFM (modified frequency modulation, модифицированная частотная модуляция). ST-225 – диск с MFM, поэтому, как видим, RLL-контроллеры могут работать с MFM-дисками, обратная же конфигурация, насколько мне известно, неработоспособна.

Ещё одна проблема, связанная со старыми накопителями и требующая предварительной подготовки, это необходимость парковки головок этих накопителей перед их выключением. Головки при работе накопителя как бы плавают на очень небольшом расстроянии от поверхности диска за счёт аэродинамической подъёмной силы. Это позволяет иметь головкам очень большой ресурс, так как отсутствует трение о поверхность диска. Когда диск останавливается, головки должны переместиться в специальное парковочное положение. Связано это не с тем, что в этом месте упавшие головки меньше трутся о диск до его полной остановки. Наоборот, шероховатость поверхности в парковочном месте диска специально делается более сильной. Это нужно для того, чтобы прижавшаяся к поверхности остановившегося диска головка банально не прилипла к нему с последующим «обезглавливанием» накопителя при старте. Полированные рабочие поверхности диска и головки при неудачном парковании настолько сильно слипаются, что их разъединить даже пассатижами можно с большим трудом – в этом я имел возможность убедиться лично. Современные диски при выключении питания самостоятельно паркуют головки, и даже старые ST-506-совместимые диски умели это делать (например, ST-251), но не все. ST-225 должен парковать головки перед выключением принудительно, и о возможности сделать это нужно позаботиться заранее, до подачи питания на диск. Для этого служат специальные утилиты парковки диска, которые, как правило, незамысловато так и называются – park, park2 и т. п. Такую утилиту нужно иметь на дискете, и нужно иметь возможность её с этой дискеты запустить, и возможность эту нужно проверить заранее, до подключения жёсткого диска. Я не хочу сказать, что диск непременно будет поломан, если его не запарковать, у меня такие случаи пару раз происходили без видимых последствий, но систематическое злоупотребление в этом деле чревато.

Следующий этап подготовки. Необходимо сделать загрузочную дискету. Официальный сайт FreeDOS не содержит образов загрузочной дискеты на 360 кБ, поэтому такую дискету нужно сделать самостоятельно. Подготовленные мною для собственного потребления образы дисков можно скачать здесь:

Образ диска Содержание
FreeDOS1.2d360_00.img Диск №00 – загрузочный. Содержит:
\DRV\LOC\RUSSIAN\russian.com – русификатор
\FDOS\BIN\command.com
\FDOS\BIN\keyb.exe
\FDOS\BIN\country.sys
\FDOS\BIN\cp866uni.tbl
\FDOS\TEMP\ – пустой каталог для временных файлов
\PRG\PARK\park2.com – утилита для парковки головок дисков
\PRG\VC\vc.com – Волков коммандер
\PRG\VC\vc.ini
\PRG\VC\vc.mnu
\autoexec.bat
\command.com – командный процессор
\fdconfig.sys – аналог config.sys
\kernel.sys – ядро
FreeDOS1.2d360_01.img Диск №01. Содержит:
\FDOS\BIN\command.com – командный процессор
\FDOS\BIN\debug.com – отладчик
\FDOS\BIN\sys.com – для переноса системы
\FDOS\BIN\doslfn.com
\FDOS\BIN\fdisk.exe – для работы с таблицей разделов
\FDOS\BIN\format.exe – для форматирования диска
\FDOS\BIN\mode.com
\FDOS\BIN\chkdsk.exe
\FDOS\BIN\mem.exe

Здесь только самый необходимый минимум ПО для установки FreeDOS на жёсткий диск, в дальнейшем по мере надобности образы будут добавляться или изменяться.


Для создания дискет из их образов нужно выполнить команды (по одной на дискету):

abcd:~$ dd if=~/FreeDOS1.2d360_00.img of=/dev/fd0
abcd:~$ dd if=~/FreeDOS1.2d360_01.img of=/dev/fd0

Предполагается, что дисковод система знает под именем /dev/fd0, у пользователя есть права на работу с ним, а образы дискет расположены в домашнем каталоге пользователя (~).


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

Итак, нужные платы вставлены, монитор и клавиатура присоединены, дисковод подключен, а жёсткий диск отключен. Загрузочная дискета в наличии. Мы на исходной позиции.

Вставляем загрузочную дискету в дисковод и включаем питание. В столь старых компах, как у меня, никакого BIOS Setup не предусмотрено, формат дискет система опознаёт только один – 5,25″ 360 кБ, и если дискета вставлена в дисковод, будет произведена попытка загрузиться именно с неё независимо от наличия жёсткого диска. Autoexec.bat на загрузочном диске загрузит ядро, русификатор и двухпанельный файловый менеджер всех времён и народов VC, выбранный из-за своей компактности, функциональности и расовой принадлежности :-). Нажимаем F2 и в открывшемся User menu выбираем пункт «Парковать диски». Утилита парковки дисков должна запуститься и сообщить об отсутствии дисков. Если всё нормально, можно выключить питание и присоединить жёсткий диск.

Включаем питание и вновь загружаемся с загрузочной дискеты. Если с отключенным диском контроллер писал "No drive", то теперь при загрузке должно быть отображено что-то типа "Drive C: ST-225". Попутно замечу, что единственный диск своими перемычками должен конфигурироваться именно как «Диск C:», потому что контроллер может не видеть наличие диска D:, если диск C: отсутствует. Также не лишним будет проверить наличие на диске терминатора – как правило, обычной резисторной сборки, находящейся на доступном месте. У ST-225 и ST-251 терминатор находится снизу на печатной плате в «лежачем» положении. Контроллер ST-506 может работать с двумя накопителями. С ними он соединяется шлейфом управления, общим для обоих накопителей, и индивидуальными шлейфами для передачи данных. Тот накопитель, который находится на шлейфе управления последним, должен иметь терминатор, на втором (который по шлейфу ближе к контроллеру) терминатор нужно снять. На самом деле это правило не очень строгое, и у меня всё работало без сбоев и при наличии терминаторов на обоих дисках.

После загрузки FreeDOS с дискеты можно попытаться отобразить на одной из панелей жёсткий диск. Если в панели появляется содержимое диска или просто он пуст, но VC ни на что не ругается, то скорее всего диск отформатирован и готов к работе. Можно попробовать скопировать на него с дискеты какой-нибудь файл, если всё нормально, он появится в каталоге диска. В этом случае низкоуровневое форматирование не нужно.

Низкоуровневое форматирование (LLF – low level format). Пропустить, если fdisk видит или может создать таблицу разделов!

На самом деле низкоуровневое форматирование может применяться также в случае, когда на диске появилось много сбойных секторов. Повторюсь, речь именно о настоящем низкоуровневом форматировании, которое осуществляется программой, записанной во встроенное ПЗУ контроллера тех дисков, у которых привод головок осуществлялся не сервоприводом, а шаговым двигателем. Разумеется, это самые первые из накопителей для IBM PC. Я ещё помню те былинные времена, когда такое форматирование было практически обязательной ежемесячной процедурой для накопителей размером в два пятидюймовых отсека и ёмкостью 5 МБ (пять мегабайт!). Диски в этих накопителях вращались отдельным двигателем при помощи резинового пассика! Для более поздних накопителей некоторое время низкоуровневое форматирование эмулировалось, а потом и вовсе потеряло смысл, поскольку невозможно форматировать дорожку, позиционирование на которую осуществляется по меткам на этой самой дорожке. Именно по сервометкам каждой дорожки, нанесенным на заводе на поверхность диска раз и навсегда и позиционирует головки сервопривод, в отличие от шагового двигателя, когда положение головок определяется датчиком нулевого цилиндра и числом шагов шагового двигателя.

Итак, низкоуровневое форматирование. Точка входа в программу форматирования, как правило, имеет смещение 5 от начала ПЗУ контроллера. Мой контроллер сконфигурирован на использование его ПЗУ с адреса сегмента D000h. Запускаем debug (\FDOS\BIN\debug.com) и вводим команду:

- g=d000:5

Утилита форматирования задаёт вопрос о номере накопителя, с которым будем работать. Отвечаем 0. Далее в таблице параметров диска нужно проконтролировать их правильность и при необходимости исправить. Для ST-225:

Total cylinders on the drive 615
Total heads on the drive 4
Number of sectors per track 17
Starting write precomp cylinder NONE
Drive model ST-225 (прикольно, можно написать что хочешь!)
Drive serial number любой (можно списать с крышки)
Interleave 4

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

На вопрос «Продолжить?» отвечаем утвердительно и ждём окончания форматирования, а затем – проверки. Перезагружаем компьютер с загрузочной дискеты, не обращая внимания, что система ругается на отсутствие таблицы разделов на диске.

Создание таблицы разделов. Запускаем fdisk со второй дискеты (\FDOS\BIN\fdisk.exe). На вопрос об использовании FAT32 отвечаем положительно. Выбираем пункт 1 – создание раздела DOS. Выбираем пункт 1 – создание первичного раздела. Отводим под этот раздел 100% объёма диска. Проверяем, что раздел активный (Status: A). Создание таблицы разделов закончено. Перезагружаем компьютер с загрузочной дискеты.

Форматирование диска. Запускаем format со второй дискеты (\FDOS\BIN\format.exe):

A:\FDOS\BIN>format c:

Входящей в комплект FreeDOS программой format мне не удалось нормально отформатировать диск, она ругалась на нулевой сектор. Если же загрузиться с дискеты MS-DOS 6.22, то её format вполне нормально размечает этот же диск. Так что кто-то где-то что-то недокрутил…

Перенос системы. Запускаем sys со второй дискеты (\FDOS\BIN\sys.exe):

A:\FDOS\BIN>sys c:

Установка с дискеты 5″ 1,2 МБ

Установка с дискеты 3,5″ 1,44 МБ

Установка с CD-ROM

FreeDOS 1.2 RC2 ISO-образ можно скачать здесь: http://www.freedos.org/download/ (FD12CD.iso).

Записать образ на диск с помощью программы K3b («Сервис» → «Записать образ») или в консоли:

wodim ~/FD12CD.iso

Предполагается, что образ находится в домашнем каталоге (~).


2016-11-28…2017-10-11


На главную

 UR4QTP: записная книжка