update and correct for local conventions Reference: /n/atom/patch/applied/usbbootfix Date: Wed Apr 2 16:01:54 CES 2014 Signed-off-by: quanstro@quanstro.net --- /rc/bin/mkusbboot Wed Apr 2 16:01:50 2014 +++ /rc/bin/mkusbboot Wed Apr 2 16:01:50 2014 @@ -12,27 +12,40 @@ # size of image in $quantum-byte units. 1900 is enough for production system # (fs, /n/boot, ~1.2GB); 900 is ample for our install image # (sources, /n/sources/plan9, ~370MB). -size=1900 +defsize=1900 +size=() + +switch ($objtype) { +case 386 + k=/386/9paecpuf + b=/386/iplfat +case amd64 + k=/amd64/9cpu + b=/386/iplfat +case * + k=() + b=() +} fn usage { - echo usage: $argv0 '[-p proto] [-r root] [-s 10⁶-bytes]' >[1=2] + echo usage: $argv0 '[-b boot] [-k kernel] [-p proto] [-r root] [-s 10⁶-bytes]' >[1=2] exit usage } fn sigint sighup sigterm { - rm -f /tmp/9load exit note } # process arguments -done=0 argv0=$0 -while (~ $done 0 && ! ~ $#* 0 && ~ $1 -*) { +while (! ~ $#* 0 && ~ $1 -*) { switch ($1) { + case -k; k=$2; shift + case -b; b=$2; shift case -p; proto=$2; shift case -r; srcroot=$2; shift case -s; size=$2; shift - case --; done=1 # no break in rc, alas + case --; shift; break case -*; usage } shift @@ -44,7 +57,9 @@ if (~ $srcroot /n/*) srcfs=`{ echo $srcroot | sed 's;^/n/([^/]+).*;\1;' } if (~ $srcfs sources) - size=900 + defsize=900 +if (~ $#size 0) + size=$defsize # make empty disk image file of maximum size echo -n 'image: ' >[1=2] @@ -52,35 +67,37 @@ image # partition it -disk/partfs image -cd /dev/sdXX +addloop t image || exit addloop +cd /dev/sdt0 # prep it: lay down mbr, fdisk partitions, 9 partitions echo -n mbr+fdisk+prep... >[1=2] -disk/mbr -m /$objtype/mbr data +disk/mbr -m /386/iplmbr data disk/fdisk -baw data disk/prep -bw -a^(9fat nvram fscfg fossil) plan9 >/dev/null # populate 9fat, nvram, fsconfig echo -n 9fat... >[1=2] -cp /$objtype/9loadusb /tmp/9load # force format to use the name `9load' -switch ($objtype) { -case 386 - k=/$objtype/9pccpuf.gz -case amd64 - k=/$objtype/9k8cpu -case * - echo $0: 'can''t cope with architecture' $objtype >[1=2] +if(~ $#k 0 || ~ $# b 0){ + echo $argv0: no default kernel/boot for arch $objtype >[1=2] exit unknown-arch } -disk/format -b /$objtype/pbslba -d -r 2 9fat /tmp/9load $k \ +if(! test -f $k){ + echo $argv0: kernel missing: $k >[1=2] + exit 'no kernel' +} +if(! test -f $b){ + echo $argv0: boot missing: $b >[1=2] + exit 'no boot' +} +disk/format -b /386/pbslba -d -r 2 9fat $b $k \ $syscfg/usb/plan9.ini >[2=1] | grep -v '^(add .* at clust |Init|type |Adding file|used )' + cp /dev/zero nvram >[2]/dev/null cp /dev/zero fscfg >[2]/dev/null -rm -f /tmp/9load # fill the fossil 9fs $srcfs echo -n load fossil... >[1=2] -exec loadfossil /dev/sdXX/fossil $srcroot $proto $syscfg/usb/fossil.conf +exec loadfossil /dev/sdt0/fossil $srcroot $proto $syscfg/usb/fossil.conf --- /sys/lib/sysconfig/proto/stand-usb Thu Jan 1 00:00:00 1970 +++ /sys/lib/sysconfig/proto/stand-usb Wed Apr 2 16:01:51 2014 @@ -0,0 +1,282 @@ +# fossil file system for installing from usb + +# files like NOTICE +* - sys sys + +# adm owns adm +adm - adm adm + + - adm adm + +# upas owns mail +mail - upas upas + box - upas upas + glenda - glenda glenda + + - glenda glenda + fs - upas upas + lib - upas upas + + - upas upas + queue - upas upas + tmp - upas upas + +# glenda owns her home directory +usr - sys sys + glenda - glenda glenda + + - glenda glenda + +# architectures are owned by sys +386 - sys sys + * - sys sys + bin - sys sys + * - sys sys + ape - sys sys + + - sys sys + auth - sys sys + + - sys sys + aux - sys sys + + - sys sys + aviation - sys sys + + - sys sys + bitsy - sys sys + + - sys sys + dial - sys sys + + - sys sys + disk - sys sys + + - sys sys + fossil - sys sys + + - sys sys + fs - sys sys + + - sys sys + games - sys sys + + - sys sys + ip - sys sys + + - sys sys + ndb - sys sys + + - sys sys + replica - sys sys + + - sys sys + upas - sys sys + + - sys sys + usb - sys sys + + - sys sys + venti - sys sys + + - sys sys + include - sys sys + * - sys sys + ape - sys sys + + - sys sys + lib - sys sys + * - sys sys + ape - sys sys + + - sys sys +amd64 - sys sys + * - sys sys + bin - sys sys + * - sys sys + ape - sys sys + + - sys sys + auth - sys sys + + - sys sys + aux - sys sys + + - sys sys + aviation - sys sys + + - sys sys + bitsy - sys sys + + - sys sys + dial - sys sys + + - sys sys + disk - sys sys + + - sys sys + fossil - sys sys + + - sys sys + fs - sys sys + + - sys sys + games - sys sys + + - sys sys + ip - sys sys + + - sys sys + ndb - sys sys + + - sys sys + replica - sys sys + + - sys sys + upas - sys sys + + - sys sys + usb - sys sys + + - sys sys + venti - sys sys + + - sys sys + include - sys sys + * - sys sys + ape - sys sys + + - sys sys + lib - sys sys + * - sys sys + ape - sys sys + + - sys sys +arm - sys sys + * - sys sys + bin - sys sys + * - sys sys + ape - sys sys + + - sys sys + auth - sys sys + + - sys sys + aux - sys sys + + - sys sys + aviation - sys sys + + - sys sys + bitsy - sys sys + + - sys sys + dial - sys sys + + - sys sys + disk - sys sys + + - sys sys + fossil - sys sys + + - sys sys + fs - sys sys + + - sys sys + games - sys sys + + - sys sys + ip - sys sys + + - sys sys + ndb - sys sys + + - sys sys + replica - sys sys + + - sys sys + upas - sys sys + + - sys sys + usb - sys sys + + - sys sys + venti - sys sys + + - sys sys + include - sys sys + * - sys sys + ape - sys sys + + - sys sys + lib - sys sys + * - sys sys + ape - sys sys + + - sys sys + +# everything else is owned by sys +acme - sys sys + + - sys sys +cron - sys sys + upas - upas sys + + - upas sys +# these are in #/ +#fd - sys sys +# + - sys sys +#env - sys sys +# + - sys sys +lib - sys sys + * - sys sys + cmap - sys sys + + - sys sys + face - sys sys + + - sys sys + font - sys sys + + - sys sys + ndb - sys sys + + - sys sys + news - sys sys + + - sys sys + sky - sys sys + here - sys sys +lp - sys sys + + - sys sys +mnt - sys sys + + - sys sys +n - sys sys + + - sys sys +rc - sys sys + bin - sys sys + + - sys sys + ape - sys sys + + - sys sys + dial - sys sys + + - sys sys + ipconf - sys sys + + - sys sys + patch - sys sys + + - sys sys + pc - sys sys + + - sys sys + postscript - sys sys + + - sys sys + replica - sys sys + + - sys sys + service - sys sys + + - sys sys + service.alt.auth - sys sys + + - sys sys + service.alt.standalone - sys sys + + - sys sys + service.auth - sys sys + + - sys sys + service.fs - sys sys + + - sys sys + service.standalone - sys sys + + - sys sys + lib - sys sys + * - sys sys +sys - sys sys + doc - sys sys + + - sys sys + include - sys sys + * - sys sys + ape - sys sys + + - sys sys + lib - sys sys + * - sys sys + acid - sys sys + + - sys sys + backup - sys sys + + - sys sys + ghostscript - sys sys + + - sys sys + kbmap - sys sys + + - sys sys + lex - sys sys + + - sys sys + lp - sys sys + + - sys sys + man - sys sys + + - sys sys + plumb - sys sys + + - sys sys + postscript - sys sys + + - sys sys + ssh - sys sys + + - sys sys + sysconfig - sys sys + + - sys sys +# we only care about texmf/tex/generic/hyphen/hyphen.tex, because troff uses it + texmf - sys sys + tex - sys sys + generic - sys sys + hyphen - sys sys + hyphen.tex - sys sys + tls - sys sys + + - sys sys + tmac - sys sys + + - sys sys + troff - sys sys + + - sys sys + wiki - sys sys + * - sys sys + log - sys sys + + - sys sys + man - sys sys + + - sys sys + src - sys sys + + - sys sys +tmp - sys sys + + - sys sys + +# distribution metadata +dist - sys sys + replica - sys sys + kfs - sys sys + cd - sys sys + network - sys sys + plan9.proto - sys sys