diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/partvi | 99 |
1 files changed, 30 insertions, 69 deletions
@@ -191,26 +191,22 @@ create_ptable_conf() | |||
191 | devsz=$(stat -L -c '%s' "$part") || return | 191 | devsz=$(stat -L -c '%s' "$part") || return |
192 | [ "$start" -a "$devsz" ] || return | 192 | [ "$start" -a "$devsz" ] || return |
193 | 193 | ||
194 | [ "$((devsz % 512))" -eq 0 ] | ||
195 | |||
194 | case "$type" in | 196 | case "$type" in |
195 | partition-table) | 197 | partition-table) start=$((start + devsz)); return;; |
196 | start=$((start + devsz)) | 198 | efi-system-partition) typecode=C12A7328-F81F-11D2-BA4B-00A0C93EC93B ;; |
197 | return;; | 199 | bios-grub) typecode=21686148-6449-6E6F-744E-656564454649 ;; |
198 | efi-system-partition) typecode=ef00 ;; | 200 | *) typecode=0FC63DAF-8483-4772-8E79-3D69D8477DE4 ;; |
199 | bios-grub) typecode=ef02 ;; | ||
200 | samizdat-*) typecode=8e00 ;; | ||
201 | dm-verity-hashes|dm-verity-data) typecode=8e00 ;; | ||
202 | esac | 201 | esac |
203 | 202 | ||
204 | set -- --new "$i:$start:$((start + devsz - 1))" --change-name "$i:$name" | 203 | printf '%d: start=%d, size=%d, type=%s, name="%s"\n' \ |
205 | 204 | "$i" \ | |
206 | if [ "$typecode" ] | 205 | "$((start / 512))" \ |
207 | then | 206 | "$((devsz / 512))" \ |
208 | set -- "$@" --typecode "$i:$typecode" | 207 | "$typecode" \ |
209 | fi | 208 | "$name" \ |
210 | printf '%s\0' "$@" >> "$ptable" | 209 | >> "$ptable.sfdisk" |
211 | |||
212 | typecode=0FC63DAF-8483-4772-8E79-3D69D8477DE4 | ||
213 | printf '%d: start=%d, size=%d, type=%s, name="%s"\n' "$i" "$((start / 512))" "$((devsz / 512))" "$typecode" "$name" >> "$ptable.sfdisk" | ||
214 | let ++i | 210 | let ++i |
215 | start=$((start + devsz)) | 211 | start=$((start + devsz)) |
216 | } | 212 | } |
@@ -227,18 +223,12 @@ then sudo= | |||
227 | else sudo=sudo | 223 | else sudo=sudo |
228 | fi | 224 | fi |
229 | 225 | ||
230 | map_name=samline | 226 | if whole=$(losetup -j whole.img -O NAME --noheadings) |
231 | 227 | then | |
232 | quietly $sudo umount *.mnt | 228 | quietly $sudo umount *.mnt |
233 | quietly $sudo kpartx -dv /dev/mapper/"$map_name" | 229 | quietly $sudo kpartx -dv "$whole" |
234 | quietly $sudo dmsetup remove "$map_name" | 230 | quietly $sudo losetup -D |
235 | quietly $sudo losetup -D | 231 | fi |
236 | |||
237 | # map=$builddir/dmsetup.map | ||
238 | # : > "$map" | ||
239 | # start=0 | ||
240 | # iterate_partitions create_dmsetup_map | ||
241 | # $sudo dmsetup -v create "$map_name" "$map" | ||
242 | 232 | ||
243 | sfdisk_init() | 233 | sfdisk_init() |
244 | { | 234 | { |
@@ -256,7 +246,7 @@ sfdisk_init() | |||
256 | label: gpt | 246 | label: gpt |
257 | unit: sectors | 247 | unit: sectors |
258 | first-lba: 34 | 248 | first-lba: 34 |
259 | # last-lba: ${LAST_LBA} | 249 | last-lba: ${LAST_LBA} |
260 | 250 | ||
261 | END | 251 | END |
262 | } | 252 | } |
@@ -280,33 +270,6 @@ pee_on_table() | |||
280 | $sudo sfdisk -Y MBR --dump "$dev" || return | 270 | $sudo sfdisk -Y MBR --dump "$dev" || return |
281 | } | 271 | } |
282 | 272 | ||
283 | |||
284 | |||
285 | # exit | ||
286 | # | ||
287 | # dev=/dev/mapper/$map_name | ||
288 | # ( | ||
289 | # set -- | ||
290 | # i=1 | ||
291 | # while read a b c d e | ||
292 | # do | ||
293 | # echo "a=$a c=$c" | ||
294 | # [ "$a" -gt 0 ] || continue | ||
295 | # [ "$b" -gt 2048 ] || continue | ||
296 | # [ "$c" = linear ] || continue | ||
297 | # | ||
298 | # set -- "$@" -n "$i:$a:$((a + b - 1))" | ||
299 | # let ++i | ||
300 | # done < "$map" | ||
301 | # $sudo sgdisk -o "$@" -p "$dev" | ||
302 | # ) | ||
303 | # $sudo kpartx -u "$dev" | ||
304 | |||
305 | # $sudo kpartx -a "$dev" | ||
306 | |||
307 | # $sudo kpartx -d "$dev" | ||
308 | # $sudo dmsetup remove "$map_name" | ||
309 | |||
310 | truncate -s0 whole.img | 273 | truncate -s0 whole.img |
311 | for f in part*.conf | 274 | for f in part*.conf |
312 | do | 275 | do |
@@ -318,15 +281,15 @@ $sudo losetup -L -f whole.img | |||
318 | whole=$(losetup -j whole.img -O NAME --noheadings) | 281 | whole=$(losetup -j whole.img -O NAME --noheadings) |
319 | (pee_on_table "$whole") || exit | 282 | (pee_on_table "$whole") || exit |
320 | 283 | ||
321 | map_name=${whole#/dev/} | 284 | $sudo kpartx -u "$whole" |
322 | $sudo kpartx -a "$whole" | ||
323 | 285 | ||
324 | target=x86_64-efi | 286 | target=x86_64-efi |
325 | target=i386-pc | 287 | target=i386-pc |
326 | set -- grub-install --target=$target --removable # --boot-directory=/mnt/boot --efi-directory=/mnt | 288 | set -- grub-install -s -v --target=$target --removable # --boot-directory=/mnt/boot --efi-directory=/mnt |
327 | 289 | ||
328 | for f in part*.conf | 290 | for f in part*.conf |
329 | do | 291 | do |
292 | [ "$f" != part0.conf ] || continue | ||
330 | notice "Processing $f" | 293 | notice "Processing $f" |
331 | img=${f%.conf} | 294 | img=${f%.conf} |
332 | dev=/dev/mapper/${whole#/dev/}p${img#part} | 295 | dev=/dev/mapper/${whole#/dev/}p${img#part} |
@@ -336,6 +299,7 @@ do | |||
336 | require_var name | 299 | require_var name |
337 | require_var type | 300 | require_var type |
338 | case "$type" in | 301 | case "$type" in |
302 | dm-verity-hashes|partition-table) ;; | ||
339 | efi-system-partition|bios-grub) | 303 | efi-system-partition|bios-grub) |
340 | mkdir -p "$mnt" | 304 | mkdir -p "$mnt" |
341 | loudly $sudo mount "$dev" "$mnt" | 305 | loudly $sudo mount "$dev" "$mnt" |
@@ -348,15 +312,14 @@ do | |||
348 | set -- "$@" --efi-directory="$mnt" | 312 | set -- "$@" --efi-directory="$mnt" |
349 | fi | 313 | fi |
350 | ;; | 314 | ;; |
315 | *) mkdir -p "$mnt" | ||
316 | loudly $sudo mount "$dev" "$mnt" | ||
317 | ;; | ||
351 | *) notice "Not mounting $name" ;; | 318 | *) notice "Not mounting $name" ;; |
352 | esac | 319 | esac |
353 | done | 320 | done |
354 | 321 | ||
355 | #loudly ls -l /dev/mapper/ | 322 | loudly $sudo "$@" "$whole" |
356 | #loudly $sudo grub-probe -v -d "$whole" | ||
357 | |||
358 | loudly $sudo "$@" -v -s --force "$whole" | ||
359 | exit | ||
360 | 323 | ||
361 | for f in part*.conf | 324 | for f in part*.conf |
362 | do | 325 | do |
@@ -367,7 +330,5 @@ do | |||
367 | $sudo rmdir "$mnt" | 330 | $sudo rmdir "$mnt" |
368 | fi | 331 | fi |
369 | done | 332 | done |
370 | 333 | loudly $sudo kpartx -d "$whole" | |
371 | quietly $sudo kpartx -dv "$dev" | 334 | loudly $sudo losetup -d "$whole" |
372 | quietly $sudo dmsetup remove "$map_name" | ||
373 | quietly $sudo losetup -D | ||