Один из юзеров 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).
![](https://i.imgur.com/xsiWL2v.png)
Делаем этот раздел активным:
Нажимаем правой кнопкой мыши по нужному разделу, в меню выбираем Advanced —> Set Active
![](https://i.imgur.com/ncDVqOs.png)
![](https://i.imgur.com/aFJ8Vf5.png)
В появившемся окне нажимаем Yes.
Второй форматируем под EXT2, но если вам не надо делать образ формата IMG, то можно и второй диск не создавать, и соответственно, не форматировать.
![](https://i.imgur.com/cc1nund.png)
Применяем изменения кнопкой с изображением флага (на верхней панели).
Грузимся с минимального образа DOS (Minimal DOS Image IMG/GZ)
После успешной загрузки появляются окна Volkov Commander, нажимаем Alt+F2, выбираем диск D:
, он должен быть пустым. Текущий диск D:
это диск C:
виртуальной (или реальной) машины, текущий диск C:
— диск загрузочного образа.
Вводим команду, которая перенесет ядро системы на диск машины:
sys C: D:
В корневом каталоге диска D:
должно появиться три файла: IO.SYS
, MSDOS.SYS
и COMMAND.COM
![](https://i.imgur.com/icfQlff.png)
Копируем на диск 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
![](https://i.imgur.com/T848zb3.png)
Далее, я распаковал заранее припасенный бэкап.
В бэкапе был 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
Ой, блин, кракозяблы:
![](https://i.imgur.com/ry3mdvB.png)
По виду кодировка явно russian DOS (866), а русифицировать DOS я забыл.
Надо добавить русификатор, например, keyrus.com
, который можно скачать здесь. Файл keyrus.com
надо распаковать в один из каталогов PATH
и записать в AUTOEXEC.BAT
до вызова vc.com
:
...
smartdrv.exe
keyrus.com
vc.com
Переключение между английской и русской клавиатурой по F12
После загрузки выходим из файлового менеджера и вводим
win
Ага, теперь сообщение об ошибке можно прочитать:
![](https://i.imgur.com/844PMFZ.png)
Windows не может загрузить драйвер 32-битного доступа к диску:
Проще всего сразу отключить его в SYSTEM.INI
в директории Windows:
В секцию [386Enh]
нужно добавить параметр 32BitDiskAccess
, если его нет, и установить его в OFF
[386Enh]
...
32BitDiskAccess=OFF
...
![](https://i.imgur.com/4TtIiPB.png)
Пробуем еще раз запустить винду.
ОШИБКА: Значение PageOverCommit слишком большое
…
![](https://i.imgur.com/yptyFoy.png)
Есть два пути решения:
Способ #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
, выглядит это так:
![](https://i.imgur.com/polkGGi.png)
На самом деле, эта надпись означает: HIMEM проверяет дополнительную память ...
Опцию проверки можно отключить (копия), добавив ключ /TESTMEM:OFF
, т.е.
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF
При старте Windows может выскочить ошибка файла подкачки.
![](https://i.imgur.com/o7O76YW.png)
На самом деле, файл подкачки (по-умолчанию это файл win386.swp
в директории Windows) портится довольно часто, в основном из-за ненадежности файловой системы FAT16, при отключении питания или холодных перезагрузках. Чтоб это предупреждение не мешало загрузке, файл подкачки можно превентивно удалять при загрузке DOS, добавив следующую команду в AUTOEXEC.BAT
(перед запуском VC
):
DEL C:\WINDOWS\WIN386.SWP >NUL
Если ошибки, связанные с файлом подкачки, продолжают повторяться, то можно его отключить. Ниже расскажу как.
![](https://i.imgur.com/4TC41Sm.png)
1. Заходим в Панель управления.
2. Запускаем апплет Расширенный 386:
![](https://i.imgur.com/X2laGnD.png)
3. Жмем кнопку Виртуальная память:
![](https://i.imgur.com/m3WoLZZ.png)
4. Потом нажимаем Изменить и в следующем окне выбираем Отсутствует
![](https://i.imgur.com/eqjQAYn.png)
5. Все сохраняем.
6. ТЕЛЕМАРКЕТ!
Некоторые программы могут глючить при отключенной подкачке, так что для максимальной совместимости можно настроить временный файл подкачки, который будет создаваться при старте Windows.
1. Добавляем в DOS поддержку IFS, для чего в CONFIG.SYS
добавляем строчку:
DEVICE=C:\WINDOWS\IFSHLP.SYS
2. Перезагружаем машину
3. Запускаем Windows, Запускаем апплет Расширенный 386.
4. Жмем кнопку Виртуальная память.
5. Потом нажимаем Изменить и в следующем окне выбираем Временный.
![](https://i.imgur.com/ux3fdBk.png)
6. Если будут проблемы, можно попробовать отключить 32-битный доступ к дискам и файлам (чекбоксы внизу окна).
Ну там не целиком Офис, из комплекта есть только Word и Excel, и оба не запускаются с ошибкой, что нужно выйти из Windows и загрузить SHARE.EXE
, которого в комплекте урезанной версии DOS нет, но решение нашлось, она есть в DOS от Windows 98, которую я и использую в данном случае, так что ее можно оттуда и выдрать.
![](https://i.imgur.com/VBP91fG.png)
У меня есть небольшой образ «портативной» Win98, перетащу на виртуалку его DOS’овую часть целиком, благо, она небольшая.
Примечание: SHARE.EXE
— программа, которая позволяет другим программам DOS выполнять блокировки файлов, дабы предотвратить сбои и повреждения файлов при совместном доступе через сеть или в многозадачной среде Windows 3.x
Теперь можно добавить в AUTOEXEC.BAT
команду SHARE.EXE
и перезагрузить систему.
Word:
![](https://i.imgur.com/m5khgeE.png)
![](https://i.imgur.com/1D4rIoy.png)
Excel:
![](https://i.imgur.com/SSbljuk.png)
![](https://i.imgur.com/jVPF4me.png)
Конечно, в Windows 3.x, как и в более новых версиях Windows, можно переключать раскладку мышью, нажимая на значок Pri/Sec
![](https://i.imgur.com/JWNH2HD.png)
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