簡體   English   中英

/bin/sh: 無法訪問 tty; 作業控制已關閉

[英]/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM