Kernel panic - not syncing: No init found. Try passing init= option to kernel. See Linux Documentat

在移植嵌入式linux時,串口打印出錯誤信息“Kernel panic - not syncing: No init found. Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.......”

產生錯誤的原因是文件系統內的init程序不能被執行。

有一個很有意思的現象是,我們在做第一次移植時不會產生這種錯誤,而在第二次第三次.....移植則可能出現這種錯誤。

其實問題的根源在我們複製文件出了問題。製作文件系統除了使用busybox生成必要的文件,還要複製交叉編譯器的庫文件以及自定義啓動文件。將這麼多的文件整理完然後打包,形成我們的文件系統鏡像。在第一次移植時,我們會按步驟逐個文件的複製或創建,這個過程沒有問題;而在後續的移植過程中,我們很可能爲圖方便,將第一次製作的且這次不需要修改的文件複製過來使用。在複製過程中,如果我們使用cp命令,則文件的軟鏈接及權限都會發生變化,這將導致燒錄到開發板後文件系統內的程序不能執行。正確的做法是,在複製時使用cp -a,這能保留文件的軟鏈接及權限。在整理完全部文件後,可進入製作的文件系統內,使用ll命令檢查文件的軟鏈接和權限是否完好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章