blob: c44a0e0b9b55c15de19eb643b7b551ed47082f80 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#!/bin/bash
set -e
set -o pipefail
PATH=/usr/sbin:/sbin:$PATH
SAFE_SIZE_4G=3758096384 #3584mb
SAFE_SIZE_2G=1879048192 #1/2 4g safe size
SAFE_SIZE_1G=939524096 #1/2 2g safe size
DISK_SIZE=$SAFE_SIZE_4G
LOOP_DEV=$(losetup -f)
usage() {
echo "make_fake_device.sh [--4G|--2G|--1G] <loop device backing store filename>"
echo " outputs a loop device whose backing store is a partitioned disk "
echo " image using a sparse file of the specified size (default is --4G)"
exit 1
}
while [ $# -gt 1 ]; do
case $1 in
--4G)
DISK_SIZE=$SAFE_SIZE_4G
shift
;;
--2G)
DISK_SIZE=$SAFE_SIZE_2G
shift
;;
--1G)
DISK_SIZE=$SAFE_SIZE_2G
shift
;;
*)
usage
;;
esac
done
IMG=$1
BLOCK_SIZE=512
NUM_HEADS=16
NUM_SECTORS_PER_TRACK=62
NUM_BLOCKS=$(($DISK_SIZE / $BLOCK_SIZE))
NUM_CYLINDERS=$(($NUM_BLOCKS / $NUM_HEADS / $NUM_SECTORS_PER_TRACK))
IMAGE_SIZE=$(($NUM_CYLINDERS * $NUM_HEADS * $NUM_SECTORS_PER_TRACK * $BLOCK_SIZE))
OS_PART1_BEGIN=$(($NUM_SECTORS_PER_TRACK * $BLOCK_SIZE))
dd if=/dev/zero of=$IMG bs=$BLOCK_SIZE count=0 seek=$(($IMAGE_SIZE / $BLOCK_SIZE)) > /dev/null 2>&1 || exitclean
/sbin/fdisk -b $BLOCK_SIZE -C $NUM_CYLINDERS -S $NUM_SECTORS_PER_TRACK -H $NUM_HEADS $IMG > /dev/null 2>&1 <<EOF
n
p
1
t
83
p
w
q
EOF
losetup -d $LOOP_DEV > /dev/null 2>&1 || /bin/true
losetup -o $OS_PART1_BEGIN $LOOP_DEV $IMG
mke2fs -O dir_index -L OLPCRoot -F $LOOP_DEV > /dev/null 2>&1 || exitclean
echo $LOOP_DEV
|