Hallo Flugis, ich möchte in einem Script den emmc Speicher re-partitionieren. Ich hab dazu folgendes Konstrukt, zugegebenermaßen mich komplett auf meinem Mist gewachsen.
sed -e 's/\s*([+0-9a-zA-Z]*).*/\1/' << EOF | fdisk -u /dev/mmcblk0 o # clear the in memory partition table n # new partition p # primary partition 1 # partition number 1 16 # default - start at beginning of disk 390719 # 200 MB root partition n # new partition p # primary partition 2 # partion number 2 # default, start immediately after preceding partition 781439 # 200 MB partition n # new partition p # primary partition 3 # partion number 3 # default, start immediately after preceding partition 2148671 # ~700 MB partition n # new partition e # primary partition # 4 # partion numer 4, default, start immediately after preceding partition # til end of flash n # new partition l # logical partition # default, start immediately after preceding partition 3426751 # ~650 MB partition n # new partition l # logical partition # default - start at beginning of disk 3817471 # 200 MB partition p # print it w # write the partition table q # and we're done EOF
Das scheint allerdings nicht sicher zu sein, ich hab schon gesehen das fdisk verschieden antwortet, je nach Version. Vielleicht helfen schon Einheiten zu verwenden. Gibt es grundsätzlich bessere Herangehensweisen, das sieht nicht wirklich elegant aus? Jemand eine bessere Idee?
Gruß, Arno
On Wed, Oct 20, 2021 at 05:36:04PM +0200, Arno wrote:
Hallo Flugis, ich möchte in einem Script den emmc Speicher re-partitionieren. Ich hab dazu folgendes Konstrukt, zugegebenermaßen mich komplett auf meinem Mist gewachsen.
Leider nur schnell aus der Hüfte mit wenig Details, weil gerade ein wenig unter Stress -- aber Du kannst gerne nachhaken :)
Für Skripte solltest Du lieber `sfdisk' als `fdisk' benutzen. Letzterer ist sehr auf interaktive Nutzung hin zugeschnitten.
lg -- t
Am 20.10.21 um 17:47 schrieb tomas@tuxteam.de:
On Wed, Oct 20, 2021 at 05:36:04PM +0200, Arno wrote:
Hallo Flugis, ich möchte in einem Script den emmc Speicher re-partitionieren. Ich hab dazu folgendes Konstrukt, zugegebenermaßen mich komplett auf meinem Mist gewachsen.
Leider nur schnell aus der Hüfte mit wenig Details, weil gerade ein wenig unter Stress -- aber Du kannst gerne nachhaken :)
Für Skripte solltest Du lieber `sfdisk' als `fdisk' benutzen. Letzterer ist sehr auf interaktive Nutzung hin zugeschnitten.
lg -- t
Hallo Thomas, das klingt gut. Nur hab ich den Befehl mit einiger Sicherheit nicht auf dem System. Mal sehen ob ich das nachrüsten kann. Gibt mir auf jeden Fall erst mal was zum weiterstöbern. Grüße, Arno
On Wed, Oct 20, 2021 at 05:53:39PM +0200, Arno wrote:
Am 20.10.21 um 17:47 schrieb tomas@tuxteam.de:
[...]
Hallo Thomas, das klingt gut. Nur hab ich den Befehl mit einiger Sicherheit nicht auf dem System. Mal sehen ob ich das nachrüsten kann. Gibt mir auf jeden Fall erst mal was zum weiterstöbern. Grüße, Arno
Unter Debian kommt es mit dem Paket fdisk mit (zusammen mit fdisk und cfdisk; letzteren kenne ich nicht mal :)
Ich weiss das mit dem sfdisk, weil ich versucht habe, Images auf sdcards zu bauen und zuerst an fdisk verzweifelt bin, vermutlich wie Du.
lg -- t
Hi Arno,
Am 20.10.21 um 17:53 schrieb Arno:
das klingt gut. Nur hab ich den Befehl mit einiger Sicherheit nicht auf dem System. Mal sehen ob ich das nachrüsten kann.
bei debian/ubuntu ist es im fdisk Paket. Kann aber natürlich bei deinem System anders sein.
Grüße Marek
Hi Arno,
sfdisk ist dein Freund:
# sfdisk -d /dev/xyz > xyz.part
und dann
# sfdisk /dev/xyz < xyz.part
zum Schreiben.
Grüße Marek
Am 20.10.21 um 17:36 schrieb Arno:
Hallo Flugis, ich möchte in einem Script den emmc Speicher re-partitionieren. Ich hab dazu folgendes Konstrukt, zugegebenermaßen mich komplett auf meinem Mist gewachsen.
sed -e 's/\s*([+0-9a-zA-Z]*).*/\1/' << EOF | fdisk -u /dev/mmcblk0 o # clear the in memory partition table n # new partition p # primary partition 1 # partition number 1 16 # default - start at beginning of disk 390719 # 200 MB root partition n # new partition p # primary partition 2 # partion number 2 # default, start immediately after preceding partition 781439 # 200 MB partition n # new partition p # primary partition 3 # partion number 3 # default, start immediately after preceding partition 2148671 # ~700 MB partition n # new partition e # primary partition # 4 # partion numer 4, default, start immediately after preceding partition # til end of flash n # new partition l # logical partition # default, start immediately after preceding partition 3426751 # ~650 MB partition n # new partition l # logical partition # default - start at beginning of disk 3817471 # 200 MB partition p # print it w # write the partition table q # and we're done EOF
Das scheint allerdings nicht sicher zu sein, ich hab schon gesehen das fdisk verschieden antwortet, je nach Version. Vielleicht helfen schon Einheiten zu verwenden. Gibt es grundsätzlich bessere Herangehensweisen, das sieht nicht wirklich elegant aus? Jemand eine bessere Idee?
Gruß, Arno
On Wed, Oct 20, 2021 at 05:56:02PM +0200, Marek Kralewski wrote:
Hi Arno,
sfdisk ist dein Freund:
Great minds think alike ;-)
lg -- t
On Wed, Oct 20, 2021 at 06:00:50PM +0200, Marek Kralewski wrote:
Ich schreib jetzt nicht mehr... Tomas ist immer schneller :-)
Nur ausnahmsweise. Sonst zeichne ich mich nicht gerade durch Schnelligkeit aus. Und Du hast ja immerhin ein Rezept geliefert, ich nur heisse Luft :)
lg -- t
Am 20.10.21 um 17:36 schrieb Arno:
Hallo Flugis, ich möchte in einem Script den emmc Speicher re-partitionieren. Ich hab dazu folgendes Konstrukt, zugegebenermaßen mich komplett auf meinem Mist gewachsen.
sed -e 's/\s*([+0-9a-zA-Z]*).*/\1/' << EOF | fdisk -u /dev/mmcblk0 o # clear the in memory partition table n # new partition p # primary partition 1 # partition number 1 16 # default - start at beginning of disk 390719 # 200 MB root partition n # new partition p # primary partition 2 # partion number 2 # default, start immediately after preceding partition 781439 # 200 MB partition n # new partition p # primary partition 3 # partion number 3 # default, start immediately after preceding partition 2148671 # ~700 MB partition n # new partition e # primary partition # 4 # partion numer 4, default, start immediately after preceding partition # til end of flash n # new partition l # logical partition # default, start immediately after preceding partition 3426751 # ~650 MB partition n # new partition l # logical partition # default - start at beginning of disk 3817471 # 200 MB partition p # print it w # write the partition table q # and we're done EOF
Das scheint allerdings nicht sicher zu sein, ich hab schon gesehen das fdisk verschieden antwortet, je nach Version. Vielleicht helfen schon Einheiten zu verwenden. Gibt es grundsätzlich bessere Herangehensweisen, das sieht nicht wirklich elegant aus? Jemand eine bessere Idee?
Gruß, Arno
Aber weiß zufällig jemand warum diese script auf verschieden Systemen (also z.B. verschieden fdisk Versionen - so ganz hab ich das noch nicht raus) bei aber gleichem Flash unterschiedliche Größen ergeben kann? Die Option -u geht ja nur auf die Anzeige wenn ich das man richtig lese. Aber die Größe ist doch immer in Sektoren die 512Byte sind, dachte ich. Also zumindest konstant wenn es immer das gleiche Flash ist, oder? Na da muss ich morgen noch mal in aller Frische drüber sehen. Grüße und vielen Dank Thomas und Marek, Arno
On Wed, Oct 20, 2021 at 10:04:49PM +0200, star wrote:
[...]
Aber weiß zufällig jemand warum diese script auf verschieden Systemen (also z.B. verschieden fdisk Versionen - so ganz hab ich das noch nicht raus) bei aber gleichem Flash unterschiedliche Größen ergeben kann? Die Option -u geht ja nur auf die Anzeige wenn ich das man richtig lese. Aber die Größe ist doch immer in Sektoren die 512Byte sind, dachte ich. Also zumindest konstant wenn es immer das gleiche Flash ist, oder? Na da muss ich morgen noch mal in aller Frische drüber sehen. Grüße und vielen Dank Thomas und Marek, Arno
Hm. Wenn ich mir so die Manpage von fdisk anschaue, dann ist der Teil zumindest nebulös. Da gibt es "logical" und "physical" sectors, und es ist nicht an fdisk, diese Grössen festzulegen. Zudem scheint fdisk auch "von sich aus" Alignment vorzunehmen, so dass die Werte, wenn Du unterschiedliche physical sectors hast, auch noch verrutschen können (damit Partitionen an einer physikalischen Sektorgrenze anfangen).
Hast Du mal die Ausgabe von `fdisk -l' auf beiden Systemen verglichen?
Um zumindest das Problem der Sektorgrössen einzuhegen empfiehlt die manpage Einheiten (K, M, G) anzugeben, statt nackter Zahlen:
"It is always a good idea to follow fdisk's defaults as the default values (e.g. first and last partition sectors) and partition sizes specified by the +/-<size>{M,G,...} notation are always aligned according to the device properties."
Also Verrutschungen nicht ausgeschlossen.
lg -- t
Am 21.10.21 um 09:31 schrieb tomas@tuxteam.de:
On Wed, Oct 20, 2021 at 10:04:49PM +0200, star wrote:
[...]
Aber weiß zufällig jemand warum diese script auf verschieden Systemen (also z.B. verschieden fdisk Versionen - so ganz hab ich das noch nicht raus) bei aber gleichem Flash unterschiedliche Größen ergeben kann? Die Option -u geht ja nur auf die Anzeige wenn ich das man richtig lese. Aber die Größe ist doch immer in Sektoren die 512Byte sind, dachte ich. Also zumindest konstant wenn es immer das gleiche Flash ist, oder? Na da muss ich morgen noch mal in aller Frische drüber sehen. Grüße und vielen Dank Thomas und Marek, Arno
Hm. Wenn ich mir so die Manpage von fdisk anschaue, dann ist der Teil zumindest nebulös. Da gibt es "logical" und "physical" sectors, und es ist nicht an fdisk, diese Grössen festzulegen. Zudem scheint fdisk auch "von sich aus" Alignment vorzunehmen, so dass die Werte, wenn Du unterschiedliche physical sectors hast, auch noch verrutschen können (damit Partitionen an einer physikalischen Sektorgrenze anfangen).
Hast Du mal die Ausgabe von `fdisk -l' auf beiden Systemen verglichen?
Um zumindest das Problem der Sektorgrössen einzuhegen empfiehlt die manpage Einheiten (K, M, G) anzugeben, statt nackter Zahlen:
"It is always a good idea to follow fdisk's defaults as the default values (e.g. first and last partition sectors) and partition sizes specified by the +/-<size>{M,G,...} notation are always aligned according to the device properties."
Also Verrutschungen nicht ausgeschlossen.
lg -- t
Ja, das hab ich auch gesehen. Das war sicher mein größter Fehler dabei keine Einheiten (im Sinne von MB) sondern einheitenlose Zahlen - was auch immer das ist - zu verwenden. Wie die genau gedeutet werden scheint sich geändert zu haben und zwar um Fakto 64 in meinem Fall. Die verschieden Varianten "fdisk" muss ich noch herausfinden und untersuchen. Das "fdisk" ist in die Busybox integriert, sfdisk ist leider nicht vorhanden. Aber wir reden nicht von >5 Jahre alt, also das wundert mich sehr das solche Default-Parameter sich so ändern. Bis jetzt hat meine Suche da noch nichts ergeben, aber ich bleib dran. Danke schon mal, Arno
Am 21.10.21 um 10:21 schrieb Arno:
Am 21.10.21 um 09:31 schrieb tomas@tuxteam.de:
On Wed, Oct 20, 2021 at 10:04:49PM +0200, star wrote:
[...]
Aber weiß zufällig jemand warum diese script auf verschieden Systemen (also z.B. verschieden fdisk Versionen - so ganz hab ich das noch nicht raus) bei aber gleichem Flash unterschiedliche Größen ergeben kann? Die Option -u geht ja nur auf die Anzeige wenn ich das man richtig lese. Aber die Größe ist doch immer in Sektoren die 512Byte sind, dachte ich. Also zumindest konstant wenn es immer das gleiche Flash ist, oder? Na da muss ich morgen noch mal in aller Frische drüber sehen. Grüße und vielen Dank Thomas und Marek, Arno
Hm. Wenn ich mir so die Manpage von fdisk anschaue, dann ist der Teil zumindest nebulös. Da gibt es "logical" und "physical" sectors, und es ist nicht an fdisk, diese Grössen festzulegen. Zudem scheint fdisk auch "von sich aus" Alignment vorzunehmen, so dass die Werte, wenn Du unterschiedliche physical sectors hast, auch noch verrutschen können (damit Partitionen an einer physikalischen Sektorgrenze anfangen).
Hast Du mal die Ausgabe von `fdisk -l' auf beiden Systemen verglichen?
Um zumindest das Problem der Sektorgrössen einzuhegen empfiehlt die manpage Einheiten (K, M, G) anzugeben, statt nackter Zahlen:
"It is always a good idea to follow fdisk's defaults as the default values (e.g. first and last partition sectors) and partition sizes specified by the +/-<size>{M,G,...} notation are always aligned according to the device properties."
Also Verrutschungen nicht ausgeschlossen.
lg -- t
Ja, das hab ich auch gesehen. Das war sicher mein größter Fehler dabei keine Einheiten (im Sinne von MB) sondern einheitenlose Zahlen - was auch immer das ist - zu verwenden. Wie die genau gedeutet werden scheint sich geändert zu haben und zwar um Fakto 64 in meinem Fall. Die verschieden Varianten "fdisk" muss ich noch herausfinden und untersuchen. Das "fdisk" ist in die Busybox integriert, sfdisk ist leider nicht vorhanden. Aber wir reden nicht von >5 Jahre alt, also das wundert mich sehr das solche Default-Parameter sich so ändern. Bis jetzt hat meine Suche da noch nichts ergeben, aber ich bleib dran. Danke schon mal, Arno
Sorry wenn ich rum-spamme, aber vielleicht interessiert es noch jemand. Tatsächlich wurde in einer älteren Busybox/fdisk als Parameter Cylinder statt Sektoren genutzt wenn man keine Einheit dazu angab. Also, immer schön Einheiten angeben! Grüße Arno
On Thu, Oct 21, 2021 at 07:08:38PM +0200, Arno wrote:
Am 21.10.21 um 10:21 schrieb Arno:
Sorry wenn ich rum-spamme, aber vielleicht interessiert es noch jemand. Tatsächlich wurde in einer älteren Busybox/fdisk als Parameter Cylinder statt Sektoren genutzt wenn man keine Einheit dazu angab.
Spammend -- öh... spannend!
;-)
Im Ernst: danke für Deine Rückmeldung. Dass fdisk nicht unbedingt (512 Byte) Sektoren nimmt war bisher nur so 'n Bauchgefühl bei mir. Wieder was gelernt, danke!
Also, immer schön Einheiten angeben!
Ganz genau :-)
lg -- t