Greifen Sie von U-Boot auf das Root-Dateisystem zu

Greifen Sie von U-Boot auf das Root-Dateisystem zu

Ich versuche, ein eingebettetes Gerät zu debuggen, Verbindung über serielle Schnittstelle, verbunden mit USB-zu-UART-Kabel. Embedded Linux v.2.6.26.5 Wie greife ich auf das Stammdateisystem "/" und Unterverzeichnisse unter dem Stammdateisystem zu? Der shellBefehl ist im U-Boot-Modus nicht verfügbar. Gibt es eine Möglichkeit, von U-Boot aus auf die Shell-CLI zuzugreifen? Die verfügbaren U-Boot-Befehle und -Protokolle sindHierUndHier.

Antwort1

Ich schätze, Sie müssen die dritte Stufe von U-Boot durchführen.

Der dritte Schritt ist das Laden des Linux-Kernels. Bevor der Linux-Kernel jedoch die Kontrolle übernimmt, übergibt u-boot eine Befehlszeile an den Kernel, die wichtige Parameter enthält. Diese Parameter können nach dem Booten des Betriebssystems angezeigt werden, indem Sie Folgendes in ein Terminalfenster eingeben:

$ cat /proc/cmdline
root=/dev/mmcblk0p2 rootwait rw console=ttyS0,115200n8 console=tty0 no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=1080p m_bpp=32 vout=hdmi disablehpd=true

Der Kernel initialisiert die Hardware, mountet das Root-Dateisystem (entsprechend dem Kernelparameter root=...) und übergibt den Kontrollfluss an /sbin/init. Wenn Sie weitere Details zu Uboot benötigen, folgen Sie diesenVerknüpfung

Antwort2

Je nach Dateisystem und Medium können Sie Daten möglicherweise direkt in der U-Boot-Shell in hexadezimaler Form ausgeben. Wenn Sie Reverse Engineering betreiben, beobachten Sie helpdie Ausgabe, um zu verstehen, welche Art von Zugriffs- und Manipulationsbefehlen für Medienspeichergeräte Sie in U-Boot kompiliert haben, und fahren Sie von dort aus fort. Nach dem Laden in den Speicher oder manchmal sogar ohne können Sie „md“ zum Ausgeben verwenden. Verwenden Sie Ladeadressen nach dem U-Boot-Teil im Speicher, da sonst ein Neustart erfolgt. Bedenken Sie, dass die Dateisysteme meistens komprimiert sind und nicht dauerhaft geändert werden können (Squashfs ist üblich). Manchmal verfügt U-Boot über einen Befehl, mit dem die unkomprimierten Daten geladen und gelesen werden können. Das Ausspähen des Dateisystems aus dem Speicherauszug kann mühsam sein, daher ist es oft am besten, einen vollständigen Partitionsauszug lokal zu protokollieren, ihn in Binärdateien umzuwandeln und lokal damit umzugehen.

Sie können eine Shell möglicherweise erfolgreich laden, indem Sie das init=Kernel-Argument so ändern, dass es auf ein Shell-Programm verweist. Bei eingebetteten Geräten ist dies normalerweise busybox, also wäre das /bin/ash.

verwandte Informationen