diff options
| author | Yoshihiro Takahashi <nyan@FreeBSD.org> | 2001-11-15 07:27:25 +0000 |
|---|---|---|
| committer | Yoshihiro Takahashi <nyan@FreeBSD.org> | 2001-11-15 07:27:25 +0000 |
| commit | 19ea5a3fbf37357dcabde1e0864fe9a642e0cfc9 (patch) | |
| tree | 5e2570e0f15d98a699e432f2854298e6002b9376 /release/scripts | |
| parent | acd9c8a8a183fcb5ab90e535627e43317e3d23e6 (diff) | |
Notes
Diffstat (limited to 'release/scripts')
| -rw-r--r-- | release/scripts/doFS.sh | 73 |
1 files changed, 70 insertions, 3 deletions
diff --git a/release/scripts/doFS.sh b/release/scripts/doFS.sh index d7b660f4f430..bb2d7d87a081 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 |
