¿Cómo se ve un sistema operativo antes de ejecutar un shell?
Depende del sistema operativo y de cómo lo configure. Linux se puede configurar para escribir texto de arranque en un dispositivo de consola, ya sea una consola de modo de texto, una consola de framebuffer o un puerto serie. También se puede configurar para que sea perfectamente silencioso. Algunos sistemas operativos / sistemas operativos pueden escribir información de diagnóstico en una memoria no volátil a la que se puede acceder poniendo el sistema en modo desarrollador, depuración o diagnóstico. Muchos sistemas operativos admiten la salida de información de inicio y diagnóstico a alguna forma de UART, que de alguna manera puede estar disponible en la unidad incluso si está oculta para el usuario (google "Agregar puerto serie a DD-WRT" para ver ejemplos de dónde los fabricantes ocultan puertos serie y cómo puedes llegar a ellos).
Un sistema operativo no tiene que tener una pantalla externa, es solo otro dispositivo para el sistema operativo.
¿Cómo se utilizaron los sistemas antes de que se desarrollara el primer shell (por ejemplo, UNIX a principios de la década de 1970)?
Esencialmente (y omitiendo mucho, pero esto debería darle la idea): cargó su programa, ya sea accionando interruptores en un panel o usando un lector de cinta de papel (estos dispositivos escribirían en la memoria directamente sin intervención de la CPU) y luego comenzarán La CPU con otro interruptor. La CPU ejecuta este programa, genera su salida y se detiene. Este es el procesamiento por lotes en lugar de procesamiento interactivo. Si deseaba ejecutar un programa diferente, tenía que volver a hacerlo.
Si una computadora ni siquiera puede aceptar comandos (no hay línea de comando), ¿cómo puede un usuario interactuar con ella?
No soy un experto en esta área, pero las computadoras viejas y viejas como Altair, IMSAI y PDP-8 y tales tenían interruptores en el panel frontal que controlaban directamente la CPU y podían leer y escribir memoria directamente sin intervención de la CPU.
¿Cuál es esta interfaz más básica?
Creo que la mayoría, si no todas las CPU modernas tienen un "puerto JTAG" que permite el mismo tipo de operaciones directas. Tenga en cuenta que durante mucho tiempo se esperaba que la mayoría de las computadoras tuvieran ROM o firmware que toma el control del sistema cuando se enciende antes de pasarlo a un sistema operativo. Aquí, pueden existir utilidades previas al arranque, o existe un mecanismo mínimo para cargar tales utilidades. Se puede acceder a algunos cargadores de arranque como U-Boot a través del puerto serie. Los cargadores de arranque no se ejecutan "detrás" del sistema operativo, cargan el sistema operativo, controlan manualmente y ya no se ejecutan.
¿Puedo ejecutar esta interfaz en un emulador de terminal o no hay forma de ir detrás de un shell?
No, necesitas una interfaz JTAG. Eso es sumergirse en el ámbito de la electrónica y admito que no sé mucho al respecto, excepto que mi GuruPlug viene con uno y puedo programar directamente el chip flash en la placa del GuruPlug con él, lo que significa que si algo mata al gestor de arranque en el GuruPlug, tengo una forma "independiente de la CPU" de actualizarlo.