wipe beginning so that grub-install doesn't complain
[gnt-info] / lv-insert-part.sh
1 #!/bin/sh -xe
2
3 # insert bootable partition table at beginning of lv
4
5 test -z "$1" || test ! -e "$1" && echo "Usage: $0 /path/to/lv" && exit 1
6
7 lvs --noheadings -o vg_name,name,lv_size $1 | tee /dev/stderr | while read vg_name name lv_size ; do
8         lvcreate -s -L $lv_size -n ${name}.snap /dev/$vg_name/$name
9
10         # wipe beginning so that grub-install doesn't complain
11         dd if=/dev/zero of=/dev/$vg_name/$name bs=1 count=2048
12
13         # create partition
14         echo '2048,+,L,*' | sfdisk --no-reread /dev/$vg_name/$name
15
16         # FIXME label?
17         mkfs.ext4 -F -E offset=$(( 2048 * 512 )) /dev/$vg_name/$name
18
19         mkdir /tmp/$name
20         mount /dev/$vg_name/$name /tmp/$name -o offset=$(( 2048 * 512 ))
21
22
23         mkdir /tmp/${name}.snap
24         mount /dev/$vg_name/${name}.snap /tmp/${name}.snap
25
26         rsync -raHX --numeric-ids --sparse /tmp/${name}.snap/ /tmp/$name/
27
28         umount /tmp/${name}.snap
29         umount /tmp/$name
30
31         rmdir /tmp/${name}.snap
32         rmdir /tmp/${name}
33
34         lvremove -y /dev/$vg_name/${name}.snap
35 done