From f8089d091127aba6800052c6f70d19b4fe06e157 Mon Sep 17 00:00:00 2001 From: nyan Date: Thu, 15 Nov 2001 07:27:25 +0000 Subject: Use the vn driver on a stable system. --- release/scripts/doFS.sh | 73 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 3 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/doFS.sh b/release/scripts/doFS.sh index d7b660f..bb2d7d8 100644 --- a/release/scripts/doFS.sh +++ b/release/scripts/doFS.sh @@ -23,8 +23,65 @@ FSLABEL=$1 ; shift deadlock=20 -while true -do +dofs_vn () { + if [ "x$VNDEVICE" = "x" ] ; then + VNDEVICE=vn0 + fi + u=`expr $VNDEVICE : 'vn\([0-9]*\)' || true` + VNDEVICE=vnn$u + + rm -f /dev/*vnn* + mknod /dev/rvnn${u} c 43 `expr 65538 + $u '*' 8` + mknod /dev/rvnn${u}c c 43 `expr 2 + $u '*' 8` + mknod /dev/vnn${u} b 15 `expr 65538 + $u '*' 8` + mknod /dev/vnn${u}c b 15 `expr 2 + $u '*' 8` + + while true + do + rm -f ${FSIMG} + + umount /dev/${VNDEVICE} 2>/dev/null || true + umount ${MNT} 2>/dev/null || true + vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true + + dd of=${FSIMG} if=/dev/zero count=${FSSIZE} bs=1k 2>/dev/null + # this suppresses the `invalid primary partition table: no magic' + awk 'BEGIN {printf "%c%c", 85, 170}' |\ + dd of=${FSIMG} obs=1 seek=510 conv=notrunc 2>/dev/null + + vnconfig -s labels -c /dev/r${VNDEVICE} ${FSIMG} + disklabel -Brw /dev/r${VNDEVICE} ${FSLABEL} + newfs -i ${FSINODE} -T ${FSLABEL} -o space -m 1 /dev/r${VNDEVICE}c + + mount /dev/${VNDEVICE}c ${MNT} + + if [ -d ${FSPROTO} ]; then + (set -e && cd ${FSPROTO} && find . -print | cpio -dump ${MNT}) + else + cp -p ${FSPROTO} ${MNT} + fi + + df -ki ${MNT} + + set `df -ki ${MNT} | tail -1` + + umount ${MNT} + vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true + + echo "*** Filesystem is ${FSSIZE} K, $4 left" + echo "*** ${FSINODE} bytes/inode, $7 left" + if [ "${do_size}" ]; then + echo ${FSSIZE} > ${FSIMG}.size + fi + break; + done + + rm -f /dev/*vnn* +} + +dofs_md () { + while true + do rm -f ${FSIMG} if [ "x${MDDEVICE}" != "x" ] ; then @@ -71,4 +128,14 @@ do echo ${FSSIZE} > ${FSIMG}.size fi break; -done + done +} + +case `uname -r` in +5.*) + dofs_md + ;; +*) + dofs_vn + ;; +esac -- cgit v1.1