1*223a736eSDavid du Colombier#!/bin/rc 2*223a736eSDavid du Colombier 3*223a736eSDavid du Colombierrfork e 4*223a736eSDavid du Colombier 5*223a736eSDavid du Colombier. /rc/bin/pc/defs 6*223a736eSDavid du Colombier 7*223a736eSDavid du Colombierif(! ~ $#* 1) { 8*223a736eSDavid du Colombier echo 'usage: bootplan9 /dev/sdC0' >[1=2] 9*223a736eSDavid du Colombier echo 'sets active the plan 9 partition on the named disk.' >[1=2] 10*223a736eSDavid du Colombier exit usage 11*223a736eSDavid du Colombier} 12*223a736eSDavid du Colombier 13*223a736eSDavid du Colombierdisk=$1 14*223a736eSDavid du Colombier 15*223a736eSDavid du Colombierfn x { 16*223a736eSDavid du Colombier if(! test -f $disk/$1) { 17*223a736eSDavid du Colombier echo 'could not find '$disk/$1 18*223a736eSDavid du Colombier exit disk 19*223a736eSDavid du Colombier } 20*223a736eSDavid du Colombier} 21*223a736eSDavid du Colombier 22*223a736eSDavid du Colombierx plan9 23*223a736eSDavid du Colombierx data 24*223a736eSDavid du Colombierx ctl 25*223a736eSDavid du Colombier 26*223a736eSDavid du Colombierdiskbase=`{basename `{cleanname $disk}} 27*223a736eSDavid du Colombier 28*223a736eSDavid du Colombierfirst=`{ls -p '#S' | sed 1q} 29*223a736eSDavid du Colombierif(! ~ $first $diskbase) { 30*223a736eSDavid du Colombier echo 'warning: The plan 9 partition is not on the boot disk,' >[1=2] 31*223a736eSDavid du Colombier echo 'so making it the active partition will have no effect.' >[1=2] 32*223a736eSDavid du Colombier} 33*223a736eSDavid du Colombier 34*223a736eSDavid du Colombierp9offset=`{disk/fdisk -p $disk/data |grep '^part plan9 ' | awk '{print $4}'} 35*223a736eSDavid du Colombierif(! ~ $#p9offset 1) { 36*223a736eSDavid du Colombier echo 'could not find plan 9 partition.' >[1=2] 37*223a736eSDavid du Colombier echo 'cannot happen' >[1=2] 38*223a736eSDavid du Colombier exit bad 39*223a736eSDavid du Colombier} 40*223a736eSDavid du Colombier 41*223a736eSDavid du Colombierif(test $p9offset -gt 4128705) { # 65536 * 63 42*223a736eSDavid du Colombier echo >[1=2] 43*223a736eSDavid du Colombier echo 'Your Plan 9 partition is more than 2GB into your disk,' >[1=2] 44*223a736eSDavid du Colombier echo 'and the master boot records used by most operating systems' >[1=2] 45*223a736eSDavid du Colombier echo 'cannot access it (and thus cannot boot it).' >[1=2] 46*223a736eSDavid du Colombier echo >[1=2] 47*223a736eSDavid du Colombier echo 'Would you like to install a master boot record' >[1=2] 48*223a736eSDavid du Colombier echo 'that will be able to access partitions more than 2GB into the disk?' >[1=2] 49*223a736eSDavid du Colombier echo >[1=2] 50*223a736eSDavid du Colombier prompt 'Install a new mbr' y n 51*223a736eSDavid du Colombier switch($rd) { 52*223a736eSDavid du Colombier case n 53*223a736eSDavid du Colombier echo >[1=2] 54*223a736eSDavid du Colombier echo 'Not setting Plan 9 partition active, then.' >[1=2] 55*223a736eSDavid du Colombier echo >[1=2] 56*223a736eSDavid du Colombier exit bad 57*223a736eSDavid du Colombier case y 58*223a736eSDavid du Colombier disk/mbr -m /386/mbr $disk/data 59*223a736eSDavid du Colombier } 60*223a736eSDavid du Colombier} 61*223a736eSDavid du Colombier 62*223a736eSDavid du Colombierp9part=`{disk/fdisk $disk/data >[2]/dev/null </dev/null | 63*223a736eSDavid du Colombier grep PLAN9 | sed 1q | sed 's/ *(p.) .*/\1/'} 64*223a736eSDavid du Colombierif(~ $#p9part 1) { 65*223a736eSDavid du Colombier { echo 'A '^$p9part; echo w } | disk/fdisk $disk/data >[2]/dev/null >/dev/null 66*223a736eSDavid du Colombier} 67*223a736eSDavid du Colombierif not { 68*223a736eSDavid du Colombier echo 'Could not find Plan 9 partition.' 69*223a736eSDavid du Colombier exit notdone 70*223a736eSDavid du Colombier} 71*223a736eSDavid du Colombier 72*223a736eSDavid du Colombierexit 73