Schreiben eines Bootloaders ohne Bootloader


8

Ich habe eine Frage, auf die ich wirklich keine eindeutige Antwort finden kann. Lassen Sie mich zunächst sagen, dass ich nicht nach einem schrittweisen Tutorial frage oder gar etwas vorhabe. Ich bin nur Neugierig.

Ich habe den ganzen Tag über die Entwicklung von Betriebssystemen und deren Neugestaltung nachgelesen. Ich habe die Theorie ziemlich fest im Griff. Es gibt jedoch einen Schritt, auf den ich scheinbar keine Antwort finde.

Wie würde man vor der Existenz eines voll funktionsfähigen, mit Werkzeugen gefüllten Betriebssystems überhaupt einen einfachen Bootloader für einen Computer schreiben, der keinen Bootloader oder sonst etwas in seinem Bootsektor hat? Was wäre der allererste Schritt nach dem Erwerb eines Computers mit dem Nötigsten? (Dh Bildschirm, Tastatur, Prozessor, RAM, Festplatte, Diskette)


Antworten:


9

Historisch gesehen gab es verschiedene Möglichkeiten:

  • Überhaupt kein Betriebssystem. Die ausführbare Datei wurde von der ersten Karte, Banddatei oder was auch immer geladen.
  • Os fest im Magnetkernspeicher codiert. Kerne waren Permanentmagnete anstelle von einfachem Ferrit, abhängig von der N / S-Ausrichtung des Magneten war es eine Eins oder Null. Bei den Computern der Raumschiffe Gemini und Apollo wurden alle Programme auf diese Weise "gestrickt".
  • Erster Sektor von der Festplatte. Dies war auf "Mini" -Computern wie dem PDP-11 ziemlich Standard. Der Computer war fest verdrahtet, um den ersten Titel von der ersten Festplatte zu lesen und den Code auszuführen, wenn er einen EOF-Marker traf.
  • Benutzerdefiniertes Startgerät. Die IBM Mainframes der zweiten Generation verfügten über eine dedizierte 12-Zoll-Diskette zum Laden in ein "Mikrocode" -Betriebssystem. Welches dann irgendwo nach dem echten Betriebssystem auf der Festplatte gesucht hat. Ich habe auch Mikros mit dedizierten Kassettenlaufwerken gesehen, um das Betriebssystem zu laden. Die Bediener mussten das Band zurückspulen oder "umdrehen".

  • BIOS. Ein minimales Betriebssystem ist im ROM gespeichert und der Prozessor ist fest verdrahtet, um den ROM-Code beim "Einschalten" auszuführen. Das ROM erhält dann von überall das echte Betriebssystem. So funktionieren so ziemlich alle modernen Computer. Was das ROM tatsächlich tut, variiert von Prozessor zu Prozessor. Itel-Boxen verfügen im Allgemeinen über ein sehr ausgeklügeltes BIOS-Programm, das jeder Prozessor- "Generation" gewidmet ist. Unix-Boxen haben im Allgemeinen ein viel einfacheres BIOS. Sun / Oracle-Boxen laden bekanntermaßen einen "FORTH" -Interpreter, der dann ein einfaches Skript zum Laden von Solaris ausführt.


2
Kippschalter nicht vergessen! Viele frühe Computer hatten eine Reihe von Kippschaltern, so dass Sie manuell einen Pre-Bootloader laden konnten, um von Diskette oder Band zu lesen, um den tatsächlichen Bootloader und das Betriebssystem zu laden
Earlz

@Earlz - das habe ich vergessen. Auf einem pdp-11 können Sie die Binäradresse des Startgeräts mithilfe der Bedienfeld-Kippschalter einstellen.
James Anderson

@Earlz Es gibt eine berühmte Geschichte darüber, wie Paul Allen (Mitbegründer von Microsoft) einen Bootloader für seinen und Bill Gates 'BASIC-Interpreter für den Altair im Flugzeug schrieb und ihn dann von Hand einschaltete. (Siehe en.wikipedia.org/wiki/Altair_BASIC , das nicht ganz die Details enthält, aber die Geschichte erzählt.)
Ryan Reich

4

In den wirklich alten Tagen (wie dem IBM 650 oder PDP1) war es notwendig, Werte über Schalter auf der Vorderseite in den Speicher einzugeben. Beim Betrachten von Bildern sehr früher Computer sahen Sie zwei Lichtreihen - Adresse und Daten. Auf einem 16-Bit-Computer liefen 16 davon über, normalerweise farbcodiert in Gruppen von drei oder vier für Oktal bzw. Hex.

Die Schaltfläche 'Zurücksetzen' würde den 'Adress'-Zähler auf Null setzen. Man könnte dann die Schalter auf dem Datenbus auf den gewünschten Wert einstellen und die Schaltfläche 'Datenschreiben' umschalten. Dies würde die Schaltereinstellungen unter Adresse 0 in den Speicher schreiben. Es gab Kippschalter nach oben und unten, mit denen Sie zur nächsten oder vorherigen Adresse wechseln konnten. Sie können auch die Schalter für die Adresse einstellen und auf "Adressschreiben" klicken. Was auch immer an dieser neuen Adresse war, würde auf den 16 Datenlichtern angezeigt.

Typischerweise würde man mit dieser Technik eine Leseschleife zum Auslesen von Werten aus einem Kartenleser oder Papierband einschalten. Dies würde gerade ausreichen, um einen größeren Codeblock zu laden, um mit dem Laden des Betriebssystems oder der Anwendung fortzufahren. Zu dieser Zeit hatten solche Computer 4K bis 16K Wörter (oder 8K bis 32K Bytes), so dass solche Lader für moderne Standards winzig waren. Eine Leseschleife besteht möglicherweise nur aus drei oder fünf 16-Bit-Wörtern.

Abbildung auf der Vorderseite


3

Sie benötigen eine Möglichkeit, einen ROM- oder EEPROM-Chip zu erstellen, der auf dem Motherboard installiert werden kann und den Bootloader enthält. Es gibt wirklich eine Reihe von Startschritten, angefangen bei internen Überprüfungen durch die verschiedenen Chips (CPU, Grafikkarte usw.) bis hin zur Busaktivierung und -erkennung (der PCI-e-Buscontroller lokalisiert alles, was damit verbunden ist, und weist IDs usw. zu). Dann sucht das Motherboard nach einem Boot-ROM und führt diesen Code aus, der wiederum die BIOS-Boot-Reihenfolge findet und diese nach einem passenden Gerät durchsucht und dann den Booter von diesem lädt. Was wiederum ein Betriebssystem lädt.

Die ursprüngliche Boot-Kette bestand aus Schaltern, die das ROM bildeten, und später aus Schaltern zum Programmieren des RAM usw. bis hin zu modernen mehrstufigen Bootloadern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.