Boot manager для 486-го компьютера

Всё началось с того, что меня несколько расстраивало отсутствие возможности загружаться с дисковода на старой плате Socket 3. CD-приводы в то время ещё не были распространены и разработчики BIOS даже не задумывались о предоставлении такой опции. Да и операционные системы распространялись на дискетах. Чуть позднее, когда ОС (в основном конечно Windows) стало удобнее устанавливать с диска, чем с пары десятков дискет, придумали так называемые загрузочные floppy, содержавшие драйвер дисковода и передававшие ему управление непосредственно. Но это на мой взгляд костыль и некрасиво. Я начал искать более изящное решение и даже в какой-то момент собирался купить SCSI-контроллер за много денег и привод к нему, но нашлась альтернатива.

Этой альтернативой был Plop. На самом деле я даже не задумывался об использовании загрузчиков, но когда мне сказали про Plop, я решил, что это весьма здравая идея. Он умеет загружаться из кучи источников и загружать практически любые устройства, кроме usb-дисководов. Кроме того он имеет удобный интерфейс и множество настроек. Подробнее почитать о нём можно на официальном сайте.


gs90lnxfzypdxqgtkooq8fm7meo.jpeg

Оставалось только решить с чего загружать Plop. Самым очевидным вариантом была дискета, но это снова костыль. А больше компьютер (не считая диска, естественно) ни с чего грузиться и не умеет. И вот тут на помощь пришла, как ни странно, сетевая карта.

Да, да, сетевая карта. Дело в том, что некоторые из них имеют функцию сетевой загрузки с некоторого сервера и для этого несут на себе свой собственный BIOS. В моём случае это карта Realtek rtl8139.


hhlfvytzsj2e3_vf7bvc5xrqyls.jpeg

Панелька предназначена для микросхемы памяти объёмом до 64 килобайт. Никто не заставляет записывать именно BootROM, это может быть любой код. Содержимое ПЗУ просто исполняется после загрузки основного BIOS. Так вот, Plop умеет загружаться с сетевой карты, но для этого его нужно подготовить.

Начнём с конфигурации загрузчика. В этом нам поможет готовая программа, которую можно взять здесь. Я использовал GUI-версию. В ней нужно выбрать бинарный файл, предназначенный для записи в OptionROM. В конфигурации я сразу переключил режим вывода на текстовый (потому что графический сильно тормозил), отключил анимации. Для удобства использования лучше поставить галочки INT19 и Startup Hotkey. Теперь Plop будет загружаться только при нажатии комбинации Ctrl+A, практически как Boot Menu на современных компьютерах. По вкусу можно установить таймер и устройство по умолчанию.


luzubbaoqlekockbgfaw8xpsdde.png

Далее требуется нажать кнопку «Configure plpbt.bin» и образ готов к подготовке к прошивке. Его нужно сконвертировать в ROM-файл. Для этого потребуется ещё один инструмент c сайта загрузчика. К сожалению он консольный. Параметрами программе нужно передать имя образа, сконфигурированного на предыдущем шаге и имя конечного файла. Так же требуется задать идентификаторы вендора и самого устройства. На сайте уже есть готовый пример для rtl8139. Для других карт идентификаторы можно считать из родного BootROM автоматически с помощью ключа -grabid. Необязательный ключ -nodisable. Без него Plop будет каждый раз при включении предлагать отключить ПЗУ сетевой карты, но нам это не нужно, поскольку меню и так будет загружаться только с сочетанием клавиш.


a9yncdqlz-kh6qbgtmzfrgsyura.png

Теперь можно переходить к прошивке. Я использую программатор MiniPro, но подойдёт любой другой, который поддерживает EEPROM и Flash до 64 килобайт. ПЗУ можно взять 27, 28 или 29 серий нужного объёма. Процесс прошивки проходит как обычно. Выбрать микросхему, выбрать образ и нажать на кнопку записи.


ojv8hblw1kda3dyg9yj27xknn2c.png

После всех этих действий остаётся вставить микросхему памяти в панельку на карте, а карту вставить в слот на материнской плате. Единственное, возможно потребуется включить BootROM в конфигурации самой карты. Я сделал это с помощью программы для DOS, поставляющейся вместе с драйвером.


kc-9t_hpr23i1kfuk5zm9fvyiji.gif


Если всё сделано правильно, после определения дисков и флоппи появится строка сообщающая, что BootROM успешно загружен и предложение нажать Ctrl+A для загрузки в меню.

© Habrahabr.ru