Forum: PC-Programmierung rootfs.tar.gz ändern


von embert (Gast)


Lesenswert?

Hallo,


ich möchte Linux über SD-Karte auf einer Embedded-Plattform laufen 
lassen.

Das Referenz-Projekt liefert mir 'rootfs_ext4.tar.gz' & 
'uramdisk.image.gz'.
Dazu heißt es, 'rootfs_ext4.tar.gz' sei für EXT4 Partition und 
'uramdisk.image.gz' für FAT.

Um was geht es hier? Um die Partition der SD-Karte?


2.) Wie kann man das 'rootfs_ext4.tar.gz' & 'uramdisk.image.gz' 
verändern?

Ich konnte bereits 'rootfs_ext4.tar.gz' entpacken und einsehen. Kann ich 
da einfach Sachen reinschreiben und wieder zusammenpacken, oder gibt es 
für die Erstellung eines Filesystem einen extra Befehl?

'uramdisk.image.gz' konnte ich bereits vom U-Boot Header befreien und 
entpacken. Aber beim Versuch das ganze zu mounten, kriege ich eine 
Fehlermeldung...

von Markus W. (dl8mby)


Lesenswert?

Hallo embert,

auf einem Linux Rechner:

uramdisk.image.gz entpacken und z.B. mit lsinitrd, mkinitrd und
cpio bearbeiten.

rootfs_ext4.tar.gz enpacken (gunzip) enttaren (tar tf)
um zu sehen was drin steht und (tar xvf) um es zu extrahieren.

Dann Inhalt verändern und wieder zusammenpacken (tar zcvf) und
mit dem genannten Kommando wird auch in einem Schwung gezipped.


Ansonsten googeln um mehr hierzu zu erfahren.

Gruß
Markus

von Blinky (Gast)


Lesenswert?

embert schrieb:
> Um was geht es hier? Um die Partition der SD-Karte?
Das eine ist wahrscheinlich der Ingalt der Root Partition, das andere 
ein Image der RAM-Disk zum Starten
>
> 2.) Wie kann man das 'rootfs_ext4.tar.gz' & 'uramdisk.image.gz'
> verändern?
Auspacken oder falls es ein Filesystem Image ist auf einem Linux System 
mounten (Siehe: mount -o loop) und die Daten ändern. Danach wieder 
packen.

> Ich konnte bereits 'rootfs_ext4.tar.gz' entpacken und einsehen. Kann ich
> da einfach Sachen reinschreiben und wieder zusammenpacken, oder gibt es
> für die Erstellung eines Filesystem einen extra Befehl?

Kommt drauf an. Wenn es einzelne Dateien sind dann kann man es einfach 
entpacken, ändern und wieder packen. Wenn der Inhalt nur eine einzelne 
große Datei ist dann ist es wahrscheinlich ein komplettes Filesystem 
Image(das .image ist hier ein Hinweis) und kann unter Linux mit mount 
eingebunden und dann auch bearbeitet werden.

ansonsten sind hier die Stichworte:
dd       Erzeugen einer leeren Datei
mkfs.    Erzeugen eines Filesystems
mount    Einhängen eines Filesystems unter Linux

von embert (Gast)


Lesenswert?

Danke, Markus.

Kann ich rootfs_ext4 einfach wieder zusammenpacken nachdem ich etwas 
reinkopiert (cp) habe?
Brauche ich kein genetx2fs, oder ähnliches?

von Markus W. (dl8mby)


Lesenswert?

Hallo embert,

wie schon auch von Blinky erwähnt, wenn es nur ein File
im tar.gz archive ist, so ist es wahrscheinlich ein binäres
Imige des ext4 Filesystems, dagegen Spricht aber eigentlich
das TAR format, das zum Zusammenbinden von mehreren Dateien
benützt wird. (Image mit losetup/mount einbinden falls erforderlich).

Also einfach tar tf auf rootfs_ext4.tar anwenden, nachdem es
mit gunzip entpackt wurde und das Listing der Files betrachten.

Als Einzeiler ist auch tar ztf  rootfs_ext4.tar.gz anwendbar,
dann spart man sich das separate gunzip.

Falls es einzelne Dateien sind, kannst Du sie aus dem Archive
herausholen (mit tar) und nach der Veränderung wieder mit tar
hineinpacken.

Wenn Du nur Dateine hinzufügen/löschen willst, geht das auch mit
tar.  Siehe man tar und google nach tar.

Markus

von embert (Gast)


Lesenswert?

Ok, ich habe die rootfs_ext4 geändert und wieder zusammengepackt.
Ich geh gleich mal ans Testen...

Wer noch Lust & Muße könnte mir noch den Unterschied oder Vorzüge von 
rootfs.tar.gz VS. ramdisk.image erklären.

von Hans Ulli K. (Gast)


Lesenswert?

embert schrieb:
> Ok, ich habe die rootfs_ext4 geändert und wieder zusammengepackt.
> Ich geh gleich mal ans Testen...
>
> Wer noch Lust & Muße könnte mir noch den Unterschied oder Vorzüge von
> rootfs.tar.gz VS. ramdisk.image erklären.

Dazu solltest du aber noch die Ausgabe von
file rootfs.tar.gz
und
file ramdisk.image
anhängen

Aber im Normalfall wird rootfs* irgendwie auf Platte/SD Karte 
gespeichert
und
ramdisk.* nur im RAM geladen, also ohne HDD und Co.

von Timmo H. (masterfx)


Lesenswert?

Manchmal ist aber auch ein uboot Header am Tar-gz das musst du erst 
entfernen:
1
dd bs=64 skip=1 if=rootfs.tar.gz of=ramdisk_wo_header.tar.gz
Dann entpacken, modifizieren und wieder durch mkimage von uboot jagen.
Machmal ist auch ein cpio drin, dann musst du das mit cpio entpacken.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.