ubuntuusers.de

Per Bash-Script GPT-Partition erzeugen

Status: Ungelöst | Ubuntu-Version: Xubuntu 18.04 (Bionic Beaver)
Antworten |

glaskugel

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3663

https://linux.die.net/man/8/sfdisk sfdisk doesn't understand GUID Partition Table (GPT) and it is not designed for large partitions

Wie erzeuge ich am besten eine GPT-kompatible Partition für einen Flash-Speicher, denn ich dann mit eXFAT formatieren muss.

echo ",,b" | sfdisk "$USBGERAET"

Das führt zur Fehlermeldung:

Found invalid GPT and valid MBR; converting MBR to GPT format in memory.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11248

Wohnort: München

Nimm sgdisk statt sfdisk, das kann mit GPT umgehen.

cosinus

Avatar von cosinus

Anmeldungsdatum:
11. Mai 2010

Beiträge: 1374

Wohnort: HB

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3663

Da bin ich mir eben unsicher. Ich habe das in der Manpage schon gelesen. Mit root-Rechten und partitionieren kann das ganz schön in die Hose gehen 😉

Klar ist die Option -s

-s, --script Nie um Eingriff des Benutzers bitten

Aber wie lautet der komplette Befehl (sicher) richtig?

Ich schlage mal was vor:

parted /dev/sdf -s rm 1
parted /dev/sdf -s -a optimal mklabel gpt mkpart primary 0% 100%

cosinus

Avatar von cosinus

Anmeldungsdatum:
11. Mai 2010

Beiträge: 1374

Wohnort: HB

Willst du deine ersten Scripting-Gehversuche nicht lieber erst in einer Testumgebung machen? 😛

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3663

Die Frage hilft mir nicht wirklich weiter, ich finde nur bei den Beispielen, dass da auch einige falsch sind.

Wie soll ich mir denn eine Testumgebung machen? Ich kann maximal einen anderen PC verwenden, aber da könnte auch was passieren.

Ich mörchte zuerst die vorhandene Partiton auf der Speicherkarte entfernen und danach die Partitonstabelle anlegen.

Formatieren würde ich dann so:

mkfs.exfat -n "KARTE" /dev/sdf1

Es wäre schon hilfreich, wenn wer ein Syntaxbeispiel bringen würde.

https://www.gnu.org/software/parted/manual/parted.html hat mich vor einem Fehler gerettet, der wo anders als Beispiel angeführt wurde. Ich denke, ich weiß schon fast was ich brauche, bei rm ist mir noch nicht klar, was danach kommt, die Partitionsnummer wahrscheinlich. In der Manpage steht partition, bei gnu.org die Nummer.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7782

Wie soll ich mir den eine Testumgebung machen?

truncate -s 1G test.img
losetup --find --show --partscan test.img

und dann mit /dev/loopX testen

parted -- /dev/disk mklabel gpt mkpart datenstick 1MiB -1
mkfs /dev/diskp1

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3663

Danke, es sieht so aus, dass es wie vermutet passt:

parted /dev/sdf -s rm 1 # eventuell redundant
parted /dev/sdf -s -a optimal mklabel gpt mkpart primary 0% 100%

mkfs.exfat -n "KARTE" /dev/sdf1

Ob man jetzt parted auch gleich mit exFAT formatieren lassen kann, hat sich mir nicht erschlossen, ist aber auch nicht wichtig.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7782

Beim Startoffset würde ich ausschließlich mit MiB arbeiten und nicht mit %.

Sich da auf -a optimal zu verlassen, kann auch mal schiefgehen.

parted erstellt nur Partitionen ohne diese zu formatieren

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3663

So ganz passt es noch nicht, aber vielleicht hat die Fehlermeldung nichts mit parted zu tun?

Found invalid GPT and valid MBR; converting MBR to GPT format in memory.

Es läuft als Teil eines Scripts und da werden diese Meldungen ausgegeben.

Nach Löschen der 1. Partition

Fehler: /dev/sdf: unbekannte Partitionstabelle
Modell: TS-RDF5 SD Transcend (scsi)                                       
Festplatte  /dev/sdf:  64,8GB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: unknown
Disk-Flags:
Nach Dateisysten erstellen

Modell: TS-RDF5 SD Transcend (scsi)
Festplatte  /dev/sdf:  64,8GB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: gpt
Disk-Flags: 

Nummer  Anfang  Ende    Größe   Dateisystem  Name     Flags
 1      1049kB  64,8GB  64,8GB               primary
/dev/sdf1 wird mit EXFAT formatiert

mkexfatfs 1.2.8
Creating... done.
Flushing... done.
File system created successfully.
Nach Formatierung

Modell: TS-RDF5 SD Transcend (scsi)
Festplatte  /dev/sdf:  64,8GB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: gpt
Disk-Flags: 

Nummer  Anfang  Ende    Größe   Dateisystem  Name     Flags
 1      1049kB  64,8GB  64,8GB               primary

Aber:

Ausgabe von gdisk

GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. 
***************************************************************

Disk /dev/sdf1: 126609408 sectors, 60.4 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 4102F927-56EB-488A-8FEF-3E53656AA918
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 126609374
Partitions will be aligned on 2048-sector boundaries
Total free space is 126609341 sectors (60.4 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Ist das jetzt ein Bug von gdisk? GPT: not present

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7782

Ist das jetzt ein Bug von gdisk? GPT: not present

Disk /dev/sdf1:

Daß auf der Partition sdf1 keine Partitionstabelle ist, das wär normal. Du musst /dev/sdf als Disk schauen...

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3663

frostschutz schrieb:

Beim Startoffset würde ich ausschließlich mit MiB arbeiten und nicht mit %.

Sich da auf -a optimal zu verlassen, kann auch mal schiefgehen.

Hmmh, wo anders las ich, dass nur % gut funkioniert. Wie weiß ich aber die MiB? Jede Karte soll einfach voll genutzt werden?

Ich frage zwar im Script sowieso die Größe ab, da erst bei größer als 32GB gpt verwendet wird, wie ich genau auf die maximale Größe komme ist mir nicht klar.

BYTESIZE=`blockdev --getsize64 "$USBGERAET"`

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3663

OOps, falsche Variable kopiert, hatte ich mich schon gewundert, dass es in der Konsole gepasst hat.

Kannst du mir bei der Größenangabe noch auf die Sprünge helfen? Was soll ich jetzt für Anfang und Ende nehmen? Du hast dich ja auf den Anfang bezogen, also 1 oder -1, wäre 100% für das Ende ok?

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7782

Solange es nur um 1 Partition geht, starte bei 1 MiB.

Wie du das Partitionsende angibst, ist wurscht. (-1 oder 100% oder ...)

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3663

Danke dir!

Antworten |