Wie sieht ein Betriebssystem aus, bevor eine Shell ausgeführt wird?
Hängt vom Betriebssystem ab und davon, wie Sie es konfigurieren. Linux kann so konfiguriert werden, dass Starttext auf ein Konsolengerät geschrieben wird, unabhängig davon, ob es sich um eine Konsole im Textmodus, eine Framebuffer-Konsole oder eine serielle Schnittstelle handelt. Es kann auch so konfiguriert werden, dass es vollkommen leise ist. Einige Betriebssysteme / Systeme schreiben möglicherweise Diagnoseinformationen in einen nichtflüchtigen Speicher, auf den zugegriffen werden kann, indem das System in den Entwickler-, Debug- oder Diagnosemodus versetzt wird. Viele Betriebssysteme unterstützen die Ausgabe von Boot- und Diagnoseinformationen an UARTs, die auf dem Gerät möglicherweise auch dann verfügbar sind, wenn sie für den Benutzer nicht sichtbar sind (google "Seriellen Anschluss zu DD-WRT hinzufügen", um Beispiele dafür zu finden, wo Hersteller serielle Anschlüsse verbergen und wie Sie können zu ihnen kommen).
Ein Betriebssystem muss überhaupt kein externes Display haben - es ist nur ein weiteres Gerät für das Betriebssystem.
Wie wurden Systeme verwendet, bevor die erste Shell entwickelt wurde (z. B. UNIX in den frühen 1970er Jahren)?
Im Wesentlichen (und viel weglassen, aber das sollte Sie auf die Idee bringen) - Sie haben Ihr Programm geladen, entweder durch Umlegen von Schaltern auf einem Bedienfeld oder mithilfe eines Papier-Band-Lesegeräts (diese Geräte würden direkt ohne Eingreifen der CPU in den Speicher schreiben) und dann starten die CPU mit einem anderen Schalter. Die CPU würde dieses Programm ausführen, seine Ausgabe erzeugen und anhalten. Dies ist eine Stapelverarbeitung im Gegensatz zu einer interaktiven Verarbeitung. Wenn Sie ein anderes Programm ausführen wollten, mussten Sie dies erneut ausführen.
Wenn ein Computer nicht einmal Befehle annehmen kann (es gibt keine Befehlszeile), wie kann ein Benutzer damit interagieren?
Ich bin kein Experte auf diesem Gebiet, aber alte, alte Computer wie der Altair, IMSAI und PDP-8 und solche hatten Schalter auf der Vorderseite, die die CPU direkt steuerten und Speicher ohne Eingreifen der CPU direkt lesen und schreiben konnten.
Was ist das einfachste Interface?
Ich glaube, die meisten, wenn nicht alle modernen CPUs haben einen "JTAG-Port", der die gleiche Art von direkten Operationen ermöglicht. Denken Sie daran, dass von den meisten Computern seit langem erwartet wurde, dass sie über ROM oder Firmware verfügen, die die Kontrolle über das System übernehmen, wenn es eingeschaltet wird, bevor es an ein Betriebssystem übergeben wird. Hier können Pre-Boot-Dienstprogramme vorhanden sein, oder es gibt einen minimalen Mechanismus zum Laden solcher Dienstprogramme. Auf einige Bootloader wie U-Boot kann über die serielle Schnittstelle zugegriffen werden. Bootloader laufen nicht "hinter" dem Betriebssystem, sie laden das Betriebssystem, steuern es von Hand und laufen dann nicht mehr.
Kann ich diese Schnittstelle in einem Terminalemulator ausführen oder gibt es keine Möglichkeit, hinter eine Shell zu gelangen?
Nein, Sie benötigen eine JTAG-Schnittstelle. Das taucht in den Bereich der Elektronik ein und ich gebe zu, dass ich nicht sehr viel darüber weiß, außer dass mein GuruPlug mit einem ausgeliefert wird und ich den Flash-Chip auf dem GuruPlug-Board damit direkt programmieren kann - das heißt, wenn etwas den Bootloader auf dem tötet GuruPlug, ich habe eine "CPU-unabhängige" Möglichkeit, es zurückzuspielen.