Renace UNIX V2 "Beta" de 1972
(tuhs.org)- Se realizó un análisis forense de s1/s2 de las cintas DMR para construir un sistema UNIX funcional; s1 es una UNIX INIT DECtape que contiene el kernel y s2 contiene la mayor parte de los archivos de la distribución
- El kernel s1 es el kernel de UNIX legible por máquina más antiguo confirmado hasta ahora; se sitúa entre V1 y V2, y puede ejecutar tanto archivos
a.outde V1 como de V2 - El tamaño del core de usuario aumentó a 16 KiB (8K words) como en V2, pero la tabla de syscalls es igual a la de V1 y al kernel
unix-jun72, por lo que no incluye las syscalls de V2 - Debido a requisitos de arranque exigentes, solo el emulador PDP-11/20 de aap logró iniciar el kernel; SIMH y Ersatz-11 se detienen antes del prompt de login
- La imagen pública del disco RF solo incluye archivos de s1/s2, puede arrancar en el emulador de aap y, por el comportamiento de
init(7), parece que/usrestaba en RF
UNIX V2 “Beta” restaurado desde las cintas s1/s2
- El análisis forense de las cintas DMR permitió construir un sistema funcional a partir de las cintas s1/s2
- DMR tapes es el conjunto de cintas que se analizó
- La cinta s1 es una UNIX INIT DECtape que contiene el kernel
- La cinta s2 incluye la mayor parte de los archivos de la distribución
- El kernel s1 es el kernel de UNIX legible por máquina más antiguo confirmado hasta ahora, y se ubica entre V1 y V2
- El kernel
unix-jun72sin modificar solo soportaa.outde V1 - El kernel s1 puede ejecutar por defecto tanto
a.outde V1 como de V2 - El tamaño del core de usuario aumentó de 8 KiB (4K words) a 16 KiB (8K words)
- El kernel
- La tabla de syscalls es la misma que en V1 y en el kernel
unix-jun72- No incluye las syscalls de V2
- Desde el punto de vista de las syscalls está más cerca de V1, pero por el tamaño del core y la ejecución de binarios V2 tiene rasgos de V2, por lo que se considera una “V2 beta”
- En el sistema se pueden ejecutar
ed,ccya.out- En la sesión de ejemplo se escribe, compila y ejecuta un programa
hello world!
- En la sesión de ejemplo se escribe, compila y ejecuta un programa
Restricciones de arranque e imagen de disco RF
- El entorno capaz de arrancarlo es limitado
- Solo el emulador PDP-11/20 de aap logró iniciar el kernel
- SIMH y Ersatz-11 se detienen antes de llegar al prompt de login
- El proceso de instalación original consistía en arrancar desde s1 y luego restaurar los archivos desde s2
- Como el emulador de aap no soporta TC11, instalar directamente desde las cintas s1/s2 es difícil
- La configuración real se hizo creando indirectamente una imagen de disco RF
- Se extrajeron los archivos de la cinta s1 y se colocaron en un disco RF vacío
- Luego se instaló el kernel
unix-jun72y se arrancó desde RF en SIMH - Después se extrajeron los archivos restantes de s2
- Al final, se reemplazó el kernel
unix-jun72por el kernel s1 usando un editor hexadecimal
- La imagen RF generada solo contiene archivos provenientes de s1/s2
- Puede descargarse desde Research-UNIX-V2-Beta
- Se ofrece un enlace de descarga directa a s1s2unix_rf.img
- Esta imagen arranca en el emulador de aap, pero no en SIMH
- El programa
init(7)no monta RK en/usr- Este comportamiento sugiere que
/usrestaba almacenado en RF
- Este comportamiento sugiere que
1 comentarios
Opiniones de Hacker News
Me acordé de un chiste que escuché en una charla de Brian Kernighan. La historia era que Ken Thompson creó un editor de texto, un compilador de B y el esqueleto de gestión de archivos de entrada/salida en 3 semanas, y que eso terminó convirtiéndose en UNIX.
La gracia del chiste es que hoy somos un poco menos eficientes que entonces.
Recuerdo que su esposa se llevó a los niños a Inglaterra, así que Ken pudo hacer lo que quisiera. Por supuesto, ya tenía muchísima experiencia incluso antes de escribir el primer UNIX.
Si eres un programador con un proyecto en la cabeza, vale la pena intentarlo. Irte 3 semanas a una cabaña o algo parecido, lejos del trabajo y la familia, llevar los libros y documentos necesarios y desconectarte de internet. Si se puede, usar un feature phone y ver hasta dónde llegas.
Eso sí, tendría que ser un proyecto que ya hayas pensado bastante y para el que incluso tengas algo de código escrito. Pensándolo mejor, un proyecto de bajo nivel que dependa muy poco de bibliotecas externas encaja mejor con este experimento. Si tu proyecto depende de un montón de bibliotecas de terceros, es fácil quedar bloqueado sin internet cuando surge un problema; Ken también eligió el proyecto adecuado.
Dura una hora y Thompson cuenta muchas historias interesantes. Kernighan hace un gran trabajo dejándolo hablar.
Quisiera saber si trabajaban como en una jornada de 9 a 5, o si dejaban de lado otras partes de su vida y entraban en modo goblin para terminarlo.
Pero el 20% restante se alarga como una cola larga y, por lo general, termina siendo un esfuerzo enorme que te quita las ganas.
Fascinante, hasta Spock quedaría impresionado. Me gustaría aprender a compilar un emulador de PDP-11 en Mac.
Después sería buena idea intentar instalar la distribución 2.11BSD. Está bien documentada y salió después de que pasara gran parte del caos de los primeros Unix. Luego también fue muy divertido jugar con RT-11; de hecho escribí algunas apps pequeñas.
También funciona bien en Apple Silicon.
Muy bueno.
Es la primera vez que veo gente usando ed para trabajo real.
También me da curiosidad quién más tuvo que lidiar con ed. Hace poco tuve que entrar a un sistema muy antiguo que no tenía vi, así que hice mi propio editor; si alguien necesita un editor para sistemas antiguos, puede contactarme. No es muy sofisticado.
El trabajo de quienes crearon este software y de los investigadores es asombroso; mis respetos para los verdaderos ingenieros.
No recuerdo los detalles, pero para crear un archivo nuevo se ejecutaba con
make. Si escribíasmake love, imprimíanot warantes de entrar al editor.Después nunca volví a usarlo, y años más tarde, cuando pude usar Xenix, tampoco usé ed. vi era una alternativa mucho más sensata.
Alguien dijo que el teclado en pantalla de Android era tan horrible para vi que usaba ed en el teléfono, y como en realidad tenía razón, lo probé. En el celular, ed era un poco peor que vi, pero ambos son malos de formas distintas.
Con HeliBoard, escribir comandos de ed en el teclado era mucho más fácil que con vi, pero varias veces me confundí por el estado del buffer, algo que con vi no me habría pasado. Quizá con práctica mejore, pero al final volví a vi.
ed funciona, pero según estándares modernos no es divertido. Aun así, comparado con la salida de una teletipo, usarlo en pantalla debe haber sido enorme.
Además, una 3B2 de alrededor de 1 MIP podía soportar unos 20 usuarios simultáneos.
Uso ed con frecuencia; de hecho lo usé ayer, porque tenía que editar algo sin limpiar la pantalla.
Antes de eso también hice un editor para imágenes de tarjetas almacenadas en disco, pero era muy primitivo.
A veces me gusta revisar la lista de correo de tuhs. Es genial ver nombres como Ken Thompson y Rob Pike, junto con muchos otros menos conocidos que participaron en los primeros tiempos de UNIX y de la computación.
Parece arqueología de software
Como la cultura que se produce y consume en redes sociales, o muchas otras facetas de la cultura de internet, es completamente efímera y desechable. No tiene historia ni futuro.
SaaS no solo es cerrado; de hecho, muchas veces está prácticamente atado, literalmente, a una única instalación. Se podría archivar y arrancar en otro lado, pero hacerlo años después sin el equipo original sería una tarea mucho mayor que arrancar Unix de 1972 en un emulador de PC moderno.
Ese Unix tenía manuales y fue diseñado para instalarse y ejecutarse en varios entornos de distribución. SaaS se parece más a una mezcolanza que solo sus autores pueden desplegar, no necesariamente por intención, sino porque no hay fuerzas evolutivas que presionen para hacerlo de otra manera.
A menudo también está entrelazado internamente con otros SaaS, así que quizá habría que archivar y restaurar el estado completo de la nube, como si fuera una sola computadora global donde se edita software propietario en vivo.
¿Alguien puede pasarme una referencia sobre qué significan esos permisos de archivo? Más o menos lo puedo inferir, pero no encontré nada sobre los permisos de Unix v2.
La salida de
lsse ve familiar, pero la partesdrwrwme resulta extraña.https://gitlab.com/segaloco/v1man/-/blob/master/man1/stat.1?...
En
sdrwrw, la primera columna essol, y significa small o large. La segunda columna esd,x,uo-, y significa directorio, ejecutable, setuid o ninguno. El resto son los bits de lectura/escritura del propietario y de los no propietarios.¿Hello world ocupa 1328 bytes? ¡Qué inflado!
Pensé que era un compilador temprano de Rust, pero no encuentro referencias. Quizá era Go.
Edición: lo encontré. 'rust-lang/rust#13871: "hello world" contains Lovecraft quotes' https://github.com/rust-lang/rust/issues/13871
printfen i386 en menos de 1 KiB. Hello world conwriteocupa menos de 170 bytes.Genial. ¿Puedo entrar en ese portal temporal y vivir en una realidad alternativa?
Consigue un adaptador para conectarla a tu computadora y ejecuta el *nix que quieras en simh. Como referencia, recomiendo https://jstn.tumblr.com/post/8692501831.
Una vez que lo tengas funcionando, mete la máquina host detrás del escritorio o en algún lugar donde no se vea, y podrás vivir como en 1980.
Si recuperas una cinta RF, incluso con solo mirar archivos de texto simples se revela espacio de búfer que DOS o los archivos
.isono usan.Incluso en la distribución 2.11 BSD, el mosaico básico y el gestor de ventanas deben instalarse en el OS nativo. Por eso terminas usando KDE o algún gestor de ventanas X11.