The contents of /net/ndb
will be useful throughout the whole process;
have them visible in another window:
; ip/ipconfig
; cat /net/ndb
ip=192.168.1.152 ipmask=255.255.255.0 ipgw=192.168.1.3
sys=cirno
dns=192.168.1.1
dns=192.168.1.1
Boot settings
The 9fat
partition contains the kernel, bootloader and boot settings. Add the
following lines to plan9.ini
. Make sure the values match your own
configuration:
; 9fs 9fat
; cd /n/9fat
; cat >> plan9.ini
user=glenda
cpu=192.168.1.152
auth=192.168.1.152
authdom=someauth
service=cpu
^D
user
is kinda like the root user on UNIX systems, cpu
and auth
define the
IP addresses for the CPU and auth server respectively, authdom
is the domain
name of our the server, and service=cpu
starts the CPU listener at boot time.
9front needs to boot hands-free, so the bootargs
prompt has to be skipped. To
do that, change the bootargs
variable (its values might be different) in
plan9.ini
:
bootargs=local!/dev/sdE0/fs
# change to...
noobootprompt=local!/dev/sdE0/fs -m 291 -A -a tcp!*!564
Auth server
Set up the auth server hostowner’s name and password; authid
and authdom
have to match the values in plan9.ini
:
; auth/wrkey
bad nvram des key
bad authentication id
bad authentication domain
authid: glenda
authdom: someauth
secstore key:
password: <your_pass>
Add glenda
’s password. This has to be the same as the one you typed in
wrkey(8)
. Always run keyfs(4)
before modifying keys:
; auth/keyfs
; auth/changeuser glenda
Password: <your_pass>
Confirm password: <your_pass>
assign new Inferno/POP secret? [y/n]: y
make it the same as Plan 9 password? [y/n]: y
Expiration date (YYYYMMDD or never)[never]:
Post id:
User's full name:
Department #:
User's email address:
user glenda installed for Plan 9
; auth/enable glenda
Network database
Add the following lines to /lib/ndb/local
(pay close attention to detail,
especially ip=
):
; cat >> /lib/ndb/local
authdom=someauth auth=192.168.1.152
ipnet=iphome ip=192.168.1.0 ipmask=255.255.255.0
ipgw=192.168.1.3
auth=192.168.1.152
authdom=someauth
fs=192.168.1.152
cpu=192.168.1.152
dns=192.168.1.1
^D
ipnet
can be anything.
Sync the changes and reboot the system:
; echo sync >> /srv/hjfs.cmd
; fshalt -r
On reboot
Enable networking:
; bind -a '#l0' /net
; ip/ipconfig
; ip/ipconfig ether /net/ether0
Drawterm as glenda
:
$ drawterm -u glenda
cpu[cpu]: 192.168.1.152
auth[192.168.1.152]:
glenda@someauth dp9ik password: <your_pass>
Start a rio(1)
instance:
cpu% rio -s -i riostart
/cfg/$sysname/cpustart
contains commands that run on boot. You can put
whatever you want in it — I’m going to just add the same commands I ran after
we rebooted to make my life easier.
; mkdir /cfg/$sysname
; cat > /cfg/$sysname/cpustart
bind -a '#l0' /net
ip/ipconfig
ip/ipconfig ether /net/ether0
cat /net/ndb
^D
New user
Add the new user to the file server, add it to some standard groups and assign it a password:
; echo newuser christos >> /srv/hjfs.cmd
; echo newuser sys +christos >> /srv/hjfs.cmd
; echo newuser adm +christos >> /srv/hjfs.cmd
; echo newuser upas +christos >> /srv/hjfs.cmd
; echo newuser cron +christos >> /srv/hjfs.cmd
; auth/keyfs
; auth/changeuser christos
...
; auth/enable christos
Let the new user “speak for” for other users by adding the following lines to
/lib/ndb/auth
:
; cat >> /lib/ndb/auth
hostid=christos
uid=!sys uid=!adm uid=*
^D
Reboot for the changes to take effect:
; fshalt -r
Drawterm as christos
and run newuser(8)
to set up his home directory:
$ drawterm -u christos
...
; /sys/lib/newuser