blob: b715681c1c0a5681511b128bdd2401ec011dc474 (
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#!/bin/sh
set -e
usage_exit()
{
echo
echo "usage: $0 src dest [dest]..."
echo
echo "example: copying image to devs sde, sdf, sdg"
echo "$0 lx-trainer.img /dev/sde /dev/sdf /dev/sdg"
echo
exit 1
}
# minimum 2 arguments
if [ $# -lt 2 ]; then
echo "error: invalid arguments"
usage_exit
fi
SRC="$1"
shift
DESTS="$@"
# source must be file or block device
if [ ! -f "$SRC" -a ! -b "$SRC" ]; then
echo "error: invalid src"
usage_exit
fi
# destination must be block device
for dest in $DESTS; do
if [ ! -b $dest ]; then
echo "error: invalid dest: $dest"
usage_exit
fi
done
# check if we are root (but keep going)
if [ `id -u` -ne 0 ]; then
echo "warning: not root, may not work"
fi
# delete mbr
for dest in $DESTS; do
dd if=/dev/zero of=$dest bs=1M count=1 &
done
wait
partprobe
# efficiently copy source to all destinations
cat $SRC | tee $DESTS > /dev/null
partprobe
# add 2nd partition
for dest in $DESTS; do
/bin/echo -e "n\np\n\n\n\nw" | fdisk $dest &
done
wait
partprobe
# create ext4 on 2nd partition
for dest in $DESTS; do
mkfs.ext4 -L lxhome ${dest}2 &
done
wait
# setup temp directory for mountpoints
TMP_ROOT="/tmp/dd-multi-`date +%s`.$$"
rm -rf $TMP_ROOT
mkdir -p $TMP_ROOT
echo "using temp directory $TMP_ROOT"
for dest in $DESTS; do
# create mountpoints
mkdir -p ${TMP_ROOT}${dest}1
mkdir -p ${TMP_ROOT}${dest}2
# mount partitions
mount ${dest}1 ${TMP_ROOT}${dest}1
mount ${dest}2 ${TMP_ROOT}${dest}2
# move home directories to 2nd partition
mv ${TMP_ROOT}${dest}1/home/* ${TMP_ROOT}${dest}2/
# setup 2nd partition to be mounted as /home
echo 'LABEL=lxhome /home ext4 defaults 0 0' | \
tee -a ${TMP_ROOT}${dest}1/etc/fstab
# unmount partitions
umount ${TMP_ROOT}${dest}1
umount ${TMP_ROOT}${dest}2
done
# cleanup temp directory
rm -rf $TMP_ROOT
|