]> git.lizzy.rs Git - plan9front.git/blob - rc/bin/termrc
crop /lib/face/48x48x8/n/nixie.1 to the right size (was 512x512)
[plan9front.git] / rc / bin / termrc
1 #!/bin/rc
2 # terminal startup
3 TIMESYNCARGS=(-rLa1000000)
4
5 # bind all likely devices
6 for(i in S f k t m i v L P u U A '$' Σ κ)
7         bind -a '#'^$i /dev >/dev/null >[2=1]
8 rm -f /env/i
9
10 mount -qb /srv/cons /dev
11
12 # mount points 
13 mntgen -s slashn && chmod 666 /srv/slashn
14 mntgen -s slashmnt /mnt && chmod 666 /srv/slashmnt
15 mntgen -s mntexport /mnt/exportfs && chmod 666 /srv/mntexport
16
17 # move factotum from /mnt to /mnt/factotum
18 mount /srv/factotum /mnt/temp
19 unmount /srv/factotum /mnt
20 bind /mnt/temp/factotum /mnt/factotum
21 unmount /mnt/temp
22
23 # usb listener
24 nusbrc
25
26 # set up any partitions
27 diskparts
28
29 # start up local swapping
30 disk=`{ls /dev/sd*/swap >[2]/dev/null}
31 if (! ~ $#disk 0)
32         swap $disk(1) >/dev/null >[2=1]
33 rm -f /env/disk
34
35 # we do this before we have a name.  we may need to do network
36 # setup so that we can get a name.
37 if(test -e /rc/bin/termrc.local)
38         . /rc/bin/termrc.local
39
40 # cs sets sysname (termrc.local may already have started it so check)
41 if(! test -e /srv/cs && ! test -e /net/cs)
42         ndb/cs
43 sysname=`{cat /dev/sysname}
44 if(~ $#sysname 0 || ~ $sysname ''){
45         sysname=cirno                   # default
46         echo -n $sysname >/dev/sysname
47 }
48
49 # parallelism for mk
50 NPROC=`{wc -l </dev/sysstat}
51
52 # machine specific startup (e.g., for devices not probed)
53 if(test -e /cfg/$sysname/termrc)
54         . /cfg/$sysname/termrc
55
56 # automatic ip address setup
57 if(test -r /net/ipselftab){
58         if(! grep u /net/ipselftab | grep -sv 127.0.0.1){
59                 ether=`{ndb/query sys $sysname ether}
60                 if(~ $#ether 1){
61                         # try /lib/ndb first, then do dhcp
62                         ip/ipconfig -N >[2]/dev/null || ip/ipconfig -h $sysname
63                 }
64                 rm -f /env/ether
65         }
66 }
67
68 if(! test -e /net/dns)
69         ndb/dns -r
70
71 if(! ~ $terminal *vx32*){
72         # start timesync if it isn't running and we weren't told not to
73         if(! ps|grep -s timesync)
74                 if(! ~ $TIMESYNCARGS '')
75                         aux/timesync $TIMESYNCARGS
76 }
77
78 fn ask {
79         if(~ $"$1 ask){
80                 echo -n $1
81                 echo -n $2
82                 echo -n ' ['
83                 echo -n $3
84                 echo -n '] '
85                 $1=`{read}
86                 if(~ $"$1 '!rc'){
87                         rc -i
88                         $1=ask
89                 }
90                 if(~ $#$1 0)
91                         $1=$3
92                 ask $*
93         }
94 }
95
96 ask vgasize ' is (text, 640x480x8, 1024x768x16, ...)' 1024x768x16
97 if(! ~ $"vgasize '' text none){
98         ask monitor ' is (vesa, xga, lcd, ...)' vesa
99         if(! ~ $"monitor ''){
100                 if(test -f /dev/mousectl)
101                         ask mouseport ' is (ps2, ps2intellimouse, 0, 1, 2)' ps2
102                 if not
103                         mouseport=none
104                 @{
105                         rfork n
106                         if(~ $monitor vesa)
107                                 aux/realemu
108                         aux/vga -l $vgasize
109                 }
110                 switch($mouseport){
111                 case ps2 ps2intellimouse 0 1 2
112                         aux/mouse $mouseport
113                         if(~ $accupoint 1)
114                                 pipefile -dr /bin/aux/accupoint /dev/mouse
115                 }
116         }
117 }
118 rm -f '/env/fn#ask'
119
120 if(test -f /dev/apm)
121         aux/apm
122
123 dontkill '^(ipconfig|factotum|mntgen|venti|hjfs|kfs|cfs|cwfs.*|9660srv|dossrv|paqfs|cs|dns|listen|reboot|usbd|kb|disk|ether)$'