Перевод статьи с сайта программиста и любителя старого железа Майкла Сломковски
Ко мне в руки попал старый MFM-диск, MiniScribe 2012, вместе с контроллером. MFM – это модифицированная частотная модуляция, и эту технологию часто ассоциируют с громоздкими жёсткими дисками из эры до IDE/Parallel ATA. Древние данные, хранящиеся на диске (в основном, документы MS Word 4.0) обладали определённой сентиментальной ценностью для предыдущего владельца, поэтому я решил их извлечь.
Жёсткий диск MiniScribe 2012
Жёсткий диск — MiniScribe 2012 MFM, произведён, вероятно, в 1984-м. Он стоял в IBM XT-совместимом компьютере. Этот монстр занимает два слота по 5.25" и весит более двух килограмм. Как указано в инструкции, объём его просто поражает воображение – целых десять мегабайт. Коннектор питания – стандартный Molex. Диск подключается к карточке контроллера двумя кабелями.
У диска MiniScribe в комплекте есть выделенный контроллер 8-bit ISA под названием WD1002A-WX1. Его спецификации легко найти. В текстовом файле содержатся инструкции по установке; также нам может пригодиться список совместимых устройств.
В теории контроллер способен работать с любым приводом, поддерживающим протоколы ST506/412, но на практике всё не так просто. Список повреждённых секторов должен храниться в ROM контроллера. Для этого требуется специальное ПО. Часто новый привод начинает работать после соединения его с новым контроллером и проведения низкоуровневого форматирования.
Контроллер диска WD1002A-WX1 MFM
У контроллера есть свой BIOS, который обычно называется Option ROM. Его вызывает BIOS материнской платы во время последовательности POST. Код регистрирует хук на прерывании INT 13 и в результате становится доступным из DOS при помощи стандартного вызова прерывания.
Устройство
К счастью у меня была старая материнка AT (ATC-1020) с ISA-слотами и процессором Pentium. На процессоре не было радиатора, но я установил джамперы на плате так, чтобы он работал на минимальной скорости, и приладил временный радиатор при помощи резинки. Также я поставил в плату модуль 32 MB DIMM RAM.
У меня не было графической VGA-карточки ни для PCI, ни для ISA, поэтому я использовал MDPA со специальным жёлтым монохромным дисплеем. Материнка его успешно распознало, что видно на фотографии.
Для проверки диска я отключил в BIOS IDE-контроллер и попытался загрузиться. Диск ожил и даже загрузился – ура!
Загрузка с PXE
Я предположил, что для того, чтобы поиграться с этим диском MiniScribe, мне понадобятся утилиты для DOS, поэтому я решил загрузиться с дискеты с MS-DOS. Поскольку с физическими дискетами возиться неудобно, я решил использовать сетевую загрузку. К счастью, у меня была сетевая карта PCI Ethernet с поддержкой PXE: 3com 3C905C-TXM
Чтобы загрузить образ дискеты по PXE, нужен специальный загрузчик. Один из популярных – PXELINUX, входящий в состав Syslinux, модуль syslinux из Arch Linux. На машине Linux нужно создать директорию для сетевой загрузки и скопировать туда
PXELINUX:
cp /usr/lib/syslinux/bios/{ldlinux.c32,memdisk,pxelinux.0} .
mkdir pxelinux.cfg
Затем создать текстовый файл pxelinux.cfg/default со следующим содержимым:
default dos
label dos
kernel memdisk
append initrd=fdboot.img
Образ загрузочной дискеты надо сохранить, как fdboot.img. Эти файлы можно скачать в виде ZIP-архива.
Популярный способ настройки загрузки по PXE – это dhcpd и TFTP daemons. Это сложная задача, но к счастью, я нашёл небольшой и простой в использовании сервер netboot (aur/netboot под Arch Linux). Он комбинирует возможности серверов DHCP и TFTP. В моём роутере я запускал его, не отключая DHCP server, поскольку они вроде не должны конфликтовать.
Запускаете netboot в директории, где лежат загрузочные файлы PXE. После DHCP-запроса сервер возвращает файл pxelinux.0*.
netboot {broadcast IP} {local machine IP} {IP for client machine} {MAC pattern}
{MAC pattern} должен соответствовать MAC-адресу сетевой карты клиента.
К примеру, мой адрес в локальной сети 192.168.1.0, IP моей машины с Linux 192.168.1.10 а MAC моей карты 3com заканчивается на 66:
netboot 192.168.1.255 192.168.1.10 192.168.0.20 -66
В качестве fdboot.img я использовал стандартный диск MS-DOS 6.22. Затем я всё это загрузил – и оно заработало!
Попытки скопировать данные с IDE-диска
Поскольку у MFM-контроллера собственный BIOS, диск было видно под MS-DOS. Но мне требовался накопитель, на который я бы мог скопировать файлы. Сначала я решил попробовать IDE-диск. У материнской платы было два IDE-канала. Я подключил диск на 40 Gb от Seagate. Система его обнаружила, но, к сожалению, после этого MFM перестал быть доступным. Игры с джамперами не помогли. Возможно, происходил какой-то конфликт между двумя дисковыми процедурами.
Копирование данных на USB-флэшку
Затем я попробовал другой подход. Я установил карту расширения PCI USB и драйверы USBASPI для MS-DOS. Теперь конфликтов не было, и мне удалось скопировать весь диск на USB-флэшку!
xcopy c: d: /e /k
Четыре карты расширения на материнке. Слева направо: графическая карта MDA, контроллер диска MFM, сетевая карта 3com Ethernet, карта расширения USB.
В результате у меня появилось более двух сотен файлов Microsoft Word для DOS, которые я преобразовал в RTF.
Автор: SLY_G