summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorment <thement@ibawizard.net>2011-04-30 16:43:54 +0200
committerment <thement@ibawizard.net>2011-04-30 16:43:54 +0200
commit012dec1119fe41b59bf4f498c835aa7ec2e269f2 (patch)
tree38164ae4d3df84ca0d640c6480f05aa4dbd2fcbf
parent06db9d4d681e552e0d4803e76becace707a72f12 (diff)
downloadplan9front-012dec1119fe41b59bf4f498c835aa7ec2e269f2.tar.xz
boot: partitioning USB disks, mounting 9front.iso from FAT partition
-rw-r--r--sys/src/9/boot/bootrc3
-rw-r--r--sys/src/9/boot/usb.rc24
-rw-r--r--sys/src/9/port/bootfs.proto3
3 files changed, 30 insertions, 0 deletions
diff --git a/sys/src/9/boot/bootrc b/sys/src/9/boot/bootrc
index d41b5eb96..e21dfc629 100644
--- a/sys/src/9/boot/bootrc
+++ b/sys/src/9/boot/bootrc
@@ -3,6 +3,7 @@ rfork e
mt=()
. /rc/lib/tcp.rc
. /rc/lib/local.rc
+. /rc/lib/usb.rc
fn fatal {
echo $*
@@ -55,6 +56,7 @@ fn getmethod{
fn main{
rm -f /srv/boot
+ rm -f /srv/usb
getmethod
@@ -138,6 +140,7 @@ if(! ~ $#kbmap 0){
cat $"kbmap >/dev/kbmap
}
+configusb # run partfs on usb disks
configlocal # add partitions and binds
while()@{
diff --git a/sys/src/9/boot/usb.rc b/sys/src/9/boot/usb.rc
new file mode 100644
index 000000000..2e5b09a6a
--- /dev/null
+++ b/sys/src/9/boot/usb.rc
@@ -0,0 +1,24 @@
+fn configusb{
+ for(c in /dev/sdU*[0-9]){
+ d=`{echo $c | sed 's,^/dev/(.*),\1p,g'}
+ if(! test -d /dev/$d)
+ disk/partfs -d $d $c/data
+ }
+}
+
+fn connectusb{
+ m=/mnt/usb
+ if(! test -r $1)
+ fatal device $1 does not exist
+ if(! test -r $1/dos)
+ fatal device $1 does not have dos partition
+ mkdir -p $m
+ dossrv -r -f $1/dos usb
+ mount /srv/usb $m
+ if(! test -r $m/9front.iso)
+ fatal $m/9front.iso not found
+ {9660srv -s -f $m/9front.iso &} <[0=1] | echo 0 >/srv/boot
+}
+
+musb=(configusb connectusb)
+mt=(musb $mt)
diff --git a/sys/src/9/port/bootfs.proto b/sys/src/9/port/bootfs.proto
index 548493d3a..3e91924ab 100644
--- a/sys/src/9/port/bootfs.proto
+++ b/sys/src/9/port/bootfs.proto
@@ -10,6 +10,7 @@ $cputype
fdisk
kfs
prep
+ partfs
dossrv
echo
cwfs64x
@@ -19,6 +20,7 @@ $cputype
ip
ipconfig
ls
+ mkdir
mount
ramfs
rc
@@ -38,6 +40,7 @@ rc
rcmain
local.rc 555 sys sys ../boot/local.rc
tcp.rc 555 sys sys ../boot/tcp.rc
+ usb.rc 555 sys sys ../boot/usb.rc
bin
fstype
diskparts