Удаленная загрузка программы (RIPL или RPL) — это протокол для запуска компьютера и загрузки его операционной системы с сервера через сеть. Такой сервер работает под управлением сетевой операционной системы, такой как LAN Manager, LAN Server, Windows NT Server, Novell NetWare, LANtastic, Solaris или Linux.
Сервер IBM LAN Server
IBM LAN Server позволяет клиентам (запрашивающим RIPL) загружать операционные системы DOS или OS/2 по протоколу 802.2/DLC из локальной сети (часто Token Ring). Поэтому сервер сравнивает запросы клиентов с записями в своей таблице RPL.MAP. IBM LAN Server 1.2 через протокол PCDOSRPL поддерживал удаленную загрузку рабочих станций DOS через загрузочные образы еще в 1990 году. IBM LAN Server 2.0 представил удаленную загрузку станций OS/2 (начиная с OS/2 1.30.1) в 1992 году.
RPL и DOS
Чтобы удаленная загрузка DOS работала, загрузчик RPL загружается в память клиента по сети до запуска операционной системы. Без особых мер предосторожности операционная система может легко перезаписать код RPL во время загрузки, поскольку код RPL находится в нераспределенной памяти (обычно в верхней части доступной обычной памяти). Код RPL скрывается и тем самым защищает себя от перезаписи, перехватывая INT 12h и уменьшая объем памяти, предоставляемый этой службой BIOS, до ее собственного размера. INT 12h используется DOS для запроса объема доступной памяти при инициализации собственной схемы распределения памяти в реальном режиме. Это вызывает проблемы в более современных системах DOS, где операционная система может использовать свободные диапазоны адресов реального режима для перемещения своих частей и высокой загрузки драйверов, чтобы объем доступной обычной памяти был максимально увеличен. Как правило, RPL-код должен был использовать различные «хитрые уловки» операционной системы и конкретной версии, чтобы выжить в этом очень динамичном процессе загрузки и позволить DOS восстановить контроль над памятью, занятой RPL, после завершения беспроблемной.
Начиная с MS-DOS / PC DOS 5.0 и DR DOS 6.0, операционная система проверяет, перехватил ли RPL INT 2Fh, ища подпись «RPL» в коде, указанном INT 2Fh. При наличии DOS вызывает INT 2Fh / AX = 4A06h, чтобы извлечь объем памяти из RPL и интегрировать его в свое собственное распределение памяти, тем самым защищая код RPL от перезаписи другими программами. Тем не менее, по-прежнему трудной обязанностью RPL было чистое удаление себя из памяти в конце фазы загрузки, если это возможно.
RPLOADER и DR-DOS
В дополнение к этому интерфейсу «RPL» DR DOS поддерживает более гибкое расширение с именем «RPLOADER». Если DR DOS обнаруживает присутствие RPLOADER, а не только RPL, он начинает выдавать сообщения INT 2F / AX = 12FFh / BX = 0005h на определенных критических этапах процесса загрузки. Код RPL может использовать их для перемещения себя в памяти (во избежание конфликтов с другим резидентным программным обеспечением или во избежание фрагментации памяти при освобождении памяти RPL в дальнейшем) или для подключения и лучшей интеграции с операционной системой, чтобы выполнять свои окончательные задачи по очистке четко определенным и скоординированным образом с помощью надежного и поддерживаемого внутреннего интерфейса, а не просто хаков. Это помогает улучшить совместимость без необходимости адаптации кода RPL к каждой новой версии операционной системы, а также позволяет избежать ненужной фрагментации памяти и, таким образом, увеличивает доступную память для запуска программ DOS. Интерфейс также можно использовать для запуска DR DOS в качестве задачи в операционной системе хоста, такой как Concurrent DOS.