Ressurreição do UNIX V2 “Beta” de 1972
(tuhs.org)- A análise forense das fitas s1/s2 do DMR permitiu montar um sistema UNIX funcional; a s1 é a DECtape UNIX INIT com o kernel, e a s2 contém a maior parte dos arquivos da distribuição
- O kernel da s1 é o kernel UNIX legível por máquina mais antigo já identificado até agora, situado entre o V1 e o V2, e consegue executar tanto
a.outdo V1 quanto do V2 - O tamanho do core do usuário aumentou para 16 KiB (8K words), como no V2, mas a syscall table é igual à do kernel V1 e do unix-jun72, então não inclui syscalls do V2
- Como as condições de boot são exigentes, apenas o emulador PDP-11/20 do aap conseguiu inicializar o kernel; SIMH e Ersatz-11 travam antes do prompt de login
- A imagem pública de disco RF inclui apenas os arquivos s1/s2, pode dar boot no emulador do aap e, pelo comportamento do
init(7), parece que/usrficava no RF
UNIX V2 “Beta” restaurado a partir das fitas s1/s2
- A análise forense das fitas DMR mostrou que foi possível montar um sistema funcional a partir das fitas s1/s2
- DMR tapes é o conjunto de fitas analisado
- A fita s1 é a UNIX INIT DECtape que contém o kernel
- A fita s2 contém a maior parte dos arquivos da distribuição
- O kernel da s1 é o kernel UNIX legível por máquina mais antigo já identificado até agora, e fica entre o V1 e o V2
- O kernel unix-jun72 sem modificações suporta apenas
a.outdo V1 - O kernel da s1 consegue executar por padrão tanto
a.outdo V1 quanto do V2 - O tamanho do core do usuário aumentou de 8 KiB (4K words) para 16 KiB (8K words)
- O kernel unix-jun72 sem modificações suporta apenas
- A syscall table é a mesma do kernel V1 e do unix-jun72
- Não inclui syscalls do V2
- Do ponto de vista de syscalls, ele é mais próximo do V1, mas em tamanho de core e execução de binários V2 tem características do V2, por isso é tratado como “V2 beta”
- No sistema, é possível executar
ed,ccea.out- Na sessão de exemplo, um programa
hello world!é escrito, compilado e executado
- Na sessão de exemplo, um programa
Restrições de boot e imagem de disco RF
- O ambiente capaz de dar boot é limitado
- Apenas o emulador PDP-11/20 do aap conseguiu inicializar o kernel
- SIMH e Ersatz-11 param antes de chegar ao prompt de login
- O processo de instalação original consistia em dar boot pela s1 e depois restaurar os arquivos a partir da s2
- Como o emulador do aap não oferece suporte a TC11, é difícil instalar diretamente das fitas s1/s2
- A configuração real foi feita criando uma imagem de disco RF de forma indireta
- Os arquivos da fita s1 foram extraídos e colocados em um disco RF vazio
- Depois, o kernel unix-jun72 foi instalado e o boot via RF foi feito no SIMH
- Em seguida, os arquivos restantes da s2 foram extraídos
- Por fim, um hex editor foi usado para substituir o kernel unix-jun72 pelo kernel da s1
- A imagem RF gerada contém apenas arquivos vindos de s1/s2
- Pode ser baixada em Research-UNIX-V2-Beta
- Há também um link direto para download de s1s2unix_rf.img
- Essa imagem dá boot no emulador do aap, mas não no SIMH
- O programa
init(7)não monta o RK em/usr- Esse comportamento sugere que
/usrestava armazenado no RF
- Esse comportamento sugere que
1 comentários
Comentários no Hacker News
Lembrei de uma piada que ouvi em uma palestra do Brian Kernighan. Era a história de que Ken Thompson criou um editor de texto, um compilador B e o esqueleto de gerenciamento de arquivos de entrada e saída em 3 semanas, e que isso acabou virando o UNIX
O ponto da piada é que hoje somos um pouco menos eficientes do que naquela época
Pelo que me lembro, a esposa dele levou as crianças para a Inglaterra, então Ken pôde fazer o que quisesse. Claro que ele já tinha muita experiência antes mesmo de escrever o primeiro UNIX
Para um programador que tem um projeto na cabeça, pode valer a pena tentar. Passar 3 semanas em algum lugar como uma cabana, longe do trabalho e da família, levando os livros e documentos necessários e desligando a internet. Se possível, usar um feature phone e ver até onde consegue chegar
Mas teria que ser um projeto já bastante pensado e com um pouco de código já escrito. Pensando melhor, um projeto de baixo nível que dependa muito pouco de bibliotecas externas é o que melhor se encaixa nesse experimento. Se o projeto se apoiar em uma pilha de bibliotecas de terceiros, é fácil ficar travado quando algo der problema sem internet; nesse sentido, Ken também escolheu um projeto adequado
Tem uma hora, e Thompson conta muitas histórias interessantes. Kernighan faz muito bem o papel de deixar Thompson falar
Queria saber se trabalhavam como em um horário das 9h às 17h, ou se entravam em modo goblin, deixando outras partes da vida de lado para terminar
Mas os 20% restantes se estendem como uma cauda longa e, em geral, viram um esforço enorme que acaba minando a vontade
Fascinante a ponto de até Spock ficar impressionado. Quero aprender a compilar um emulador de PDP-11 no Mac
Depois, vale tentar instalar a distribuição 2.11BSD. Ela é bem documentada e veio depois de muita da confusão do Unix inicial já ter passado. Mais tarde, também foi muito divertido brincar com o RT-11, e cheguei a escrever alguns aplicativos pequenos nele
Funciona bem também no Apple Silicon
Muito bom
É a primeira vez que vejo pessoas usando ed para trabalho real
Também fico curioso para saber quem mais teve que lidar com ed. Recentemente precisei acessar um sistema muito antigo que não tinha vi, então criei meu próprio editor; se alguém precisar de um editor para sistemas antigos, pode entrar em contato. Ele não é nada sofisticado
O trabalho das pessoas e dos pesquisadores que criaram esse software é impressionante, e deixo meu respeito aos verdadeiros engenheiros
Não lembro os detalhes, mas, ao criar um arquivo novo, ele era executado com
make. Se você digitassemake love, ele imprimianot warantes de entrar no editorDepois disso nunca mais usei, e, alguns anos depois, quando passei a poder usar Xenix, também não usei ed. vi era uma alternativa muito mais sensata
Alguém disse que o teclado na tela do Android era tão horrível para vi que usava ed no celular, e, como isso realmente fazia sentido, resolvi tentar. No celular, ed era um pouco pior que vi, mas os dois eram ruins de maneiras diferentes
No HeliBoard, digitar comandos do ed no teclado era muito mais fácil do que no vi, mas algumas vezes fiquei confuso com o estado do buffer de um jeito que não teria acontecido no vi. Talvez melhorasse com prática, mas acabei voltando para o vi
ed funciona, mas pelos padrões modernos não é divertido. Ainda assim, comparado à saída em teletipo, usá-lo em uma tela devia ser incrível
Além disso, um 3B2 de cerca de 1 MIP conseguia atender aproximadamente 20 usuários simultâneos
Uso ed com frequência e, na verdade, usei ontem. Eu precisava editar algo sem limpar a tela
Antes disso, também criei um editor para imagens de cartões armazenadas em disco, mas era bem primitivo
De vez em quando gosto de dar uma olhada na lista de e-mails tuhs. É legal ver nomes como Ken Thompson e Rob Pike, além de vários outros menos conhecidos que participaram dos primórdios do UNIX e da computação
Parece arqueologia de software
Assim como a cultura produzida e consumida nas redes sociais, ou muitos outros aspectos da cultura da internet, é algo totalmente efêmero e descartável. Não há história nem futuro.
SaaS não é simplesmente fechado; muitas vezes, na prática, está literalmente preso a uma única instalação. Até daria para arquivar e inicializar em outro lugar, mas fazer isso anos depois, sem a equipe original, seria uma tarefa muito maior do que inicializar o Unix de 1972 em um emulador num PC moderno.
Aquele Unix tinha manuais e foi projetado para ser instalado e executado em vários ambientes de distribuição. SaaS é mais próximo de uma bagunça que só o autor consegue distribuir — não necessariamente por intenção, mas porque não há forças evolutivas pressionando para que seja feito de outro modo.
Muitas vezes ele também fica entrelaçado internamente com outros SaaS, de modo que talvez seja preciso arquivar e restaurar o estado inteiro da nuvem, como se fosse um único computador global em que software proprietário está sendo editado no próprio lugar.
Alguém teria alguma referência sobre o que significam aquelas permissões de arquivo? Consigo deduzir mais ou menos, mas não encontrei nada sobre permissões do Unix v2.
A saída do
lsparece familiar, mas a partesdrwrwé estranha para mim.https://gitlab.com/segaloco/v1man/-/blob/master/man1/stat.1?...
Em
sdrwrw, a primeira coluna ésoul, significando small ou large. A segunda coluna éd,x,uou-, significando diretório, executável, setuid ou nada. O restante são os bits de leitura/escrita para proprietário e não proprietário.Hello world com 1328 bytes? Ficou inchado!
Achei que fosse um compilador Rust inicial, mas não consegui encontrar referências. Talvez fosse Go.
Edit: encontrei. 'rust-lang/rust#13871: "hello world" contains Lovecraft quotes' https://github.com/rust-lang/rust/issues/13871
printfem menos de 1 KiB no i386. Hello world comwritefica abaixo de 170 bytes.Muito legal. Será que dá para entrar nesse portal do tempo e viver numa realidade alternativa?
Arrume um adaptador para conectar ao computador e rode o *nix que quiser no simh. Como referência, recomendo https://jstn.tumblr.com/post/8692501831.
Depois de fazer funcionar, empurre a máquina host para trás da mesa ou para algum lugar fora de vista e você poderá viver como se fosse 1980.
Ao recuperar fitas RF, até olhando só arquivos de texto simples dá para ver o espaço de buffer que arquivos DOS ou
.isonão usam.Mesmo na distribuição 2.11 BSD, o tiling básico e o gerenciador de janelas precisam ser instalados no SO nativo. Por isso você acaba usando KDE ou algum gerenciador de janelas do X11.