From 012dec1119fe41b59bf4f498c835aa7ec2e269f2 Mon Sep 17 00:00:00 2001 From: ment Date: Sat, 30 Apr 2011 16:43:54 +0200 Subject: [PATCH] boot: partitioning USB disks, mounting 9front.iso from FAT partition --- sys/src/9/boot/bootrc | 3 +++ sys/src/9/boot/usb.rc | 24 ++++++++++++++++++++++++ sys/src/9/port/bootfs.proto | 3 +++ 3 files changed, 30 insertions(+) create mode 100644 sys/src/9/boot/usb.rc 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