Один из юзеров lj.rossia.org намедни решил поностальгировать и поиграться с DOS’ом, и в это же время мне попался образ готовой системы с Windows 3.11, ну как образ — на самом деле это был бэкап установленной уже системы, но без, собственно DOS 6.22, зато в Windows уже был установлен Word, Excel и даже какая-то поддержка сети. Со всем этим, в свое время, ИРЛ я имел только шапочное знакомство, так что попытаюсь реанимировать старый бэкап.
Эксперимент буду проводить на виртуалке, так что создаю MS-DOS совместимую виртуалку в WMware, создаю два жестких диска на 500 Мб и на 1 Гб (второй понадобится позднее, для создания загрузочного образа для PXE), заставляю грузиться виртуалку из локальной сети, где у меня есть PXE-сервер (копия), и загружаю Acronis Disk Director 10, который как раз под DOS (образ IMG)
Создаем единственный раздел на первом HDD в FAT16 (Windows 3.1/3.11 FAT32 может не увидеть), создаем его как основной (Primary).
Делаем этот раздел активным:
Нажимаем правой кнопкой мыши по нужному разделу, в меню выбираем Advanced —> Set Active
В появившемся окне нажимаем Yes.
Второй форматируем под EXT2, но если вам не надо делать образ формата IMG, то можно и второй диск не создавать, и соответственно, не форматировать.
Применяем изменения кнопкой с изображением флага (на верхней панели).
Грузимся с минимального образа DOS (Minimal DOS Image IMG/GZ)
После успешной загрузки появляются окна Volkov Commander, нажимаем Alt+F2, выбираем диск D:
, он должен быть пустым. Текущий диск D:
это диск C:
виртуальной (или реальной) машины, текущий диск C:
— диск загрузочного образа.
Вводим команду, которая перенесет ядро системы на диск машины:
sys C: D:
В корневом каталоге диска D:
должно появиться три файла: IO.SYS
, MSDOS.SYS
и COMMAND.COM
Копируем на диск D:
каталоги DOS
и VC
, копируем в каталог DOS
файл HIMEM.SYS
(вход в каталоги — ENTER, выход — ENTER по двум точкам, переключение между вкладками TAB, копирование F5)
Далее надо создать в корневом каталоге диска D:
файл CONFIG.SYS
(SHIFT+F4) с таким содержимым:
DEVICE=C:\DOS\HIMEM.SYS
Эта команда загружает драйвер верхней памяти который позволяет DOS использовать память более 640 Кб.
Также, создаем файл AUTOEXEC.BAT
со следующим содержимым:
PATH C:\DOS;C:\VC
emm386.exe
smartdrv.exe
vc.com
где PATH C:\DOS;C:\VC
— перечисление каталогов, где DOS будет искать исполняемые файлы вызванные с командной строки или пакетных файлов. Лучше писать без пробелов после ;
для совместимости с более ранними версиями DOS.
emm386.exe
— менеджер расширенной памяти DOS
smartdrv.exe
— драйвер кэширования диска.
vc.com
— запуск файлового менеджера Volkov Commander
Перезагружаемся и грузимся с жесткого диска.
Если после загрузки все сделано правильно, то после загрузки появятся синие окошки Volkov Commander
Далее, я распаковал заранее припасенный бэкап.
В бэкапе был readme, в котором были указания, добавить в PATH
каталоги Windows и Norton Utilities (они к винде отношения не имеют, ну раз уж восстанавливать, то пусть будет полностью).
PATH C:\DOS;C:\VC;C:\NU;C:\WINDOWS;C:\WINDOWS\SYSTEM;C:\TOOLS
SET SYMANTEC=C:\NU
SET NU=C:\NU
emm386.exe
smartdrv.exe
vc.com
Выходим из VC (F10) и вводим команду
win
Ой, блин, кракозяблы:
По виду кодировка явно russian DOS (866), а русифицировать DOS я забыл.
Надо добавить русификатор, например, keyrus.com
, который можно скачать здесь. Файл keyrus.com
надо распаковать в один из каталогов PATH
и записать в AUTOEXEC.BAT
до вызова vc.com
:
...
smartdrv.exe
keyrus.com
vc.com
Переключение между английской и русской клавиатурой по F12
После загрузки выходим из файлового менеджера и вводим
win
Ага, теперь сообщение об ошибке можно прочитать:
Windows не может загрузить драйвер 32-битного доступа к диску:
Проще всего сразу отключить его в SYSTEM.INI
в директории Windows:
В секцию [386Enh]
нужно добавить параметр 32BitDiskAccess
, если его нет, и установить его в OFF
[386Enh]
...
32BitDiskAccess=OFF
...
Пробуем еще раз запустить винду.
ОШИБКА: Значение PageOverCommit слишком большое
…
Есть два пути решения:
Способ #1:
— Заменить в AUTOEXEC.BAT
smartdrv
из DOS на smarttdrv
, поставляемый в комплекте с Windows, т.е. smartdrv.exe
на C:\WINDOWS\smartdrv.exe
и перезагрузить машину.
— Добавить в SYSTEM.INI
в секцию [386Enh]
следующие строки:
MaxPagingFileSize=258048
PageOverCommit=1
MaxPhysPage=30000
Способ #2 (лучше):
— Заменить smartdrv аналогично первому способу.
— Заменить в CONFIG.SYS
путь к HIMEM.SYS
на HIMEM.SYS
, который поставляется вместе с Windows, т.е.:
DEVICE=C:\DOS\HIMEM.SYS
на
DEVICE=C:\WINDOWS\HIMEM.SYS
— Перезагрузить машину.
Иногда могут возникнуть тормоза при загрузке HIMEM.SYS
, выглядит это так:
На самом деле, эта надпись означает: HIMEM проверяет дополнительную память ...
Опцию проверки можно отключить (копия), добавив ключ /TESTMEM:OFF
, т.е.
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF
При старте Windows может выскочить ошибка файла подкачки.
На самом деле, файл подкачки (по-умолчанию это файл win386.swp
в директории Windows) портится довольно часто, в основном из-за ненадежности файловой системы FAT16, при отключении питания или холодных перезагрузках. Чтоб это предупреждение не мешало загрузке, файл подкачки можно превентивно удалять при загрузке DOS, добавив следующую команду в AUTOEXEC.BAT
(перед запуском VC
):
DEL C:\WINDOWS\WIN386.SWP >NUL
Если ошибки, связанные с файлом подкачки, продолжают повторяться, то можно его отключить. Ниже расскажу как.
1. Заходим в Панель управления.
2. Запускаем апплет Расширенный 386:
3. Жмем кнопку Виртуальная память:
4. Потом нажимаем Изменить и в следующем окне выбираем Отсутствует
5. Все сохраняем.
6. ТЕЛЕМАРКЕТ!
Некоторые программы могут глючить при отключенной подкачке, так что для максимальной совместимости можно настроить временный файл подкачки, который будет создаваться при старте Windows.
1. Добавляем в DOS поддержку IFS, для чего в CONFIG.SYS
добавляем строчку:
DEVICE=C:\WINDOWS\IFSHLP.SYS
2. Перезагружаем машину
3. Запускаем Windows, Запускаем апплет Расширенный 386.
4. Жмем кнопку Виртуальная память.
5. Потом нажимаем Изменить и в следующем окне выбираем Временный.
6. Если будут проблемы, можно попробовать отключить 32-битный доступ к дискам и файлам (чекбоксы внизу окна).
Ну там не целиком Офис, из комплекта есть только Word и Excel, и оба не запускаются с ошибкой, что нужно выйти из Windows и загрузить SHARE.EXE
, которого в комплекте урезанной версии DOS нет, но решение нашлось, она есть в DOS от Windows 98, которую я и использую в данном случае, так что ее можно оттуда и выдрать.
У меня есть небольшой образ «портативной» Win98, перетащу на виртуалку его DOS’овую часть целиком, благо, она небольшая.
Примечание: SHARE.EXE
— программа, которая позволяет другим программам DOS выполнять блокировки файлов, дабы предотвратить сбои и повреждения файлов при совместном доступе через сеть или в многозадачной среде Windows 3.x
Теперь можно добавить в AUTOEXEC.BAT
команду SHARE.EXE
и перезагрузить систему.
Word:
Excel:
Конечно, в Windows 3.x, как и в более новых версиях Windows, можно переключать раскладку мышью, нажимая на значок Pri/Sec
Pri — русская клавиатура, Sec — английская.
Но это не очень удобно, сразу не мог найти, как переключать раскладку с клавиатуры.
Оказывается, в данной конфигурации была установлена комбинация Правый Ctrl.
К сожалению, в Windows 3.x нет возможности поменять комбинацию клавиш, выбранную после установки в панели управления, придется редактировать C:\WINDOWS\SYSTEM.INI
.
В файле надо найти секцию [keyboard]
и параметр typeofswitch=XX
в данной секции. XX
— код комбинации клавиш.
Код | Комбинация клавиш |
1 | Первая раскладка — Левый Ctrl + Левый Shift, вторая — Правый Ctrl + Правый Shift |
2 | Два Shift’а одновременно |
3 | Правый Ctrl |
CONFIG.SYS
:
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF
DEVICE=C:\WINDOWS\IFSHLP.SYS
AUTOEXEC.BAT:
@ECHO OFF
PATH C:\DOS;C:\VC;C:\NU;C:\WINDOWS;C:\WINDOWS\SYSTEM;C:\TOOLS;C:\NC
SET SYMANTEC=C:\NU
SET NU=C:\NU
C:\DOS\emm386.exe
C:\WINDOWS\smartdrv.exe
C:\TOOLS\keyrus.com
C:\DOS\share.exe
del C:\WINDOWS\WIN386.SWP >nul
attrib -H bootlog.* >nul
del C:\BOOTLOG.*
del C:\CLEAN
C:\VC\vc.com