[英]/bin/sh: can't access tty; job control turned off
我一直在遵循 Chris Simmonds 的“掌握嵌入式 linux 編程”一書中的命令。 我創建了工具鏈 kernel zImage 和 busybox 文件系統。 當我將這些組合在一起在 QEMU 上運行時,它應該顯示一個根 shell 提示符。
當我運行命令時,我得到以下信息。
/bin/sh: can't access tty; job control turned off
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/amba/amba:fpga/10007000.kmi/serio1/input/input2
當我按下回車鍵時,我能夠看到根 shell 提示,並且我能夠執行簡單的 shell 命令。
但是,當我按退出時,出現以下錯誤。
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
CPU: 0 PID: 1 Comm: sh Not tainted 4.9.13 #1
Hardware name: ARM-Versatile (Device Tree Support)
[<c001b5a4>] (unwind_backtrace) from [<c0018860>] (show_stack+0x10/0x14)
[<c0018860>] (show_stack) from [<c00737f4>] (panic+0xb8/0x230)
[<c00737f4>] (panic) from [<c0024e24>] (do_exit+0x8e8/0x938)
[<c0024e24>] (do_exit) from [<c0025cf8>] (do_group_exit+0x38/0xb4)
[<c0025cf8>] (do_group_exit) from [<c0025d84>] (__wake_up_parent+0x0/0x18)
---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
我該如何解決這個問題
編輯:
以下是我運行的 QEMU 命令
QEMU_AUDIO_DRV=none \qemu-system-arm
-m 256M -nographic
-M versatilepb
-kernel ~/linux-4.9.13/arch/arm/boot/zImage
\-append "console=ttyAMA0,115200 rdinit=/bin/sh"
-dtb ~/linux-4.9.13/arch/arm/boot/dts/versatile-pb.dtb
-initrd ~/busybox/initramfs.cpio.gz
(你沒有說你的 QEMU 命令行是什么。)
如果您告訴 kernel 直接將 /bin/sh 作為其進程 1 運行(例如,在 kernel 命令行上使用“init=/bin/sh”),這些錯誤消息通常是您應該預料到的。 首先,shell 抱怨它沒有 tty,但它仍然可以在禁用某些設施的情況下繼續。 然后,當您最終告訴 shell 退出時,因為 shell 本身是進程 1,kernel 會抱怨。 (通常進程 1 應該是一個“init”程序,它永遠運行並處理啟動系統中的其他進程。如果“init”死了,kernel 將無能為力。)
如果您打算將 /bin/sh 作為進程 1 運行,那么這一切都很正常。 如果您不想這樣做,那么您的根文件系統或命令行有問題,這意味着它沒有在客戶機中正確啟動 /sbin/init,您應該看看原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.