]>
Commit | Line | Data |
---|---|---|
e29e4d57 ZJS |
1 | #!/usr/bin/env bash |
2 | set -ex | |
3 | ||
f17bdf82 DDM |
4 | [[ -f /dev/loop-control ]] || exit 77 |
5 | ||
e29e4d57 ZJS |
6 | repart=$1 |
7 | test -x $repart | |
8 | ||
a3709e37 | 9 | D=$(mktemp --tmpdir --directory "test-repart.XXXXXXXXXX") |
e29e4d57 ZJS |
10 | trap "rm -rf '$D'" EXIT INT QUIT PIPE |
11 | mkdir -p $D/definitions | |
12 | ||
e29e4d57 ZJS |
13 | SEED=e2a40bf9-73f1-4278-9160-49c031e7aef8 |
14 | ||
e4ec8b1f ZJS |
15 | echo "### Testing systemd-repart --empty=create ###" |
16 | ||
05ae606b | 17 | $repart $D/zzz --empty=create --size=1G --seed=$SEED |
e29e4d57 | 18 | |
46072ae3 | 19 | sfdisk -d $D/zzz | grep -v -e 'sector-size' -e '^$' >$D/empty |
e29e4d57 ZJS |
20 | |
21 | cmp $D/empty - <<EOF | |
22 | label: gpt | |
23 | label-id: EF7F7EE2-47B3-4251-B1A1-09EA8BF12D5D | |
24 | device: $D/zzz | |
25 | unit: sectors | |
26 | first-lba: 2048 | |
27 | last-lba: 2097118 | |
28 | EOF | |
29 | ||
e4ec8b1f ZJS |
30 | echo "### Testing with root, root2, home, & swap ###" |
31 | ||
e29e4d57 ZJS |
32 | cat >$D/definitions/root.conf <<EOF |
33 | [Partition] | |
26b0fda9 | 34 | Type=root-x86-64 |
e29e4d57 ZJS |
35 | EOF |
36 | ||
37 | ln -s root.conf $D/definitions/root2.conf | |
38 | ||
39 | cat >$D/definitions/home.conf <<EOF | |
40 | [Partition] | |
41 | Type=home | |
46072ae3 ZJS |
42 | Label=home-first |
43 | Label=home-always-too-long-xxxxxxxxxxxxxx-%v | |
e29e4d57 ZJS |
44 | EOF |
45 | ||
46072ae3 | 46 | cat >$D/definitions/swap.conf <<EOF |
e29e4d57 ZJS |
47 | [Partition] |
48 | Type=swap | |
49 | SizeMaxBytes=64M | |
50 | PaddingMinBytes=92M | |
51 | EOF | |
52 | ||
53 | $repart $D/zzz --dry-run=no --seed=$SEED --definitions=$D/definitions | |
54 | ||
55 | sfdisk -d $D/zzz | grep -v -e 'sector-size' -e '^$' >$D/populated | |
56 | ||
57 | cmp $D/populated - <<EOF | |
58 | label: gpt | |
59 | label-id: EF7F7EE2-47B3-4251-B1A1-09EA8BF12D5D | |
60 | device: $D/zzz | |
61 | unit: sectors | |
62 | first-lba: 2048 | |
63 | last-lba: 2097118 | |
46072ae3 | 64 | $D/zzz1 : start= 2048, size= 591856, type=933AC7E1-2EB4-4F13-B844-0E14E2AEF915, uuid=A6005774-F558-4330-A8E5-D6D2C01C01D6, name="home-first" |
e29e4d57 ZJS |
65 | $D/zzz2 : start= 593904, size= 591856, type=4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709, uuid=CE9C76EB-A8F1-40FF-813C-11DCA6C0A55B, name="root-x86-64" |
66 | $D/zzz3 : start= 1185760, size= 591864, type=4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709, uuid=AC60A837-550C-43BD-B5C4-9CB73B884E79, name="root-x86-64-2" | |
67 | $D/zzz4 : start= 1777624, size= 131072, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=2AA78CDB-59C7-4173-AF11-C7453737A5D1, name="swap" | |
68 | EOF | |
69 | ||
e4ec8b1f ZJS |
70 | echo "### Testing with root, root2, home, swap, & another partition ###" |
71 | ||
e29e4d57 ZJS |
72 | cat >$D/definitions/swap.conf <<EOF |
73 | [Partition] | |
74 | Type=swap | |
75 | SizeMaxBytes=64M | |
76 | EOF | |
77 | ||
78 | cat >$D/definitions/extra.conf <<EOF | |
79 | [Partition] | |
80 | Type=linux-generic | |
7b5cb4ce TH |
81 | Label=custom_label |
82 | UUID=a0a1a2a3a4a5a6a7a8a9aaabacadaeaf | |
e29e4d57 ZJS |
83 | EOF |
84 | ||
46072ae3 ZJS |
85 | echo "Label=ignored_label" >>$D/definitions/home.conf |
86 | echo "UUID=b0b1b2b3b4b5b6b7b8b9babbbcbdbebf" >>$D/definitions/home.conf | |
7b5cb4ce | 87 | |
e29e4d57 ZJS |
88 | $repart $D/zzz --dry-run=no --seed=$SEED --definitions=$D/definitions |
89 | ||
90 | sfdisk -d $D/zzz | grep -v -e 'sector-size' -e '^$' >$D/populated2 | |
91 | ||
92 | cmp $D/populated2 - <<EOF | |
93 | label: gpt | |
94 | label-id: EF7F7EE2-47B3-4251-B1A1-09EA8BF12D5D | |
95 | device: $D/zzz | |
96 | unit: sectors | |
97 | first-lba: 2048 | |
98 | last-lba: 2097118 | |
46072ae3 | 99 | $D/zzz1 : start= 2048, size= 591856, type=933AC7E1-2EB4-4F13-B844-0E14E2AEF915, uuid=A6005774-F558-4330-A8E5-D6D2C01C01D6, name="home-first" |
e29e4d57 ZJS |
100 | $D/zzz2 : start= 593904, size= 591856, type=4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709, uuid=CE9C76EB-A8F1-40FF-813C-11DCA6C0A55B, name="root-x86-64" |
101 | $D/zzz3 : start= 1185760, size= 591864, type=4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709, uuid=AC60A837-550C-43BD-B5C4-9CB73B884E79, name="root-x86-64-2" | |
102 | $D/zzz4 : start= 1777624, size= 131072, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=2AA78CDB-59C7-4173-AF11-C7453737A5D1, name="swap" | |
7b5cb4ce | 103 | $D/zzz5 : start= 1908696, size= 188416, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=A0A1A2A3-A4A5-A6A7-A8A9-AAABACADAEAF, name="custom_label" |
e29e4d57 ZJS |
104 | EOF |
105 | ||
e4ec8b1f ZJS |
106 | echo "### Resizing to 2G ###" |
107 | ||
05ae606b | 108 | $repart $D/zzz --size=2G --dry-run=no --seed=$SEED --definitions=$D/definitions |
e29e4d57 ZJS |
109 | |
110 | sfdisk -d $D/zzz | grep -v -e 'sector-size' -e '^$' >$D/populated3 | |
111 | ||
112 | cmp $D/populated3 - <<EOF | |
113 | label: gpt | |
114 | label-id: EF7F7EE2-47B3-4251-B1A1-09EA8BF12D5D | |
115 | device: $D/zzz | |
116 | unit: sectors | |
117 | first-lba: 2048 | |
118 | last-lba: 4194270 | |
46072ae3 | 119 | $D/zzz1 : start= 2048, size= 591856, type=933AC7E1-2EB4-4F13-B844-0E14E2AEF915, uuid=A6005774-F558-4330-A8E5-D6D2C01C01D6, name="home-first" |
e29e4d57 ZJS |
120 | $D/zzz2 : start= 593904, size= 591856, type=4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709, uuid=CE9C76EB-A8F1-40FF-813C-11DCA6C0A55B, name="root-x86-64" |
121 | $D/zzz3 : start= 1185760, size= 591864, type=4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709, uuid=AC60A837-550C-43BD-B5C4-9CB73B884E79, name="root-x86-64-2" | |
122 | $D/zzz4 : start= 1777624, size= 131072, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=2AA78CDB-59C7-4173-AF11-C7453737A5D1, name="swap" | |
7b5cb4ce | 123 | $D/zzz5 : start= 1908696, size= 2285568, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=A0A1A2A3-A4A5-A6A7-A8A9-AAABACADAEAF, name="custom_label" |
e29e4d57 | 124 | EOF |
757bc2e4 LP |
125 | |
126 | dd if=/dev/urandom of=$D/block-copy bs=4096 count=10240 | |
127 | ||
e4ec8b1f ZJS |
128 | echo "### Testing with root, root2, home, swap, another partition, & partition copy ###" |
129 | ||
757bc2e4 LP |
130 | cat >$D/definitions/extra2.conf <<EOF |
131 | [Partition] | |
132 | Type=linux-generic | |
133 | Label=block-copy | |
134 | UUID=2a1d97e1d0a346cca26eadc643926617 | |
135 | CopyBlocks=$D/block-copy | |
136 | EOF | |
137 | ||
138 | $repart $D/zzz --size=3G --dry-run=no --seed=$SEED --definitions=$D/definitions | |
139 | ||
140 | sfdisk -d $D/zzz | grep -v -e 'sector-size' -e '^$' >$D/populated4 | |
141 | ||
142 | cmp $D/populated4 - <<EOF | |
143 | label: gpt | |
144 | label-id: EF7F7EE2-47B3-4251-B1A1-09EA8BF12D5D | |
145 | device: $D/zzz | |
146 | unit: sectors | |
147 | first-lba: 2048 | |
148 | last-lba: 6291422 | |
46072ae3 | 149 | $D/zzz1 : start= 2048, size= 591856, type=933AC7E1-2EB4-4F13-B844-0E14E2AEF915, uuid=A6005774-F558-4330-A8E5-D6D2C01C01D6, name="home-first" |
757bc2e4 LP |
150 | $D/zzz2 : start= 593904, size= 591856, type=4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709, uuid=CE9C76EB-A8F1-40FF-813C-11DCA6C0A55B, name="root-x86-64" |
151 | $D/zzz3 : start= 1185760, size= 591864, type=4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709, uuid=AC60A837-550C-43BD-B5C4-9CB73B884E79, name="root-x86-64-2" | |
152 | $D/zzz4 : start= 1777624, size= 131072, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=2AA78CDB-59C7-4173-AF11-C7453737A5D1, name="swap" | |
153 | $D/zzz5 : start= 1908696, size= 2285568, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=A0A1A2A3-A4A5-A6A7-A8A9-AAABACADAEAF, name="custom_label" | |
154 | $D/zzz6 : start= 4194264, size= 2097152, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=2A1D97E1-D0A3-46CC-A26E-ADC643926617, name="block-copy" | |
155 | EOF | |
156 | ||
157 | cmp --bytes=41943040 --ignore-initial=0:$((512*4194264)) $D/block-copy $D/zzz | |
e4ec8b1f | 158 | |
f7011e17 LP |
159 | if [ `id -u` == 0 ] && type -P cryptsetup diff losetup > /dev/null ; then |
160 | echo "### Testing Format=/Encrypt=/CopyFiles=" | |
161 | ||
162 | # These tests require privileges unfortunately | |
163 | ||
164 | cat >$D/definitions/extra3.conf <<EOF | |
165 | [Partition] | |
166 | Type=linux-generic | |
167 | Label=luks-format-copy | |
168 | UUID=7b93d1f2-595d-4ce3-b0b9-837fbd9e63b0 | |
169 | Format=ext4 | |
170 | Encrypt=yes | |
171 | CopyFiles=$D/definitions:/def | |
172 | SizeMinBytes=48M | |
173 | EOF | |
174 | ||
175 | $repart $D/zzz --size=auto --dry-run=no --seed=$SEED --definitions=$D/definitions | |
176 | ||
177 | sfdisk -d $D/zzz | grep -v -e 'sector-size' -e '^$' >$D/populated5 | |
178 | ||
179 | cmp $D/populated5 - <<EOF | |
180 | label: gpt | |
181 | label-id: EF7F7EE2-47B3-4251-B1A1-09EA8BF12D5D | |
182 | device: $D/zzz | |
183 | unit: sectors | |
184 | first-lba: 2048 | |
185 | last-lba: 6389726 | |
186 | $D/zzz1 : start= 2048, size= 591856, type=933AC7E1-2EB4-4F13-B844-0E14E2AEF915, uuid=A6005774-F558-4330-A8E5-D6D2C01C01D6, name="home-first" | |
187 | $D/zzz2 : start= 593904, size= 591856, type=4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709, uuid=CE9C76EB-A8F1-40FF-813C-11DCA6C0A55B, name="root-x86-64" | |
188 | $D/zzz3 : start= 1185760, size= 591864, type=4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709, uuid=AC60A837-550C-43BD-B5C4-9CB73B884E79, name="root-x86-64-2" | |
189 | $D/zzz4 : start= 1777624, size= 131072, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=2AA78CDB-59C7-4173-AF11-C7453737A5D1, name="swap" | |
190 | $D/zzz5 : start= 1908696, size= 2285568, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=A0A1A2A3-A4A5-A6A7-A8A9-AAABACADAEAF, name="custom_label" | |
191 | $D/zzz6 : start= 4194264, size= 2097152, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=2A1D97E1-D0A3-46CC-A26E-ADC643926617, name="block-copy" | |
192 | $D/zzz7 : start= 6291416, size= 98304, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=7B93D1F2-595D-4CE3-B0B9-837FBD9E63B0, name="luks-format-copy" | |
193 | EOF | |
194 | ||
195 | LOOP=`losetup -P --show --find $D/zzz` | |
196 | VOLUME=test-repart-$RANDOM | |
197 | ||
198 | touch $D/empty-password | |
199 | cryptsetup open --type=luks2 --key-file=$D/empty-password ${LOOP}p7 $VOLUME | |
200 | mkdir $D/mount | |
201 | mount -t ext4 /dev/mapper/$VOLUME $D/mount | |
202 | diff -r $D/mount/def $D/definitions > /dev/null | |
203 | umount $D/mount | |
204 | cryptsetup close $VOLUME | |
205 | losetup -d $LOOP | |
206 | else | |
207 | echo "### Skipping Format=/Encrypt=/CopyFiles= test, lacking privileges or missing cryptsetup/diff/losetup" | |
208 | fi | |
209 | ||
e4ec8b1f ZJS |
210 | echo "### Testing json output ###" |
211 | $repart $D/zzz --size=3G --dry-run=no --seed=$SEED --definitions=$D/definitions --json=help | |
212 | $repart $D/zzz --size=3G --dry-run=no --seed=$SEED --definitions=$D/definitions --json=pretty | |
213 | $repart $D/zzz --size=3G --dry-run=no --seed=$SEED --definitions=$D/definitions --json=short |