我正在研究QEMU的源代碼。QEMU由Eclipse運行正常,但在調試時失敗
我用Eclipse打開它並配置了環境。然後,我可以爲ARM平臺構建它並通過啓動Linux來運行它。
調試時,在運行某些功能後失敗。 的錯誤信息是:
qemu: could not open disk image rdinit=/bin/sh": No such file or directory
我正在研究QEMU的源代碼。QEMU由Eclipse運行正常,但在調試時失敗
我用Eclipse打開它並配置了環境。然後,我可以爲ARM平臺構建它並通過啓動Linux來運行它。
調試時,在運行某些功能後失敗。 的錯誤信息是:
qemu: could not open disk image rdinit=/bin/sh": No such file or directory
看起來像有缺失"
(雙引號字符)在項目配置文件中的某個地方,或者,也許,一個多餘的。
典型的QEMU調用是qemu-system-arm -kernel path/to/zImage -initrd path/to/test_rootfs -append "root=/dev/ram rdinit=/test"
如果你跳過第一個雙引號只是-append
後 - QEMU會認爲rdinit=/test
是一個磁盤映像,並嘗試打開它作爲一個文件
一個可能的解決方案是到grep Eclipse項目目錄爲"rdinit"
關鍵字和檢查所有grep的結果丟失/冗餘報價
cd /your/project/dir
grep -rw rdinit .
這是我的命令: -M versatilepb -kernel zImage -initrd rootfs.img -append「root =/dev/ram rdinit =/bin/sh」 因此,我不會忘記雙引號後的後綴。 因爲QEMU可以成功運行,所以我不認爲命令中有什麼錯誤。 它只在調試時失敗。 –
當你正在調試時會發生什麼?也許調試器失去了一個報價?也許你可以使用'strace'來查看被調用的命令? –
調試時,QEMU在函數static int parse_block_error_action(const char * buf,int is_read)失敗,並輸出錯誤消息: qemu:無法打開磁盤映像rdinit =/bin/sh:沒有這樣的文件或目錄 –
它看起來像QEMU嘗試使用主機的'/斌/ sh'沒有architectur e檢查。嘗試在互聯網上爲您的目標平臺獲取已編譯的'sh'二進制文件('busybox'重命名爲'sh'將運行正常)並將其與QEMU一起使用 –
使用Eclipse,QEMU可以使用busybox作爲文件系統引導Linux。但是,當我在相同的環境中調試QEMU時發生錯誤。這很奇怪,因爲如果我可以運行QEMU,我將能夠調試它。 –