30 апреля 2014

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

В этой статье поговорим о создании собственного образа загрузочной дискеты FreeDOS. 

Загрузка DOS может понадобиться во многих случаях. Это и прошивка BIOS материнской платы, запуск утилит диагностики и восстановления жестких дисков MHDD и Victoria, старые досовские игры и еще какие-нибудь интересные задачи.

У DOS есть важное преимущество перед другими ОС. Это в первую очередь прямое обращение к аппаратуре и умение работать с дисками на физическом уровне. Поэтому под DOS написано такое большое количество низкоуровневых программ.
Мы будем использовать свободную и открытую версию DOS, называемую FreeDOS. Она до сих пор поддерживается в актуальном состоянии и полностью совместима с оригинальной MS-DOS. К тому же у нее есть ряд усовершенствований, например, ядро сразу имеет доступ к файловой системе FAT32 и поддерживает диски большого объема (LBA). Этим так же может похвастаться версия ms dos 7.1 из загрузочного диска windows 98.

Приступим к созданию собственного загрузочного диска. Скачаем ISO-образ последней версии  FreeDOS с официального сайта. Внутри него, в папке ISOLINUX есть образ загрузочной дискеты FDBOOT.IMG, с которым мы и будем работать. Внутри этого образа мы оставим только самое необходимое и по мере надобности будем добавлять туда то, что потребуется. 
Препарировать img-образы под Windows удобней всего в программе Winimage.

Итак, для минимальной загрузки FreeDOS необходимо только два файла, ядро KERNEL.SYS и интерпретатор команд command.com. Поэтому открываем образ FDBOOT.IMG и удаляем все, кроме двух этих фалов.
Дальше мы создадим два текстовые файла: fdconfig.sys - конфигурационный файл операционной системы и autoexec.bat. - файл автозагрузки. В fdconfig.sys комментарии ставятся знаком ";" или "rem" в начале строки, а в autoexec.bat двойным двоеточием "::".

Поскольку DOS-системы работают в реальном режиме процессора с архитектурой x86, то это запрещает адресовать более 1 Мб ОЗУ. Что бы обойти это ограничение используют драйвер дополнительной памяти XMS. В freedos он называется himemx.exe. Так же для совместимости с некоторыми приложениями еще устанавливают драйвер расширенной памяти EMS. В freedos это jemm386.exe. Но за место двух этих драйверов в freedos рекомендуется использовать один JEMMEX, он занимает меньше памяти.

На iso-образе в папке  \FREEDOS\SETUP\ODIN вы найдете все необходимые драйверы и утилиты. Так же их можно скачать и с официального сайта в разделе software. Все, что будет упоминаться в конфигах, нужно скопировать на ваш образ FDBOOT.IMG.   

Добавим  в FDCONFIG.SYS следующие строчки.
device=a:\jemmex.exe
DOS=HIGH,UMB 
Еще нам потребуются драйвер для мышки. В freedos используется CuteMouse (CTMOUSE). Это очень миниатюрный драйвер, с поддержкой колеса прокрутки. В памяти занимает меньше 3.5Kb и распознает COM и PS/2 мышки. USB мышки не поддерживает, но большинство современных BIOS благодаря режиму "legacy USB" позволяют их видеть как PS/2. Поэтому они тоже становятся доступны драйверу CTMOUSE.

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

Добавим строчку в autoexec.bat
LH a:\ctmouse
Дальше загрузим драйвер для CD-ROM'а. Предполагается, что он подключен к IDE интерфесу. Для всех ATA-устройств в freedos есть один универсальный драйвер UIDE.SYS. Он перехватывает прерывание "Int 13h" BIOS, умеет кэшировать данные и поддерживает 48-битную LBA и 24-битную CHS адресацию.
В FDCONFIG.SYS добавим.
DEVICEHIGH=a:\UIDE.SYS /B /D:MYDVD
А в autoexec.bat
shsucdx /D:MYDVD
Если вы хотите подключить какой-нибудь iso-образ в качестве cd-rom'a, то это можно сделать при помощи SHSUCDHD.
SHSUCDHD /f:c:\horde.iso
shsucdx /d:shsu-cdh
здесь после ключа /f идет место расположения образа.

Займемся вопросом руссификации. Для этого нужно загрузить драйвер дисплея, который будет выводить кириллицу. Пишем в autoexec.bat
LH DISPLAY CON=(EGA,,1)
Команда mode prep подготавливает вывод на устройство CON кодовую страницу 866, используя файл шрифтов.
LH MODE CON CP PREP=((866) a:EGA3.CPX)
команда mode sel устанавливает активную кодовую страницу.
LH MODE CON CP SEL=866
Устанавливаем драйвер и руссификатор клавиатуры
LH KEYB RU,,keybrd2.sys
Переключения раскладки осуществляется с помощью CTRL+SHIFT.
Зададим русские форматы даты и времени. В FDCONFIG.SYS напишем.
!COUNTRY=007,866,a:\COUNTRY.SYS
Еще добавим в autoexec.bat поддержку длинных имен
doslfn.com -z:cp866uni.tbl
Для доступа к NTFS будем использовать драйвер Paragon ntfs4dos, у него встроенная поддержка русских длинных имен. Отдельно скачать можно здесь.
ndos.exe -lfn -cp:866 -mountall
Теперь, что касается звука. Драйверов современных звуковых карт в DOS нет. Но если вы планируете запускать DOS на старой машине или в эмуляторе, с поддержкой Sound Blaster, то можно установить драйвер "Sound Blaster 16 Drivers.zip". Например, его можно взять здесь. В архиве есть отдельный установщик, который скопирует все необходимые файлы и добавит нужные строки в  autoexec.bat.
SET SOUND=a:\
SET BLASTER=A220 I5 D1 H5 P330 T6
SET MIDI=SYNTH:1 MAP:E
a:\DIAGNOSE /S
a:\MIXERSET /P /Q
Поскольку во всех современных биосах есть опция Legacy USB Support, то они поддерживат USB-клавиатуры и мышки.  Благодаря этому FreeDOS может нормально работать с большинством usb-устройств и даже с флешками. Так же биосы поддерживают SATA диски, и они ток же видны в FreeDOS.

Еще для ускорения работы с дисками по средством кэширования в dos'е есть утилита SMARTDRV. В FreeDos'е для этих целей используют LBACACHE. По умолчанию использует 2Mb, есть смысл задать больше. В autoexec.bat пишем.
LBACACHE 8192
Вообщем и целом все. Еще не забудьте скопировать Volcov Commander, тоже программка must have!

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

7 комментариев:

  1. Хотел скачать Ваш образ, но на фтп нужен доступ, анонимус не проходит. Исправьте плиз, или зачем тогда эта ссылка?

    ОтветитьУдалить
    Ответы
    1. При анонимном доступе ваш клиент должен автоматически подставлять имя anonymous или ftp, а вместо пароля email. Проверьте ваш клиент, доступ есть!

      Удалить
    2. Все-таки у Вас там что-то не так. Получилось только ftp/ftp а насколько помню (давно не сталкивался) правильный аноним идёт как anonymous/anonymous (так было в эпоху ДОСа) anonymous/user@domain.net (позже стало так)

      Удалить
    3. P.S. Пробовал из браузеров, т.к. влом ставить клиента (думаю что мало кто вообще пользуется клиентом, не считая "нужды по-работе", современные браузеры поддерживают фтп-поверх-нттп)

      Удалить
  2. Ответы
    1. Жаль, почему не получилось? какую ошибку получили?

      Удалить
  3. Тоже не получилось. Ни браузером, ни фтп клиентом. Пробовал и ftp и anonymous. Какой смысл давать ссылку, которою крайне затруднительно сказать? Автору минус однозначно! Блин, убил 20 минут времени зря...

    ОтветитьУдалить