從 U-Boot 終端修復 uEnv.txt?
我有一個 BeagleBone Black,帶有 Debian 8.3、Linux 4.1.15-ti-rt-r43。
編輯:系統安裝在內部快閃記憶體上。
我修改了 /boot/uEnv.txt 以載入不同的 dtb 文件,顯然文件名錯誤,因此它無法啟動到 Linux。
所以我通過我的 PC 上的 J1 引腳/UART0 -> 終端程序連接。我看到 U-Boot 抱怨找不到文件,所以它不會啟動 Linux,並給了我 U-Boot 命令。輸入“幫助”後列出的內容看起來不是很有用。
使用 U-Boot 命令從我的串列控制台修復 uEnv.txt 是否可能且可行 - 這會起作用……如何?或者,最好的方法是什麼?
編輯#2:在這個網站上找到一些有用的碎片,這並不能完全說明問題,但會引導一個有用的方向:https ://www.compulab.co.il/utilite-computer/wiki/index.php/Utilite_U-Boot_User_How -To%27s我發現我實際上可以看到 uEnv.txt 在 U-Boot 控制台中輸入:“ls mmc 1 boot”,U-Boot 中的 ls 命令需要設備名稱 + num,顯然我的 SD 卡是 mmc0,內部快閃記憶體 mmc1,有趣的命令。唉,U-Boot 沒有“貓”,顯然更不用說編輯器了。就像一個帶著遙控手臂的孩子試圖抓住一隻毛絨動物換一些硬幣,不能完全抓住我的文件,而且它是如此接近,啊!
編輯#3:我看到我在 mmc1 上有一個舊的 uEnv.txt 備份文件。有 U-Boot 命令“載入”,將文件載入到記憶體中,以及“保存”,以保存文件。您必須指定地址和大小。您從“ls mmc 1 boot”命令看到的文件大小。查看這張幻燈片第 35 頁上的記憶體映射:https ://www.slideshare.net/chrissimmonds/embedded-linux-quick-start-guide,RAM從0x80000000開始。猜測如果只有 U-Boot 在 RAM 中,希望在 384 MB 處什麼都沒有,我嘗試將文件載入到98000000,並從那裡保存,但保存返回“無法寫入文件”。太糟糕了。
好吧,我放棄了 U-Boot 路線,雖然它會很酷,如果它起作用的話。
我抓取了 BeagleBone Debian 映像的 IoT 變體(僅限控制台,無 GUI,下載速度更快),例如“Stretch IoT(無圖形桌面)”: https ://beagleboard.org/latest-images
並按照此處的步驟操作:http: //beagleboard.org/getting-started
有一個如何刷新它的連結,即需要額外的步驟 - 很好,我記錯了。擔心 sdcard 啟動會閃爍內部 emmc,這是我不想要的。
如前所述,當插入 SD 卡時,sdcard mmc 設備編號為 0,內部快閃記憶體 (emmc) 為 1。另外,emmc 上的文件系統顯然是 ext4。所以你需要安裝它:
debian@beaglebone:~$ sudo mkdir /mnt/emmc debian@beaglebone:~$ sudo mount -t ext4 /dev/mmcblk1p1 /mnt/emmc
然後你可以直接進入掛載的 emmc 上的 boot 文件夾:
debian@beaglebone:/$ cd /mnt/emmc/boot/
並使用編輯器或您事先確定的備份修復 uEnv.txt ;)