Hallo,
ich möchte eine GPT für ein arm64-board anlegen und habe eine vorhandene gpt, wo ich die letzten beiden Partitionen vom user definierbar machen möchte.
aktuell schaue ich mir das mit (s)gdisk an:
$ sudo gdisk /dev/sdb [sudo] Passwort für frank: GPT fdisk (gdisk) version 1.0.8 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): p Disk /dev/sdb: 62333952 sectors, 29.7 GiB Model: SD/MMC/MS PRO Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): 2BD17853-102B-4500-AA1A-8A21D4D7984D Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 62333918 Partitions will be aligned on 2-sector boundaries Total free space is 49528798 sectors (23.6 GiB) Number Start (sector) End (sector) Size Code Name 1 34 8191 4.0 MiB 8300 bl2 2 8192 9215 512.0 KiB 8300 u-boot-env 3 9216 13311 2.0 MiB 8300 factory 4 13312 17407 2.0 MiB 8300 fip 5 17408 222207 100.0 MiB 8300 kernel 6 222208 12805120 6.0 GiB 8300 rootfs
diese gpt möchte ich jetzt erstmal via sgdisk anlegen. was mich wundert ist, dass die manpage immer von sektoren redet
Some options take no arguments, others take one argument (typically a partition number), and others take compound arguments with colon delimitation. For instance, -n (--new) takes a partition number, a starting sector number, and an ending sector number, as in sgdisk -n 2:2000:50000 /dev/sdc, which creates a new partition, numbered 2, starting at sector 2000 an ending at sector 50,000, on /dev/sdc.
im https://wiki.ubuntuusers.de/gdisk/#Anlegen-einer-Partition aber von bytes gesprochen wird
Die neue Partition erhält die Nummer 1, wird 1024 Bytes groß und vor die anderen Partitionen in den Bereich von 1024-2048 Bytes gelegt (-n 1:1024:2048)
wie oben zu sehen ist, ist die Sektor-größe 512 byte, ich möchte aber trotzdem gerne das richtige alignment verwenden (nur 1024 bleibt dann bei geraden sektoren)...
so ganz passt das mit dem alignment nicht, der Wert wird scheinbar auch als sektor verwendet und nicht als bytes
aktuell sieht mein Script so aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/bin/bash echo "losetup needs root permissions" dev=$(sudo losetup -f) img=$(mktemp) #imgsize=7000 imgsize=10 echo "using image ${img} with size ${imgsize}MiB and dev ${dev}" read -n1 -p "continue? [yn]:" choice if [[ "$choice" == "y" ]]; then dd if=/dev/zero of=${img} bs=1M count=${imgsize} sudo losetup ${dev} ${img} sudo sgdisk -o ${dev} sudo sgdisk -a 1 -n 1:34:8191 -t 1:8300 -c 1:"bl2" ${dev} sudo sgdisk -a 1 -n 2:8192:9215 -t 2:8300 -c 2:"u-boot-env" ${dev} sudo sgdisk -a 1 -n 3:9216:13311 -t 3:8300 -c 3:"factory" ${dev} sudo sgdisk -a 1 -n 4:13312:17407 -t 4:8300 -c 4:"fip" ${dev} sudo sgdisk -p ${dev} sudo losetup -d ${dev} fi |
und das erzeugt zumindest die Tabelle wie ich sie brauche:
Number Start (sector) End (sector) Size Code Name 1 34 8191 4.0 MiB 8300 bl2 2 8192 9215 512.0 KiB 8300 u-boot-env 3 9216 13311 2.0 MiB 8300 factory 4 13312 17407 2.0 MiB 8300 fip
den MBR sehe ich aber aktuell nicht...wird der mit angelegt?
(alignment jetzt mal auf 1 gesetzt weil sowohl 1024 als auch der default von 2048 für ein verschieben gesorgt haben):
Information: Moved requested sector from 34 to 2048 in order to align on 2048-sector boundaries.
wie kann ich mit sgdisk den "protected MBR" anlegen, oder wird der per default erzeugt?
Wie wäre der sauberste Weg den Anfang der rootfs-partition auszurechnen, wenn man die boot-partition mit M(i)B (aktuell 100) angibt?
Normalerweise startsektor_root = startsektor_boot + (MiB*1024*2), also in der original-Tabelle 222208=17408+(100*1024*2) ähnlich müsste man ja auch den endsektor von der boot-partition ausrechnen (nur dann halt -1)
Gruß Frank