Hi Dave:
Initrd燒錄回去的時候有顯示Flash is successful
,但是我們還沒試過restore的部分
因為我們的USB Type C接口有進行修改,在Device Tree內將其從OTG改為Host。這樣的改動會導致Flash的時候出現Config Error,進而導致後續的問題出現。
目前我們的解法,如你所見,是繞過USB的部分,改用Ethernet的方式。如果USB Cable是用來Mount NFS的話,Ethernet應該也能夠做到相同的事情。還是USB也有用在其他的部分?
我們會先把USB Type C的部分移除掉,再次進行驗證
謝謝
抱歉 我現在才發現你們是不同人
請問你和上面的karee002eg這位是同事嗎?
你可以在燒的階段和開進kernel之後用不同份device tree
board config裡有分TBCDTB_FILE 和DTB_FILE
前者是UEFI bootloader和initrd flash用的 後者是進kernel之後用的
你可以在後面那一份改USB功能就好 前面的保持正常
Hi Dave:
對,我們是同事,上面一直希望能盡快打包Image。而且現在看起來,NVMe & eMMC是兩套完全不同的做法,才會多安排我過來處理
Device Tree的部分,我們這邊會再好好處理的,謝謝!
Hi DaveYYY,
感謝您的幫助
在修改完isext4()後,燒錄時間確實有所減少,具體的燒錄時間大約在40分鐘左右
但修改完isext4()後,雖然initrd顯示燒錄成功,裝置卻沒有辦法開機
我的測試結果與jameskuo一樣,都卡在以下錯誤
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/mmcblk0, missing codepage or helper program, or other error.
而沒有修改isext4()之前,是可以正常開機的
我有確認可以使用backup_restore將image重新燒至NVME,所以取出的image應該是沒問題的
因此想請問在isext4()修改後,是否需要修改其他地方,例如 :
在開機掛載系統時,需要指定硬體的格式為ext4
附件中有serial console log,希望能派上用場
serial console log_3.txt (34.6 KB)
期待您的回信
Evan
[ 4.588823] Mount initrd as rootfs and enter recovery mode
你這是已經開機失敗太多次所以跑進recovery boot了
麻煩照這篇的方法改回正常開機模式才能知道原本的問題在哪裡
Hi,
Please try below method and it will go back to direct Boot again.
Press ESC to enter UEFI Menu, then choose Device Manager → NVIDIA Configuration → L4T Configuration → OS chain A status → (The value is Unbootable if UEFI attemps recovery kernel) choose Normal → Save and exit, reboot, UEFI will try Direct Boot.
不用
那個差別就是原本ext4的partition因為資料量最大 應該用tar備份
但是因為讀錯blkid的flag所以變成也用dd備份 速度才會那麼慢
兩者結果應該要是一樣的(dd可能還更容易出錯)
Hi DaveYYY,
我有根據您提供的方法,將裝置改回正常開機的模式
以下是最後的serial console log
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/mmcblk0, missing codepage or helper program, or other error.
/mnt/ is not a mountpoint
[ 34.436987] ERROR: PARTUUID=99b85c08-2c9c-435c-b57c-9c052ef3590f mount fail...
完成的紀錄請參考下列附件
serial console log_4.txt (38.4 KB)
另外我有在/Linux_for_Tegra/tools/ota_tools/version_upgrade/init中找到類似的腳本
if [[ "${rootdev}" == PARTUUID* ]]; then
count=0;
while [ ${count} -lt 50 ]; do
sleep 0.2;
count="$(expr ${count} + 1)"
mount "${rootdev}" /mnt/;
if [ $? -eq 0 ]; then
break;
fi
done
mountpoint /mnt/;
if [ $? -ne 0 ]; then
echo "ERROR: ${rootdev} mount fail..." > /dev/kmsg;
exec /bin/bash;
fi;
...
fi
如果我找的沒錯的話,這樣的錯誤是由下列指令執行失敗導致
mountpoint /mnt/;
希望您能提供關於該錯誤的看法
期待您的回覆
Evan
看起來就是你的partition在restore完之後整個壞掉了
能不能請你試一下完整重燒之後備份再還原到底能不能用?
sudo ./flash.sh jetson-agx-orin-devkit internal
sudo ./tools/backup_restore/l4t_backup_restore.sh -e mmcblk0 -b jetson-agx-orin-devkit internal
sudo ./tools/backup_restore/l4t_backup_restore.sh -e mmcblk0 -r jetson-agx-orin-devkit internal
你看的這個是recovery kernel的init script 跟正常kernel boot沒有關係
正常kernel boot用的init script包在/boot/initrd
裡
Hi DaveYYY,
我有試過完整重燒之後備份再還原,結果是可行的
燒錄方式與您下方提供的指令相同
sudo ./flash.sh jetson-agx-orin-devkit internal
sudo ./tools/backup_restore/l4t_backup_restore.sh -e mmcblk0 -b jetson-agx-orin-devkit internal
sudo ./tools/backup_restore/l4t_backup_restore.sh -e mmcblk0 -r jetson-agx-orin-devkit internal
但只要使用initrd燒錄後就會遇到上述的錯誤
sudo ./flash.sh jetson-agx-orin-devkit internal
sudo ./tools/backup_restore/l4t_backup_restore.sh -e nvme0n1 -b -c jetson-agx-orin-devkit
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --use-backup-image --no-flash --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml --no-systemimg" --showlogs --network usb0 jetson-agx-orin-devkit external
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/mmcblk0, missing codepage or helper program, or other error.
備註 : 上述指令的情況都是isext4()已修改完所測得的
isext4()未修改前,雖然燒錄很慢,但是不會有mount的問題
Evan
我知道了 應該是JetPack 6上initrd flash的script預設用zstd壓縮system image可以加速flash
如果從頭到尾建新的image的時候是沒問題的 但是改的時候沒有考慮到要支援backup/restore tool
現在的情況應該是image經過convert_backup_image_to_initrd_flash()處理之後會從tar+gzip壓縮變成單純的tar打包檔案(沒有壓縮)
但是initrd flash現在沒有支援燒這樣的格式 所以會變成用dd把tar檔案寫回去 這樣當然會出錯
你可以研究一下Linux_for_Tegra/tools/kernel_flash/l4t_flash_from_kernel.sh
這個script裡的do_write_APP()這個function 讓它可以燒單純的tar打包檔案(其實跟JetPack 5那版原理差不多)
或者不要改isext4() 用dd備份是正常的 只是很慢 不然就等我們新版修好這個問題
1 Like
Hi DaveYYY,
謝謝您對問題的成因及原理進行說明
這很好的幫助我們釐清問題並訂定研究方向 ( 至少對上面有交代 )
雖然還不確定是否會計劃修復do_write_APP()
但無論如何都感謝您的協助,幫了大忙
祝您一切順利
Evan
另外還有一點要提醒的是你要改這個script的話要重新建一包image
或是改Linux_for_Tegra/tools/kernel_flash/images/
這個路徑下的copy
這個檔案燒的時候會優先使用
不然你在已經建好image的情況下再怎麼改Linux_for_Tegra/tools/kernel_flash/l4t_flash_from_kernel.sh
都是不會有用的
1 Like
system
Closed
July 30, 2024, 7:13am
36
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.