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