Presentación
El siguiente artículo está escrito en forma de receta. Si tienes un sistema con el compilador gcc, como por ejemplo GNU/Linux, sólo tendrás que copiar y pegar lo que pongo en los recuadros y en menos de 10-15 minutos tendras un sistema ITS funcional.
Una recomendación es que cuando lo tengas, hagas una copia de seguridad, ya que trabajaremos sobre una imagen de disco, y si se ésta se estropea podremos restaurar con la copia. Otro motivo es porque la imagen (de la cual doy una URL) está ‘retirada’ de internet, así que si en algún momento desaparece de donde está, podría costar trabajo volverla a localizar.
En otro artículo describiré con mas detenimiento las características de este OS y como realizar distintas tareas, este artículo tratará unicamente la instalación. Utilizaremos klh10 que es un emulador de PDP-10.
Instalación
– Creación de directorios para la instalación:
#export KLH10_HOME=$HOME/ITS mkdir -p $HOME/ITS cd $HOME/ITS
– Cogemos la última version del emulador klh10 de Ken Harrenstien:
wget http://klh10.trailing-edge.com/klh10-2.0a.tgz wget http://klh10.trailing-edge.com/klh10-2.0a-aux.tgz
– Y cogemos la imagen de disco de un sistema ITS totalmente funcional:
wget http://free.babolo.ru/src/PI-ITS-RP06.0-dbd9.bz2
– Descomprimimos los ficheros:
tar xfz klh10-2.0a.tgz tar xfz klh10-2.0a-aux.tgz bunzip2 PI-ITS-RP06.0-dbd9.bz2
– Ahora vamos a compilar el emulador. NOTA IMPORTANTE: hay que usar el gcc-3.4, con las versiones de gcc 4 no funciona. Lo más normal es que si tienes una distribución GNU/Linux reciente, tengas instalado un gcc versión cuatro, por lo que tendrás que instalar la versión tres. Para verificar la versión de gcc:
gcc --version gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
– Si no tenemos el 3.4, podremos instalarlo sin problemas ya que las dos versiones pueden coexistir y cuando acabemos lo podremos desinstalar, ésto lo hacemos como root si estas en una distribución Debian GNU/Linux o similar:
sudo apt-get install gcc-3.4
– Ahora vamos a modificar el Makefile para que use nuestro compilador gcc-3.4:
mv klh10-2.0a/src/Makefile.mk klh10-2.0a/src/Makefile.mk.orig cat klh10-2.0a/src/Makefile.mk.orig | sed s/cc/gcc-3.4/g > klh10-2.0a/src/Makefile.mk
– Una vez que lo tenemos modificado, lo compilamos, en nuestro caso es un linux x86, así que nos vamos al directorio apropiado, y ejecutamos el make.
cd klh10-2.0a/bld/lnx86 make base-ks-its
Cuando terminemos de compilar, copiaremos todos los ficheros ejecutables a nuestro directorio de trabajo (sin hacer ‘make install’).
cp dpimp dptm03 dprpxx kn10-ks tapedd udlconv vdkfmt wfconv wxtest $HOME/ITS ##make install cd $HOME/ITS cp -p klh10-2.0a/run/ksits/* .
– Si queremos usar la red, hay que ejecutar el emulador como root, o darle setuid al driver de red:
sudo chown root dpimp; chmod 4750 dpimp
Ejecución
– Listo, ya estamos preparados para la primera ejecución. Voy a intercalar explicaciones precedidas de tres guiones (—)
./kn10-ks klh10-pi.ini KLH10 V2.0A release (MyITS) built May 10 2008 10:40:00 ... ... ... Data: 65470, Symwds: 0, Low: 01, High: 0777266, Startaddress: 0144430 KLH10> KLH10> ; go 774000 ; to start DDT, else "go" to start ITS KLH10> KLH10> [EOF on klh10-pi.ini] --- saltamos al DDT KLH10> go 774000 --- la primera ejecucion es algo complicada Starting KN10 at loc 0774000... --- cuando se pare (NO aparece el prompt) escribimos 'its' y le damos al 'enter' --- responderá poniendo una U despues de ITS --- a continuación le damos al 'esc' y pulsamos la G, el DDT responde con $G ITSU $G Salvager 260 .TEMP. has no files, User File Directory DELETED [dpimp: Using default interface "eth0"] [dpimp: ifc "eth0" => ether 0:1d:92:62:cf:6f] [dpimp: inet 172.24.96.3] [dpimp: netmask 255.255.255.0] [dpimp: net 172.24.96.0] [dpimp: HOST: 199.34.53.51] [dpimp: gwdef 199.34.53.50] [dpimp: no native ARP entry, assuming shared ifc] THE KS-10 CLOCK HAS BEEN RESET, IF THE TIME CANNOT BE DETERMINED FROM THE NETWORK, YOU MAY HAVE TO :PDSET PI ITS 1647 IN OPERATION PI ITS 1647 SYSTEM JOB USING THIS CONSOLE. LOGIN TARAKA 0 Attention! Attention! The time could not be set because: No host responded. It will be necessary for someone to set the time manually by logging in and running :PDSET. TARAKA NETIME IOTLSR PI ITS 1647 SYSTEM JOB USING THIS CONSOLE. --- listo, ya podemos abrir sesion, para ello pulsar ^Z (control z) PI ITS.1647. DDT.1545. TTY 0 You're all alone, Fair share = 0% (ITS does not know the date, so messages cannot be reviewed right now.) --- y ya estamos en la 'shell' de ITS. --- podemos ver el contenido del directorio con :listf sys :listf sys PI SYS FREE BLOCKS #0=17615 L .FASL DEFS LISP .FASL DEFS L 2OPS2 OPS SAIL 2OPS2 OPS 0 :MSGS TIMES 4 ! 3/21/102 22:18:38 0 ATSIGN CHAOS 1 ! 1/16/81 16:34:48 0 ATSIGN DDT 40 ! 3/18/90 12:02:11 0 ATSIGN DEVICE 1 ! 12/18/89 19:51:44 L ATSIGN DRAGON CHANNA ATSIGN TARAKA 0 ATSIGN HACTRN 40 ! 8/14/90 02:07:30 L ATSIGN LISP SYS PURQIO > 0 ATSIGN ODDT 40 ! 11/26/88 16:23:57 0 ATSIGN ODEVIC 1 ! 9/19/88 21:13:37 0 ATSIGN OPWORD 28 ! 4/1/87 04:24:35 L ATSIGN PEEK SYS TS PEEK 0 ATSIGN PWORD 28 ! 8/2/89 21:54:13 ... 0 TS TTYSWP 1 ! 11/11/76 17:18:17 0 TS TYPE8 1 ! 11/14/83 05:05:13 0 TWXBTS 29 35 ! 3/25/81 13:01:09 0 TWXDFS 8 2 ! 3/24/81 21:52:07 --- Podremos ejecutar :version *:version PI ITS.1647. DDT.1545. TTY 0 --- Tambien podremos ejecutar :emacs *:emacs (Please Log In) EMACS Editor, version 162 - type Help(^_H) for help.
– Para salir del emulador :
---pulsamos ^\ (esto es Control-AltGr-\) y escribimos shutdown KLH10> shutdown Continuing KN10 at loc 05600... SWITCH 0 IS UP PI LEVEL 7 BUGDDT. TYPE <ALTMODE>P TO CONTINUE. YOU ARE NOW IN DDT. BUGPC/ CAIA CLQBRT+3 $Q-2/ SKIPE 8SWIT0 [HALTED: FE interrupt] KLH10> ---volvemos a pulsar ^\ (esto es Control-AltGr-\) y escribimos quit KLH10> quit Are you sure you want to quit? [Confirm]y Shutting down...Bye!
– Para las siguienes ejecuciones, se puede directamente teclear go el el prompt de KLH10>
KLH10> go Starting KN10 at loc 0144430... Salvager 260 .TEMP. has no files, User File Directory DELETED --- esperar que se normalize y ya podemos abrir sesión, para ello pulsar ^Z (control z)
Configuración básica:
– Para que el sistema funcione correctamente, tenemos que por lo menos configurar la fecha/hora. El modo es mediante :pdset
, a continuación se muestra como configurar la fecha 10 de mayo de 2008, y las 16:40. Viendo como encajan los numeros es fácil deducir el formato.
:pdset (Please Log In) ___002 PDSET IOTLSR PDSET.114 Please don't use this program unless you know how. You are certain to break something if you happen to hit the wrong key. Type Control-Z to exit, or ? for a reminder of the commands. 20C 080510D 164000T !. 141427/ 777651,,662253 772754,,224545 ___002 141426/ 3722 3730 ___002 16:40:00 IT IS NOW 4:40:00 PM EDT, SATURDAY, MAY 10,2008 q
NOTAS:
Este emulador es muy complejo, hay que leerse los docs 🙂
Más adelante escribiré más sobre como hacer determinadas cosas, por ejemplo, como configurar la red, o recompilar el kernel.
Los comandos en ITS van precedidos de dos puntos (:) y puedes pedir ayuda mediante 😕 o :info
Enlaces de interés:
Documentación:
http://zane.brouhaha.com/~healyzh/sysdoc/sysdoc.htm
El manual de referencia :
ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-161A.pdf
Manual de DDT:
http://victor.se/bjorn/its/ddt.html
Manual de Maclisp;
http://www.maclisp.info/pitmanual/
Conferencia de Stallman donde habla sobre ITS, PDP10, emacs, etc ..
http://www.gnu.org/philosophy/stallman-kth.html