summaryrefslogtreecommitdiff
path: root/rc/bin/diskparts
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 17:14:36 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 17:14:36 +0300
commit2959e1ede0ebc6fdffd7b8660f43c2ce14c9696f (patch)
treef6343b1ce11a8c87251dd27cf3d3e26b50693fa7 /rc/bin/diskparts
parente463eb40363ff4c68b1d903f4e0cdd0ac1c5977f (diff)
Import sources from 2011-03-30 iso image - rc
Diffstat (limited to 'rc/bin/diskparts')
-rwxr-xr-xrc/bin/diskparts34
1 files changed, 34 insertions, 0 deletions
diff --git a/rc/bin/diskparts b/rc/bin/diskparts
new file mode 100755
index 000000000..0088f5cc1
--- /dev/null
+++ b/rc/bin/diskparts
@@ -0,0 +1,34 @@
+#!/bin/rc
+# set up any disk partitions
+rfork e
+if (! test -e /dev/sdctl)
+ bind -b '#S' /dev
+
+# set up any /dev/sd partitions.
+# note that really big disks (e.g., aoe devices) may have no mbr
+# partition table because the mbr partition table can't cope with large
+# block numbers, so we may have to examine the data file with prep if
+# there's no plan9 file. beware that `disk/prep -p data' on a disk with
+# no plan 9 partition table will delete all extant partitions.
+for(disk in /dev/sd*) {
+ if(test -f $disk/data && test -f $disk/ctl)
+ { disk/fdisk -p $disk/data |
+ grep -v '^delpart ' >$disk/ctl } >[2]/dev/null
+ if(test -f $disk/plan9)
+ parts=($disk/plan9*)
+ if not
+ parts=($disk/data)
+ for(part in $parts)
+ if(test -f $part)
+ { disk/prep -p $part |
+ grep -v '^delpart ' >$disk/ctl } >[2]/dev/null
+}
+
+sysname=`{cat /dev/sysname}
+
+# set up any fs(3) partitions
+if (! test -e /dev/fs/ctl && test -e '#k/fs')
+ bind -b '#k' /dev
+if (~ $#sysname 1 && ! ~ $sysname '' &&
+ test -r /cfg/$sysname/fsconfig && test -w /dev/fs/ctl)
+ read -m /cfg/$sysname/fsconfig >/dev/fs/ctl