What does an operating system look like before a shell is run?
Depende do sistema operacional e de como você o configura. O Linux pode ser configurado para gravar texto de inicialização em um dispositivo de console, seja um console de modo de texto, console de buffer de quadro ou uma porta serial. Também pode ser configurado para ser perfeitamente silencioso. Alguns SOs / sistemas podem gravar informações de diagnóstico em uma memória não volátil que pode ser acessada colocando o sistema no modo de desenvolvedor, depuração ou diagnóstico. Muitos sistemas operacionais suportam a saída de informações de inicialização e diagnóstico para alguma forma de UART, que pode de alguma forma estar disponível na unidade mesmo se ocultado do usuário (google "Adicionar porta serial ao DD-WRT" para exemplos de onde os fabricantes ocultam portas seriais e como você pode chegar até eles).
Um sistema operacional não precisa ter um monitor externo - é apenas outro dispositivo para o sistema operacional.
How were systems used before the first shell was developed (e.g. UNIX in the early 1970s)?
Essencialmente (e deixando de fora muito, mas isso deve lhe dar a idéia) - Você carregou seu programa, tanto ligando interruptores em um painel ou usando um leitor de fita de papel (esses dispositivos gravariam diretamente na memória sem intervenção da CPU) e então inicie a CPU com outro switch. A CPU executaria este programa, geraria sua saída e pararia. Este é o processamento em lote, em oposição ao processamento interativo. Se você quisesse executar um programa diferente, teria que fazer isso.
If a computer cannot even accept commands (there is no command line), how can a user interact with it?
Não sou especialista nesta área, mas computadores antigos e antigos como o Altair, IMSAI e PDP-8 e outros tinham comutadores no painel frontal que controlavam diretamente a CPU e podiam ler e gravar diretamente a memória sem a intervenção da CPU.
What is this most basic interface?
Eu acredito que a maioria das CPUs modernas, se não todas, tem uma "porta JTAG" que permite o mesmo tipo de operações diretas. Lembre-se de que, durante muito tempo, esperava-se que a maioria dos computadores possuísse ROM ou firmware que assumisse o controle do sistema quando ele fosse ligado antes de ser transferido para um sistema operacional. Aqui, os utilitários de pré-inicialização podem existir ou existe um mecanismo mínimo para carregar tais utilitários. Alguns gerenciadores de inicialização, como o U-Boot, podem ser acessados pela porta serial. Os gerenciadores de inicialização não executam "por trás" do sistema operacional, carregam o sistema operacional, controlam a mão e, em seguida, não estão mais em execução.
Can I run this interface in a terminal emulator or is there no way going behind a shell?
Não, você precisa de uma interface JTAG. Isso é mergulhar no reino da eletrônica e eu admito que não sei muito sobre isso, exceto que o meu GuruPlug vem com um e eu posso programar diretamente o chip flash na placa do GuruPlug com ele - o que significa que se algo mata o gerenciador de inicialização no GuruPlug, eu tenho uma maneira "independente da CPU" de exibi-lo de volta.