]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - release/doFS.sh
Elimintate gratuitous backslash
[FreeBSD/FreeBSD.git] / release / doFS.sh
1 :
2 #set -ex
3
4 if [ "x$VNDEVICE" = "x" ] ; then
5         VNDEVICE=vn0
6 fi
7 export BLOCKSIZE=512
8
9 RD=$1 ; shift
10 MNT=$1 ; shift
11 FSSIZE=$1 ; shift
12 FSPROTO=$1 ; shift
13 FSINODE=$1 ; shift
14 FSLABEL=$1 ; shift
15
16 deadlock=20
17
18 while true 
19 do
20         rm -f fs-image
21
22         if [ ! -b /dev/${VNDEVICE} -o ! -c /dev/r${VNDEVICE} ] ; then 
23                 ( cd /dev && sh MAKEDEV ${VNDEVICE} )
24         fi
25
26         umount /dev/${VNDEVICE} 2>/dev/null || true
27
28         umount ${MNT} 2>/dev/null || true
29
30         vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true
31
32         dd of=fs-image if=/dev/zero count=${FSSIZE} bs=1k 2>/dev/null
33         # this suppresses the `invalid primary partition table: no magic'
34         awk 'BEGIN {printf "%c%c", 85, 170}' |\
35             dd of=fs-image obs=1 seek=510 conv=notrunc 2>/dev/null
36
37         vnconfig -s labels -c /dev/r${VNDEVICE} fs-image
38
39         if [ "`uname -m`" = "alpha" ]; then
40                 disklabel -Brw -b ${RD}/trees/bin/usr/mdec/boot1 \
41                   /dev/r${VNDEVICE} ${FSLABEL}
42         else
43                 disklabel -Brw \
44                   -b ${RD}/trees/bin/usr/mdec/fdboot \
45                   -s ${RD}/trees/bin/usr/mdec/bootfd \
46                   /dev/r${VNDEVICE} ${FSLABEL}
47         fi
48         newfs -u 0 -t 0 -i ${FSINODE} -m 0 -T ${FSLABEL} -o space /dev/r${VNDEVICE}c
49
50         mount /dev/${VNDEVICE}c ${MNT}
51
52         ( set -e && cd ${FSPROTO} && find . -print | cpio -dump ${MNT} )
53
54         df -ki /mnt
55
56         set `df -ki /mnt | tail -1`
57
58         umount ${MNT}
59
60         fsck -p /dev/r${VNDEVICE}c < /dev/null
61
62         vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true
63
64         if ! echo $FSLABEL | grep -q minimum; then
65                 echo ${FSSIZE} > fs-image.size
66                 break
67         fi
68
69         echo ">>> Filesystem is ${FSSIZE} K, $4 left"
70         echo ">>>     ${FSINODE} bytes/inode, $7 left"
71         echo ">>>   `expr ${FSSIZE} \* 1024 / ${FSINODE}`"
72         echo ${FSSIZE} > fs-image.size
73         break;
74 done