На Хабре уже есть статья про Zalman ZM-VE500, написанная системным инженером ЦОД. Это одно из немногих устройств, которое содержит в себе эмулятор оптического привода и позволяет иметь под рукой сразу коллекцию ISO-образов операционных систем. Вот только любителям ретрокомпьютинга оно может преподнести несколько неприятных сюрпризов. Подробности — под катом.
В чём проблема?
Создатели устройства честно предупреждают, что поддержка Windows есть только для версий 2000 и старше. Если же вы попробуете установить какую-нибудь Windows 98, то столкнётесь с проблемой. Сбой происходит на этапе установки драйвера для CD-привода. Система сообщает, что CD-приводы не найдены, после чего загрузка прекращается. То же поведение характерно для официальных дистрибутивов Windows 95/98/98SE/Me и сборок на их основе. Пару недель назад, готовя статью про Compaq TC1000, мы случайно обнаружили способ обойти это ограничение и теперь можем им поделиться.
Загрузка установщика старых операционных систем вроде Windows 98 состоит из нескольких этапов. Вначале запускается MS-DOS, который в процессе подгружает базовые драйверы вроде HIMEM.SYS для получения доступа к оперативной памяти за пределами основной области (пресловутые 640 Кб, их явно всем не хватило). После этого происходит попытка загрузить драйвер для CD-привода, который потребуется для первоначального доступа к инсталлятору.
В стандартном дистрибутиве включены некоторые драйверы ATAPI CD-ROM, но они рассчитаны на то, чтобы работать с устройствами на шинах IDE и SCSI. Поскольку MS-DOS официально не поддерживается, искать драйверы на сайте производителя бесполезно. Оставалась некоторая надежда, что подойдёт какой-либо универсальный драйвер. Увы, но большая часть старых сборок вроде Reanimator 2001 содержала в себе лишь какой-нибудь OAKCDROM.SYS, с которым Zalman не работал.
Среди сборок нам попался знаменитый Hiren’s BootCD версии 15.2. Выбрав загрузку в DOS, мы с изумлением обнаружили, что система спокойно подгрузила какой-то драйвер, плюнув надписью Loading CDROM Driver 9F0800CD1, и присвоила дисководу букву X. Поскольку Hiren’s BootCD создаёт Ramdrive, можно было спокойно отмонтировать его из виртуального привода и заменить на любой другой. Так получилось успешно запустить установку Windows 98. Оставалось лишь два вопроса: какой конкретно драйвер подошёл и как его вытащить отдельно?
Разбираем Hiren’s BootCD
Создатель этой великолепной сборки очень активно использовал архиватор 7-Zip, чтобы максимально экономить дисковое пространство. Получился этакий Кощей Бессмертный: ISO-образ > 7z-архив > IMG-образ > 7z-архив > драйверы. Среди внушительной коллекции DOS-драйверов был обнаружен добрый десяток sys-файлов, каждый из которых мог оказаться тем самым решением, позволяющим применять Zalman в DOS.
Чтобы достать файлы из образа, мы воспользовались самым простым вариантом: присоединили ISO-образ к виртуалке с установленной операционной системой, загрузились с него и закинули архив DRIVERS.7Z на виртуальный HDD для дальнейшей распаковки и изучения. Альтернативно можно было распаковать содержимое 7z-архива и примонтировать IMG-образ к флоппи-дисководу в VirtualBox или PCem.
Мы перебрали каждый из найденных драйверов и выяснили, что для Zalman ZM-VE500 подходит usbcd2.sys [TEAC USB CD-ROM Device Driver]. Теперь, когда мы точно знаем, что это работает, рассказываем про то, как легко создать собственный загрузочный ISO-образ с базовыми системными файлами и этим драйвером. Здесь бо́льшую часть работы за нас проделали его авторы, выложив базовый набор файлов с простым скриптом сборки.
Скачиваем архив bootcd.zip и распаковываем в любую удобную папку. Внутри будет три каталога (CD, Floppy, Tools), скрипт сборки Build-ISO.cmd и документация в readme.txt. Заходим в директорию Floppy и закидываем туда usbcd2.sys. Открываем CONFIG.SYS с помощью любого текстового редактора, например Notepad++, и заменяем строку
DEVICE=OAKCDROM.SYS /D:CDDRIVER /L:X
на
DEVICE=USBCD2.SYS /D:CDDRIVER
Сохраняем файл, возвращаемся в вышестоящую папку и запускаем скрипт сборки Build-ISO.cmd:
Видим, что всё прошло успешно, и закрываем это окно. Сборщик делает ровно две вещи: вначале он при помощи bfi.exe создаёт образ дискеты в формате IMA из директории Floppy, делая его загрузочным посредством файла boot.dat, а затем утилитой mkisofs.exe формирует образ компакт-диска с файловой системой El Torito (спецификация Phoenix/IBM Bootable CD-ROM Format), включая в него собранный ранее образ флоппи-диска. Теперь в папке bootcd лежит свежеиспечённый ISO-образ с именем BootCD.iso.
Обратите внимание, что в некоторых инструкциях встречается, что помимо этого драйвера надо добавить usbaspi.sys. Если в виртуальной машине такое срабатывает нормально, то в случае с Zalman ZM-VE500 при подключении к реальным устройствам после успешного распознавания девайса возникают ошибки вроде The following file is missing or corrupted: COMMAND.COM.
Закидываем его в директорию _ISO на Zalman, переводим бокс в режим виртуального привода, подключаем к компьютеру и монтируем образ. В меню загрузки выбираем Dos:
USB CD-ROM Device driver Version 1.04
Device name : CDDRIVER
ZALMAN Virtual CD 3E40
Driver install successful
MSCDEX Version 2.25
Copyright © Microsoft Corp. 1986-1995. All rights reserved.
Drive X: = Driver CDDRIVER unit 0
*** XMS RAMdisk v1.91 (FU - 08/98): Installed as drive R:.
CuteMouse v1.9.1 alpha 1 [FreeDOS]
Installed at PS/2 port
X: CD DRIVE
R: RAM DRIVE
На базе такого образа теперь можно сделать собственные сборки установки старых операционных систем, включив туда FDISK для управления разделами на жёстком диске, FORMAT для их форматирования и дополнительные драйверы, необходимые для конкретного оборудования. Увы, у нас нет возможности проверить работоспособность этого решения на предыдущих версиях боксов Zalman и IODD, но можно предполагать, что там это также сработает.
Отдельно стоит отметить, что больше всего в Zalman VE500 не хватает эмуляции Floppy-дисков, что могло бы существенно упростить жизнь любителям старого «железа». Это особенно актуально, например, для установки OS/2. Первоначальная загрузка там предполагается с трёх дискет, и только потом выполняется чтение с CD-диска. В этом плане боксы от IODD значительно удобнее, поскольку поддерживают форматы VHD, VMDK и IMA, помимо ISO.
Вместо заключения
Конечно, подобный бокс — лишь один из способов обеспечить установку операционной системы на ретроустройствах без CD-привода. Можно попробовать создать загрузочную флешку с Ventoy или сделать простой PXE-сервер на базе Verkot Serva. Есть и более экзотический вариант — превратить старый рутованный Android-телефон в эмулятор привода с помощью DriveDroid, но корректно работает это далеко не всегда.
Понятное дело, что для современных компьютеров оптические носители ушли в прошлое, и сейчас практически единственный вариант — использование флешек в качестве загрузочных устройств. Но вот для старых девайсов, лишённых CD-привода, эмуляция была и остаётся наиболее удобным средством для установки ОС или же выполнения резервного копирования.
Расскажите нам о своём опыте использования боксов от Zalman и IODD. Какой из них наиболее удобен и чем? Ждём вас в комментариях.