*** OCTOPUS INSTALLATION*** 0. - INSTALL INFERNO The recommended version now is the google code version. Install a subversion client. In debian and MacOSX you need svn-client so apt-get install svn-client Search for inferno-os google code in google. Go to source and get it: svn checkout http://inferno-os.googlecode.com/svn/trunk/ /inferno Now you need the fonts from a regular inferno installation, which is just copying the /fonts directory. 1.- INSTALLING THE PC ON A SHARED PLAN 9 / INFERNO SYSTEM. From now on, local machine is isis. Note that inferno's root is shared with other users, therefore you have to bind your personal files before running inferno. Choose a directory to place your personal configuration files. My directory is $home/octopus. Make the directory and copy these ndb files from the shared installation and customize them: mkdir $home/octopus/ cp /usr/inferno/lib/ndb/octopus $home/octopus/ndb.octopus cp /usr/inferno/lib/ndb/local $home/octopus/ndb.local Create a new directory called keydb. This directory contains the files needed to run the authentication server for our octopus. Create a file named 'keys'. The file will store the users accounts. (see chapter 2). mkdir $home/octopus/keydb mkdir $home/octopus/keys mkdir $home/keyring cp /dev/null $home/octopus/keydb/keys chmod 600 $home/octopus/keydb/keys Create a script to bind your files and run Inferno. This is my script, $home/bin/rc/inferno: ---- #!/bin/rc bind -b /usr/inferno/Plan9/386/bin /bin bind -b /usr/ /usr/inferno/usr/ bind -c $home/octopus/keydb /usr/inferno/keydb bind -c $home/octopus/keys /usr/inferno/mnt/keys bind -c $home/octopus/ndb.local /usr/inferno/lib/ndb/local bind -c $home/octopus/ndb.octopus /usr/inferno/lib/ndb/octopus emu -g1850x1150 /dis/wm/wm.dis /dis/wm/logon.dis -u $user ---- Run an inferno using the script above, so your configuration files come from your $home/octopus instead of the shared inferno. 2.- INSTALLING THE PC Run Inferno (don't forget to run wm/logon -u username). 2.1- CONFIGURING THE NETWORK Configure a /lib/ndb/local file following the inferno documentation. If you are using the script provided above, /lib/ndb/local inside inferno is actually $home/octopus/ndb.local outside and /lib/ndb/local/octopus corresponds to $home/octopus/ndb.octopus. Copy a /lib/ndb/octopus file or copy/paste this text: tcp=op port=16699 tcp=rop port=17000 sys=pc ip=IP_OF_THE_PC #i.e. 212.128.4.125 Where ip is the ip of the machine which is going to act as your PC. Include /lib/ndb/octopus in the ndb/local, database= .... file=/lib/ndb/octopus Change the inferno site info in the file /lib/ndb/local. You have to set your PC name in the following attributes: SIGNER, FILESERVER, registry and gridsched. You also have to add an entry to define your PC and its ip address. ---- infernosite= dnsdomain=YOUR_DNS_DOMAIN # lsub.org dns=IP_RESOVER # resolver i.e. 193.147.71.86 SIGNER=PC_NAME # isis.lsub.org FILESERVER=PC_NAME # isis.lsub.org smtp=SMTP_SRVR_NAME # aquamar.pantuflo.es dom=YOUR_DOMAIN # lsub.org registry=PC_NAME # isis.lsub.org gridsched=PC_NAME # isis.lsub.org sys=pc ip=IP_OF_THE_PC # 212.128.4.125 ---- 2.2- CONFIGURING AN AUTH AND FILE SERVER Create a signer key file in $home/octopus/keydb. This file is used to generate certificates for clients. The command createsignerkey creates this file. Its first argument is the name of the Certification Authority (CA). In this case, the name of the PC. cd /keydb auth/createsignerkey PC_NAME # isis.lsub.org We need to store the keydb password in a file to not type it everytime we boot the PC. Note that this password is used to encrypt/decrypt the keys file, not to be authenticated in the server. It's similar to the auth server's password in a Plan 9's CPU/auth server. cd /keydb echo 'mysuperpasswd' > nvr chmod 600 nvr Run the auth server: ndb/cs svc/auth -n /keydb/nvr You have to create an account for your user. auth/changelogin USERNAME #paurea This command asks you to set a password. This password will be used to authenticate your user in the auth server. Do not confuse this password with the auth-server's password set above. Make sure the account has been created: ls /mnt/keys/username You should see some files there, such as secrect, status etc. Next, get the certificate for the PC. The PC is the CA (certification authority), but it is also the file server. Hence, it needs a certificate to exectute the inferno's auth protocol. This protocol is based on Diffie-Hellman (for more info read the "Inferno Security" paper by D. Presotto, (pdf at ieee explore). getauthinfo default Now run this command so that the PC can serve files. svc/net 2.3- OPTIONAL: TEST THE AUTH/FILE SERVER Try to mount this Inferno FROM OTHER INFERNO In the client, get a certificate getauthinfo default >use signer: PC_NAME #isis.lsub.org >remote username: USERNAME #paurea >password: .... >save in file: yes and mount the PC ndb/cs mount PC_NAME /n/remote If you can get the ticket and mount the Inferno, the auth server is OK. If not, check out the ndb database (configure it as in previous stages). 2.4- SETUP OCTOPUS IN THE PC (AUTH/FILE SERVER) *ignore this at lsub or if /dis/o contains the binaries already* Copy the octopus binaries in the local inferno fs. You can get them from whale.lsub.org. Lets assume you have whale.lsub.org mounted on /n/whale: cd /n/whale/dis puttar o > /tmp/o.tar cd /dis gettar -v < /tmp/o.tar Re-start Inferno. Start the PC: o/pcrc 3.- INSTALLING A NEW TERMINAL. Install inferno and configure the network: Copy /lib/nbd/local from your PC to /lib/ndb/local. Copy /lib/ndb/octopus too. Run wm/logon -u USERNAME for example use this script to run inferno on Mac Os X: ----- #!/bin/sh #do not forget to update the PATH to use the Inferno binaries. inferno -g 1280x750 wm/wm wm/logon -u $USER ----- Create a $home in the inferno. mkdir /usr/USERNAME mkdir /usr/esoriano/lib mkdir /usr/esoriano/tmp mkdir /usr/esoriano/keyring chmod 700 /usr/esoriano/keyring Start the connection server: ndb/cs Get a ticket to be authenticated on the PC: getauthinfo default >use signer: PC_NAME >remote username: USERNAME >password: .... >save in file: yes You have your ticket stored in /usr/USERNAME/keyring/default Mount the PC: mount PC_NAME /n/remote Copy the octopus port binaries to the local inferno: cd /n/remote/dis puttar o > /tmp/o.tar cd /dis gettar -v < /tmp/o.tar You need to create some directories: one to mount the pc, one to mount devices, and one to store the cache: mkdir /n/pc mkdir /n/pc/devs mkdir /tmp/cache and the mount points for the terminal's devs: mkdir /term mkdir /term/print mkdir /term/view mkdir /term/voice mkdir /term/what mkdir /term/who mkdir /term/fs mkdir /devs Edit the terminal's script and change the default PC name to your own. sed 's/alboran.lsub.org/PC_NAME/g' \ < /n/remote/dis/o/termrc > /dis/o/termrc Re-start Inferno. Run the terminal's script: o/termrc Now, you (should) have an octopus terminal ready to be used. Enjoy.