從 U-boot 存取根檔案系統

從 U-boot 存取根檔案系統

我正在嘗試調試嵌入式設備,透過串行端口連接,使用 USB 轉 UART 電纜連接。 Embedded Linux v.2.6.26.5 如何存取根檔案系統「/」以及根FS下的子目錄?該shell命令在 U-boot 模式下不可用。有沒有辦法從 U-boot 存取 shell CLI?可用的 U-boot 命令和日誌是這裡這裡

答案1

我想你需要遵循U-boot的第三階段。

第三階段是Linux核心的載入。然而,在 Linux 核心控制之前,u-boot 會將包含基本參數的命令列傳遞給核心。作業系統啟動後,可以透過在終端機視窗中鍵入以下內容來查看這些參數:

$ 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

核心初始化硬件,掛載根檔案系統(根據root=...核心參數)並將控制流傳遞到/sbin/init。如果您需要有關 Uboot 的更多詳細信息,請關注此關聯

答案2

根據檔案系統和介質,您也許能夠直接在 u-boot shell 下以十六進位形式轉儲資料。如果您進行逆向工程,請觀察help輸出以了解您已編譯到 U-boot 中的媒體儲存裝置存取和操作命令的類型,並從那裡繼續。載入到記憶體後,或者有時甚至沒有它,您可以使用“md”來轉儲它。在記憶體中的 u-boot 部分之後使用載入位址,否則它將重新啟動。請記住,大多數時候檔案系統都是壓縮的並且無法永久修改(squashfs 很常見)。有時u-boot附帶一個命令,可以載入和讀取未壓縮的資料。從記憶體轉儲中查看檔案系統可能很乏味,因此通常最好在本地記錄整個分區轉儲,將其轉換為二進位檔案並在本地處理。

init=您可以透過修改核心參數以指向 shell 程式來成功載入 shell 。通常對於嵌入式設備來說,它是 busybox,所以應該是/bin/ash.

相關內容