# Remote Initial Program Load

Remote Initial Program Load (Abkürzung: RIPL; deutsch: Fernes einleitendes Programmladen) bezeichnet den Vorgang des Startens eines Betriebssystems über das Netzwerk von einem Server, auf dem ein RIPL-Dienst aktiviert ist, welcher unter den Netzwerkbetriebssystemen LAN Manager, LAN Server, Windows NT Server und Novell Netware unterstützt wird.

## IBM LAN Server

Der IBM LAN Server bietet über das 802.2/DLC-Protokoll den Clients (sogenannten RIPL-Requestern) die Möglichkeit, die Betriebssysteme DOS oder OS/2 über das lokale Netzwerk (meist Token Ring) zu laden.
Der Server überwacht das lokale Netz hierbei und überprüft die Anfragen einzelner Stationen mit den Einträgen in der Zuordnungstabelle RPL.MAP.

## RPL und DOS

Während der Startphase des DOS-Betriebssystems ergibt sich normalerweise das Problem, dass der zuvor über das Netzwerk geladene RPL-Code (RPL = Remote Program Load) im noch nicht allozierten konventionellen Speicher liegt (typischerweise am oberen Ende), aber trotzdem nicht überschrieben werden darf, während das frisch geladene Betriebssystem seine eigenen Verwaltungsstrukturen erst noch aufbauen muss. Normalerweise schützt sich der RPL-Code dadurch vor dem Überschreiben durch das Betriebssystem, dass er unter anderem die Kontrolle über die BIOS-Funktion INT 12 übernimmt, die von DOS zur Ermittlung der vorhandenen Real-Mode-Speichergröße aufgerufen wird.
Das bringt verschiedene Schwierigkeiten insbesondere auf modernen DOS-Systemen mit sich, bei denen freie Speicherbereiche im Adapterbereich oder im Adressraum des Video-RAMs für Treiber und Teile des Betriebssystems genutzt werden können, um DOS-Anwendungen mehr freien konventionellen Speicher zur Verfügung zu stellen.
Mit verschiedenen Tricks können diese Probleme zum Teil umgangen werden, aber der RPL-Code muss dafür tief in die Interna des geladenen Betriebssystems eingreifen, was nicht in allen Fällen sauber funktioniert, insbesondere, wenn auch noch andere geladene Treiber im Spiel sind, die ähnliche Methoden verwenden.
Zur Absicherung des Verfahrens untersucht DOS ab MS-DOS/PC DOS 5.0 und DR DOS 6.0 beim Start den Code des INT-2F-Interruptvektors nach der Kennung "RPL" und ruft gegebenenfalls. die Funktion INT 2F/AX=4A06h auf, um vom RPL-Code die wahre Größe des verfügbaren Speichers zu erfahren und diesen praktisch durch die Hintertür in die Liste der von DOS allozierten Speicherbereiche aufzunehmen und damit vor dem Zugriff durch andere zu kapseln. Der RPL-Code ist aber immer noch dafür verantwortlich, sich am Ende der Bootphase sauber aus dem System zu entfernen.
DR DOS unterstützt neben dem oben beschriebenen RPL-Interface auch eine erweiterte Form des Verfahrens namens RPLOADER, die mehr Flexibilität bietet. Erkennt DR DOS das Vorhandensein eines RPL-Codes mit der Kennung "RPLOADER" (statt nur "RPL"), so sendet das DOS-BIOS zusätzlich nach Erreichen bestimmter Stages innerhalb der Bootphase spezielle INT 2F/AX=12FFh/BX=0005h Broadcasts an den RPL-Code, um diesem die Möglichkeit zu geben, sich geeignet im Speicher zu relozieren (um den später für DOS-Anwendungen nutzbaren Speicher nicht durch den "im Weg liegenden" RPL-Code zu reduzieren), sich gar tiefer in das System einzuklinken oder auch um zusätzliche "Aufräumarbeiten" durchzuführen bzw. sich sauber aus dem System zu entfernen. Neben der Erhöhung der Kompatibilität, bestimmte Aktionen über ein definiertes Interface und zu definierten Zeitpunkten innerhalb der Bootphase abwickeln zu können, eine Reduzierung und Fragmentierung des Speichers zu vermeiden und so den für Anwendungen nutzbaren Speicher zu erhöhen und den RPL-Code nach Ende der Bootphase sauber aus dem System zu entfernen, kann das Interface auch dazu dienen, DR DOS als Task unter Host-Betriebssystemen wie Concurrent DOS zu laden.

## Geschichte

Das ferne Laden für DOS-Workstations über Images wurde schon 1990 vom IBM LAN Server 1.2 durch den Dienst PCDOSRPL unterstützt. Seit dem LAN Server 2.0 (1992) war es auch möglich OS/2-Stationen (ab Version 1.30.1) zu nutzen.