#!/bin/rc loader=/386/9load pbs=/386/pbslba mbr=/386/mbr kernel=/amd64/9cpu fn fail{ if(! ~ $#* 0) echo mkcpuboot: $* exit fail } flagfmt='l loader,p pbs,m mbr,k kernel' args='drive' if(! ifs=() eval `{aux/getflags $*} || ! ~ $#* 1){ aux/usage exit usage } if(! test -d $1 || ! test -f $1/data){ fail disk $1 not found } if(! ~ $#flagl 0) loader=$flagl if(! ~ $#flagp 0) pbs=$flagp if(! ~ $#flagm 0) mbr=$flagm if(! ~ $#flagk 0) kernel=$flagk d=$1 disk/mbr -m $mbr $d/data || fail disk/fdisk -abw $d/data || fail { echo a 9fat 0 0x5000 echo a nvram 0x5000 0x5001 # echo a fsconfig 0x5040 0x5060 test -x extraparts && extraparts echo w echo q } | disk/prep -b $d/plan9 || fail bl=`{basename $loader} bk=`{basename $kernel} test -d 9fat || fatal no 9fat directory in cwd extra=`{ls -p 9fat/* | grep -v '^(' ^ $bl ^ '|plan9.ini|' ^ $bk ^ ')'} if(! test -f 9fat/$bl) cp $loader 9fat/ || fail if(! test -f 9fat/$bk) cp $kernel 9fat/ || fail if(! test -f 9fat/plan9.ini) fail missing required 9fat files disk/format -b $pbs -d -r 2 $d/9fat \ 9fat/^($bl plan9.ini $bk $extra) || fail nvram=$d/nvram auth/wrkey