xref: /plan9/sys/lib/dist/pc/inst/bootsetup (revision 39734e7ed1eb944f5e7b41936007d0d38b560d7f)
19a747e4fSDavid du Colombier#!/bin/rc
29a747e4fSDavid du Colombier
39a747e4fSDavid du Colombier# desc: create a boot floppy or configure hard disk to boot plan 9
49a747e4fSDavid du Colombier# prereq: copydist
59a747e4fSDavid du Colombier
69a747e4fSDavid du Colombierswitch($1) {
79a747e4fSDavid du Colombiercase go
89a747e4fSDavid du Colombier	echo
99a747e4fSDavid du Colombier	echo 'Initializing Plan 9 FAT configuration partition (9fat)'
109a747e4fSDavid du Colombier	echo
119a747e4fSDavid du Colombier
129a747e4fSDavid du Colombier	fat=(/dev/sd*/9fat)
139a747e4fSDavid du Colombier	fat=$fat(1)
149a747e4fSDavid du Colombier	disk=`{echo $fat | sed 's:/dev/::;s:/9fat::'}
153ff48bf5SDavid du Colombier	bootfs=`{echo $fs | sed 's:/dev/(sd..)/(.*):\1!\2:'}
16*39734e7eSDavid du Colombier	bootfat=`{echo $fs | sed 's:/dev/(sd..)/(.*):\1!9fat:'}
179a747e4fSDavid du Colombier	if(! test -f /dev/$disk/9fat) {
189a747e4fSDavid du Colombier		echo 'You have no 9fat partition.  Can''t setup booting.'
199a747e4fSDavid du Colombier		exit
209a747e4fSDavid du Colombier	}
219a747e4fSDavid du Colombier
229a747e4fSDavid du Colombier	if(! test -f /tmp/plan9.ini) {
239a747e4fSDavid du Colombier		{
249a747e4fSDavid du Colombier			sfs=`{echo $fs | sed 's;/dev;#S;'}
25*39734e7eSDavid du Colombier			if(~ $fstype fossil fossil+venti){
26*39734e7eSDavid du Colombier				echo bootfile'='$bootfat!9pcf
27*39734e7eSDavid du Colombier				echo 'bootargs=local!'^$sfs
289a747e4fSDavid du Colombier				echo 'bootdisk=local!'^$sfs
29*39734e7eSDavid du Colombier			}
30*39734e7eSDavid du Colombier			if not {
31*39734e7eSDavid du Colombier				echo bootfile'='$bootfs!/386/9pcdisk
32*39734e7eSDavid du Colombier				echo 'bootdisk=local!'^$sfs
33*39734e7eSDavid du Colombier			}
343ff48bf5SDavid du Colombier			grep -v '(^\[)|menuitem|adisk|bootfile|bootdisk|bootargs|nobootprompt|mouseport|vgasize|monitor|cdboot' /tmp/plan9.orig
353ff48bf5SDavid du Colombier			echo 'mouseport='^$mouseport
363ff48bf5SDavid du Colombier			echo 'monitor='^$monitor
373ff48bf5SDavid du Colombier			echo 'vgasize='^$vgasize
389a747e4fSDavid du Colombier		} >/tmp/plan9.ini
399a747e4fSDavid du Colombier	}
409a747e4fSDavid du Colombier	if(! test -f /tmp/plan9ini.bak)
419a747e4fSDavid du Colombier		cp /tmp/plan9.ini /tmp/plan9ini.bak
429a747e4fSDavid du Colombier
439a747e4fSDavid du Colombier	need9fatformat=no
449a747e4fSDavid du Colombier	if(! isfat /dev/$disk/9fat)
459a747e4fSDavid du Colombier		need9fatformat=yes
469a747e4fSDavid du Colombier	if not if(! mount -c /srv/dos /n/9fat /dev/$disk/9fat >[2]/dev/null)
479a747e4fSDavid du Colombier		need9fatformat=yes
489a747e4fSDavid du Colombier	if not if(! test -f /n/9fat/plan9.ini)
499a747e4fSDavid du Colombier		need9fatformat=yes
509a747e4fSDavid du Colombier
519a747e4fSDavid du Colombier	if(~ $need9fatformat yes){
529a747e4fSDavid du Colombier		log Initializing Plan 9 FAT partition.
539a747e4fSDavid du Colombier		disk/format -r 2 -d -b /386/pbs \
549a747e4fSDavid du Colombier			/dev/$disk/9fat /n/kfs/386/9load
559a747e4fSDavid du Colombier		# silently install pbslba if the partition is way into the disk.
56*39734e7eSDavid du Colombier		# it''s our only hope.  only need this for >8.5GB into the disk.
57*39734e7eSDavid du Colombier		# but...
58*39734e7eSDavid du Colombier		# there are so few non-LBA bioses out
59*39734e7eSDavid du Colombier		# there anymore that we'll do this even if we're only 2GB into
60*39734e7eSDavid du Colombier		# the disk.  it's just not worth the headaches of dealing with
61*39734e7eSDavid du Colombier		# crappy bioses that don't address the whole 8.5GB properly
62*39734e7eSDavid du Colombier
639a747e4fSDavid du Colombier		9fatoffset=`{grep '^part 9fat ' /dev/$disk/ctl | awk '{print $4}'}
649a747e4fSDavid du Colombier		if(! ~ $#9fatoffset 1) {
659a747e4fSDavid du Colombier			echo 'could not find plan 9 partition.'
669a747e4fSDavid du Colombier			echo 'cannot happen'
679a747e4fSDavid du Colombier			exit bad
689a747e4fSDavid du Colombier		}
69*39734e7eSDavid du Colombier		if(test $9fatoffset -gt 2097152)	# 2GB
709a747e4fSDavid du Colombier			disk/format -b /386/pbslba /dev/$disk/9fat
719a747e4fSDavid du Colombier
729a747e4fSDavid du Colombier		mount -c /srv/dos /n/9fat /dev/$disk/9fat
739a747e4fSDavid du Colombier	}
749a747e4fSDavid du Colombier
759a747e4fSDavid du Colombier	if(! test -f /n/9fat/4e){
769a747e4fSDavid du Colombier		logprog cp /n/kfs/386/9load /n/9fat/9load
77*39734e7eSDavid du Colombier		logprog cp /n/kfs/386/9pcf /n/9fat/9pcf
789a747e4fSDavid du Colombier		if(test -f /n/9fat/plan9.ini && ! test -f /n/9fat/plan9-3e.ini)
799a747e4fSDavid du Colombier			logprog mv /n/9fat/plan9.ini /n/9fat/plan9-3e.ini
809a747e4fSDavid du Colombier		if(test -f /n/9fat/9pcdisk && ! test -f /n/9fat/9pc3e)
819a747e4fSDavid du Colombier			logprog mv /n/9fat/9pcdisk /n/9fat/9pc3e
829a747e4fSDavid du Colombier
839a747e4fSDavid du Colombier		awk -f /bin/inst/mkini.awk >/n/9fat/plan9.ini
849a747e4fSDavid du Colombier		>/n/9fat/4e
859a747e4fSDavid du Colombier	}
869a747e4fSDavid du Colombier
879a747e4fSDavid du Colombier	echo
889a747e4fSDavid du Colombier	echo 'There are myriad ways to boot a Plan 9 system.'
899a747e4fSDavid du Colombier	echo 'You can use any of the following.'
909a747e4fSDavid du Colombier	echo '(You can also repeat this task to use more than one).'
919a747e4fSDavid du Colombier	echo
929a747e4fSDavid du Colombier	echo '  floppy - create a boot floppy'
939a747e4fSDavid du Colombier	echo '  plan9  - make the plan 9 disk partition the default for booting'
949a747e4fSDavid du Colombier	echo '  win9x  - add a plan 9 option to windows 9x boot menu'
959a747e4fSDavid du Colombier	echo '  winnt  - add a plan 9 option to windows nt/2000/xp boot manager'
969a747e4fSDavid du Colombier	echo
979a747e4fSDavid du Colombier	echo '(See the documentation for instructions on booting Plan 9 from LILO.)'
989a747e4fSDavid du Colombier	echo
999a747e4fSDavid du Colombier	echo 'If you are upgrading an extant third edition installation and booting'
1009a747e4fSDavid du Colombier	echo 'from something other than a floppy, you needn''t run anything here.'
1019a747e4fSDavid du Colombier	echo 'Just type ctl-d.'
1029a747e4fSDavid du Colombier
1039a747e4fSDavid du Colombier	oldbootsetup=$didbootsetup
1049a747e4fSDavid du Colombier	didbootsetup=1
1059a747e4fSDavid du Colombier	export didbootsetup
1069a747e4fSDavid du Colombier	prompt 'Enable boot method' floppy plan9 win9x winnt
1079a747e4fSDavid du Colombier
1089a747e4fSDavid du Colombier	if(! boot$rd){
1099a747e4fSDavid du Colombier		didbootsetup=$oldbootsetup
1109a747e4fSDavid du Colombier		export didbootsetup
1119a747e4fSDavid du Colombier	}
1129a747e4fSDavid du Colombier
1139a747e4fSDavid du Colombiercase checkdone
1149a747e4fSDavid du Colombier	if(! isfat /dev/sd*/9fat || ! ~ $didbootsetup 1){
1159a747e4fSDavid du Colombier		bootsetup=ready
1169a747e4fSDavid du Colombier		export bootsetup
1179a747e4fSDavid du Colombier	}
1189a747e4fSDavid du Colombier}
119