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:'} 1639734e7eSDavid 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;'} 2539734e7eSDavid du Colombier if(~ $fstype fossil fossil+venti){ 2639734e7eSDavid du Colombier echo bootfile'='$bootfat!9pcf 2739734e7eSDavid du Colombier echo 'bootargs=local!'^$sfs 289a747e4fSDavid du Colombier echo 'bootdisk=local!'^$sfs 2939734e7eSDavid du Colombier } 3039734e7eSDavid du Colombier if not { 3139734e7eSDavid du Colombier echo bootfile'='$bootfs!/386/9pcdisk 3239734e7eSDavid du Colombier echo 'bootdisk=local!'^$sfs 3339734e7eSDavid du Colombier } 34a22b0629SDavid du Colombier if(~ $fstype fossil+venti){ 35a22b0629SDavid du Colombier venti=`{echo $ventiarena | sed 's;/dev;#S;'} 36a22b0629SDavid du Colombier echo venti'='^$venti 37a22b0629SDavid du Colombier } 3891b330d9SDavid du Colombier # sort -u avoids dups which could otherwise trigger 3991b330d9SDavid du Colombier # pointless boot menus. 408d5f8d40SDavid du Colombier grep -v '(^\[)|menuitem|adisk|bootfile|bootdisk|bootargs|nobootprompt|mouseport|vgasize|monitor|cdboot' /tmp/plan9.orig | 418d5f8d40SDavid du Colombier sort -u 423ff48bf5SDavid du Colombier echo 'mouseport='^$mouseport 433ff48bf5SDavid du Colombier echo 'monitor='^$monitor 443ff48bf5SDavid du Colombier echo 'vgasize='^$vgasize 459a747e4fSDavid du Colombier } >/tmp/plan9.ini 469a747e4fSDavid du Colombier } 479a747e4fSDavid du Colombier if(! test -f /tmp/plan9ini.bak) 489a747e4fSDavid du Colombier cp /tmp/plan9.ini /tmp/plan9ini.bak 499a747e4fSDavid du Colombier 509a747e4fSDavid du Colombier need9fatformat=no 519a747e4fSDavid du Colombier if(! isfat /dev/$disk/9fat) 529a747e4fSDavid du Colombier need9fatformat=yes 539a747e4fSDavid du Colombier if not if(! mount -c /srv/dos /n/9fat /dev/$disk/9fat >[2]/dev/null) 549a747e4fSDavid du Colombier need9fatformat=yes 559a747e4fSDavid du Colombier if not if(! test -f /n/9fat/plan9.ini) 569a747e4fSDavid du Colombier need9fatformat=yes 579a747e4fSDavid du Colombier 58*d4c94ea0SDavid du Colombier if (test -e /n/newfs/386/9loadnousb) 59d5b6fab5SDavid du Colombier bind /n/newfs/386/9loadnousb /n/newfs/386/9load # cater to old bioses 609a747e4fSDavid du Colombier if(~ $need9fatformat yes){ 619a747e4fSDavid du Colombier log Initializing Plan 9 FAT partition. 629a747e4fSDavid du Colombier disk/format -r 2 -d -b /386/pbs \ 63a22b0629SDavid du Colombier /dev/$disk/9fat /n/newfs/386/9load 649a747e4fSDavid du Colombier # silently install pbslba if the partition is way into the disk. 6539734e7eSDavid du Colombier # it''s our only hope. only need this for >8.5GB into the disk. 6639734e7eSDavid du Colombier # but... 6739734e7eSDavid du Colombier # there are so few non-LBA bioses out 6839734e7eSDavid du Colombier # there anymore that we'll do this even if we're only 2GB into 6939734e7eSDavid du Colombier # the disk. it's just not worth the headaches of dealing with 7039734e7eSDavid du Colombier # crappy bioses that don't address the whole 8.5GB properly 7139734e7eSDavid du Colombier 729a747e4fSDavid du Colombier 9fatoffset=`{grep '^part 9fat ' /dev/$disk/ctl | awk '{print $4}'} 739a747e4fSDavid du Colombier if(! ~ $#9fatoffset 1) { 749a747e4fSDavid du Colombier echo 'could not find plan 9 partition.' 759a747e4fSDavid du Colombier echo 'cannot happen' 769a747e4fSDavid du Colombier exit bad 779a747e4fSDavid du Colombier } 7839734e7eSDavid du Colombier if(test $9fatoffset -gt 2097152) # 2GB 799a747e4fSDavid du Colombier disk/format -b /386/pbslba /dev/$disk/9fat 809a747e4fSDavid du Colombier 819a747e4fSDavid du Colombier mount -c /srv/dos /n/9fat /dev/$disk/9fat 829a747e4fSDavid du Colombier } 839a747e4fSDavid du Colombier 849a747e4fSDavid du Colombier if(! test -f /n/9fat/4e){ 85a22b0629SDavid du Colombier logprog cp /n/newfs/386/9load /n/9fat/9load 86a22b0629SDavid du Colombier logprog cp /n/newfs/386/9pcf /n/9fat/9pcf 879a747e4fSDavid du Colombier if(test -f /n/9fat/plan9.ini && ! test -f /n/9fat/plan9-3e.ini) 889a747e4fSDavid du Colombier logprog mv /n/9fat/plan9.ini /n/9fat/plan9-3e.ini 899a747e4fSDavid du Colombier if(test -f /n/9fat/9pcdisk && ! test -f /n/9fat/9pc3e) 909a747e4fSDavid du Colombier logprog mv /n/9fat/9pcdisk /n/9fat/9pc3e 919a747e4fSDavid du Colombier 929a747e4fSDavid du Colombier awk -f /bin/inst/mkini.awk >/n/9fat/plan9.ini 939a747e4fSDavid du Colombier >/n/9fat/4e 949a747e4fSDavid du Colombier } 959a747e4fSDavid du Colombier 969a747e4fSDavid du Colombier echo 979a747e4fSDavid du Colombier echo 'There are myriad ways to boot a Plan 9 system.' 989a747e4fSDavid du Colombier echo 'You can use any of the following.' 999a747e4fSDavid du Colombier echo 1009a747e4fSDavid du Colombier echo ' floppy - create a boot floppy' 1019a747e4fSDavid du Colombier echo ' plan9 - make the plan 9 disk partition the default for booting' 1029a747e4fSDavid du Colombier echo ' win9x - add a plan 9 option to windows 9x boot menu' 1039a747e4fSDavid du Colombier echo ' winnt - add a plan 9 option to windows nt/2000/xp boot manager' 1049a747e4fSDavid du Colombier echo 1059a747e4fSDavid du Colombier echo 'If you are upgrading an extant third edition installation and booting' 1069a747e4fSDavid du Colombier echo 'from something other than a floppy, you needn''t run anything here.' 1079a747e4fSDavid du Colombier echo 'Just type ctl-d.' 1089a747e4fSDavid du Colombier 1099a747e4fSDavid du Colombier oldbootsetup=$didbootsetup 1109a747e4fSDavid du Colombier didbootsetup=1 1119a747e4fSDavid du Colombier export didbootsetup 1129a747e4fSDavid du Colombier prompt 'Enable boot method' floppy plan9 win9x winnt 1139a747e4fSDavid du Colombier 1149a747e4fSDavid du Colombier if(! boot$rd){ 1159a747e4fSDavid du Colombier didbootsetup=$oldbootsetup 1169a747e4fSDavid du Colombier export didbootsetup 1179a747e4fSDavid du Colombier } 1189a747e4fSDavid du Colombier 1199a747e4fSDavid du Colombiercase checkdone 1200fb3f58eSDavid du Colombier xxxfat=(/dev/sd*/9fat) 1210fb3f58eSDavid du Colombier if(! isfat $xxxfat(1) || ! ~ $didbootsetup 1){ 1229a747e4fSDavid du Colombier bootsetup=ready 1239a747e4fSDavid du Colombier export bootsetup 1249a747e4fSDavid du Colombier } 1259a747e4fSDavid du Colombier} 126