#!/bin/rc echo this script will ask some questions, see QUESTIONS HERE, answer the questions truthfully and it will become a cpu/auth server, you will probably have to make notes so you know what to do when it does a reboot see the end of the script echo these instructions were culled from the wiki and made to work on a fresh install on September 7th 2007 echo 20th July - Added testing for and if so starting venti on '/dev/$disk/arenas' echo added aux/listen for doing cpu -h echo failed on 15th may because /386/bin/fossil has the wrong date and mk kernel tries to mk it if(! ~ $user glenda) exec echo log in as glenda fn set_sysname { echo 'sysname=' ^$sysname >> /n/9fat/plan9.ini } fn add_cfg { cd /cfg mkdir $sysname dircp example $sysname } fn drivers { echo m i S t #cat /dev/drivers | awk ' { print "''" $1 "''" } ' | tr -d '#' } fn bind_devices { { echo 'for (i in (m i S t))' echo ' bind -a ''#''^$i /dev >/dev/null >[2=1]' } >> /rc/bin/cpurc.local } fn config_ip { { if(! ~ $#ip 0 && ! ~ $#gateway 0 && ! ~ $#netmask 0 ) echo 'ip/ipconfig -g ' ^$gateway ^' ether /net/ether0 ' ^$ip ^' ' ^$netmask if not echo ip/config } >> /cfg/$sysname/cpurc } fn uncomment_cpurc { echo '/# auth\/keyfs s/# / /# auth\/cron s/# / /dicey -1 s/^/aux\/listen -q -t \/rc\/bin\/service.auth -d \/rc\/bin\/service tcp w q ' | ed /rc/bin/cpurc } fn uncomment_cfg_cpurc { echo '/# ip\/dhcpd s/# / /# ip\/tftpd s/# / /# ndb\/dns s/# / s/$/ -r/ w q ' | ed /cfg/$sysname/cpurc } fn enable_services { mv /rc/bin/service.auth/authsrv.tcp567 /rc/bin/service.auth/tcp567 echo auth/secstored >> /cfg/$sysname/cpurc } fn rioize { { echo 'aux/mouse ' ^$mouseport echo 'aux/vga -l ' ^$vgasize echo 'exec rio' } >> /cfg/$sysname/cpustart } fn create_bootes { { echo uname bootes bootes echo uname adm +bootes echo uname sys +bootes echo fsys main echo create /active/cron/bootes bootes bootes d775 echo create /active/sys/log/cron bootes bootes a664 } >> /srv/fscons } fn q40 { oifs = $ifs ifs = '.' bits = `{echo -n $ip} echo -n $bits(1) ^. ^$bits(2) ^. ^$bits(3) ^.0 ifs = $oifs } fn fill_ndb { { echo 'ipnet=' ^$ipnet 'ip=' ^`{q40} 'ipmask=' ^$netmask 'ether=' ^`{cat /net/ether0/addr} echo ' auth=' ^$sysname echo ' cpu=' ^$sysname echo ' fs=' ^$sysname echo ' bootf=' ^$bootf echo ' dns=' ^$dns echo 'authdom=' ^$authdom ^' auth=' ^$sysname echo 'ip=' ^$ip ^' sys=' ^$sysname ^' dom=' ^$sysname ^'.' ^$authdom } >> /lib/ndb/local } fn empower_bootes { { echo 'hostid=bootes' echo ' uid=!sys uid=!adm uid=*' } >> /lib/ndb/auth } fn install_kernel { if(! test -e /n/9fat/9pccpuf) { touch /386/bin/fossil # srcs has bugged dates and mk fails because of this cd /sys/src/9/pc mk 'CONF=pccpuf' install mk clean cp /386/9pccpuf /n/9fat } } fn write_bootmenu { { echo ' [menu] menuitem=pcf, Boot terminal - 9pcf menuitem=pccpuf, Boot cpu/auth - 9pccpuf menuitem=chooser, Choose kernel menudefault=pccpuf, 10 [pcf] bootfile=' ^$disk ^'!9fat!9pcf [pccpuf] bootfile=' ^$disk ^'!9fat!9pccpuf [chooser] bootfile=' ^$disk ^'!9fat!9pcf bootfile=' ^$disk ^'!9fat!9pccpuf [common] ' grep -v '^bootfile=' /n/9fat/plan9.ini if(test -e /dev/$disk/arenas) echo venti'='/dev/$disk/arenas } > /tmp/plan9.ini mv /tmp/plan9.ini /n/9fat/plan9.ini } fn backup_files { bkdir = /usr/glenda/backups/`{date -n} mkdir -p $bkdir && echo backups going in $bkdir cp /n/9fat/plan9.ini /rc/bin/cpurc.local /rc/bin/cpurc /lib/ndb/local /lib/ndb/auth $bkdir } fn create_newfossil_sys_user { echo '#!/bin/rc auth/changeuser $1 { echo uname $1 $1 echo ''uname sys +'' ^$1 echo newuser $1 echo ''newuser sys +'' ^$1 } >> /srv/fscons ' > /sys/lib/newfsysuser chmod 755 /sys/lib/newfsysuser } # QUESTIONS HERE # variables required if(! test -e /env/mouseport) mouseport = ps2intellimouse if(! test -e /env/vgasize) vgasize = 640x480x8 echo What sysname will this cpu/auth have sysname =`{read} echo enter ip netmask gateway as dotted quads i.e. 192.168.1.9 255.255.255.0 192.168.1.1 nets =`{read} ip = $nets(1) netmask = $nets(2) gateway = $nets(3) echo enter ip of dns for /lib/ndb/local dns = `{read} echo enter ipnet and authdom i.e, zero zero.dom bits = `{read} ipnet = $bits(1) authdom = $bits(2) echo disk to use i.e. sdC0 disk = `{read} bootf = /386/9pc echo sysname - $sysname echo ipnet - $ipnet echo authdom - $authdom echo ip - $ip echo netmask - $netmask echo gateway - $gateway echo dns - $dns echo disk - $disk if(test -e /dev/$disk/arenas) echo venti on /dev/$disk/arenas echo bootf - $bootf echo mouseport - $mouseport echo vgasize - $vgasize echo enter to continue or kill it now read # ACTION STARTS HERE 9fat: ramfs backup_files set_sysname add_cfg bind_devices config_ip uncomment_cfg_cpurc uncomment_cpurc enable_services rioize create_bootes echo auth/keyfs password for this machine auth/keyfs fill_ndb empower_bootes install_kernel write_bootmenu create_newfossil_sys_user echo blahblahblah >/dev/$disk/nvram echo 'that''s the end of stage 1, now reboot after reboot you''re asked these (with the answers here) : authid : bootes authdom : ' ^$authdom ^' secstore key : YOUR CHOICE password : BOOTES PASSWORD then ' ^$sysname ^'# auth/changeuser bootes password: BOOTES PASSWORD then run /sys/lib/newfsysuser YOURUSERNAME to give yourself a login in sys group on that machine then you can drawterm into it ' echo to reboot type: fshalt -r