Che aspetto ha un sistema operativo prima dell'esecuzione di una shell?
Dipende dal sistema operativo e da come lo si configura. Linux può essere configurato per scrivere il testo di avvio su un dispositivo console, che sia una console in modalità testo, una console framebuffer o una porta seriale. Può anche essere configurato per essere perfettamente silenzioso. Alcuni sistemi operativi / sistemi operativi possono scrivere informazioni diagnostiche su una memoria non volatile a cui è possibile accedere impostando il sistema in modalità sviluppatore, debug o diagnostica. Molti sistemi operativi supportano l'invio di informazioni di avvio e diagnostiche a una qualche forma di UART, che in qualche modo potrebbe essere disponibile sull'unità anche se nascosta dall'utente (google "Aggiungi porta seriale a DD-WRT" per esempi di dove i produttori nascondono le porte seriali e come puoi raggiungerli).
Un sistema operativo non deve avere affatto uno schermo esterno: è solo un altro dispositivo per il sistema operativo.
Come venivano utilizzati i sistemi prima dello sviluppo della prima shell (ad esempio UNIX nei primi anni '70)?
Essenzialmente (e tralasciando molto, ma questo dovrebbe farti venire l'idea) - Hai caricato il tuo programma, premendo gli interruttori su un pannello o usando un lettore di nastri (questi dispositivi avrebbero scritto in memoria direttamente senza l'intervento della CPU) e poi avrebbero iniziato la CPU con un altro interruttore. La CPU eseguiva questo programma, generava il suo output e si fermava. Si tratta dell'elaborazione batch anziché dell'elaborazione interattiva. Se volevi eseguire un programma diverso, dovevi farlo.
Se un computer non può nemmeno accettare comandi (non esiste una riga di comando), come può un utente interagire con esso?
Non sono esperto in questo settore, ma vecchi e vecchi computer come Altair, IMSAI e PDP-8 e simili avevano interruttori sul pannello frontale che controllavano direttamente la CPU e potevano leggere e scrivere direttamente la memoria senza l'intervento della CPU.
Qual è questa interfaccia di base?
Credo che la maggior parte se non tutte le moderne CPU hanno una "porta JTAG" che consente lo stesso tipo di operazioni dirette. Tieni presente che per molto tempo ci si aspetta che la maggior parte dei computer disponga di ROM o firmware che prendono il controllo del sistema quando viene acceso prima di trasferirlo a un sistema operativo. Qui possono esistere utility pre-boot o esiste un meccanismo minimo per caricare tali utility. Alcuni bootloader come U-Boot sono accessibili tramite la porta seriale. I bootloader non funzionano "dietro" il sistema operativo, caricano il sistema operativo, il controllo manuale su di esso e quindi non sono più in esecuzione.
Posso eseguire questa interfaccia in un emulatore di terminale o non c'è modo di andare dietro una shell?
No, hai bisogno di un'interfaccia JTAG. Si sta tuffando nel regno dell'elettronica e ammetto che non ne so molto, tranne per il fatto che il mio GuruPlug ne ha uno e posso programmare direttamente il chip flash sulla scheda del GuruPlug con esso - il che significa che se qualcosa uccide il bootloader sul GuruPlug, ho un modo "indipendente dalla CPU" di riprogrammarlo.