提供 console
啟動參數以啟用串列訪問時,系統無法啟動
我想要完成的
我想通過 USB-RS232 適配器遠端終端訪問我的 NAS(執行 Debian Stretch)。由於這台機器應該是無頭的,所以我也想看看串口線的啟動過程。
(不過,為了評估這個問題,目前 HDMI 埠上連接了一個螢幕。)
我採取的行動
我附加
console=ttyUSB0
到核心參數列表中。啟動時,這會導致我的系統凍結。引導輸出的最後幾行是:(Bootloader 是 extlinux)
Loading /vmlinuz... ok Loading /initrd.img...ok Probing EDD (edd=off to disable)... ok
當不使用所述核心參數時,機器正在引導而沒有問題。從那裡開始,我可以通過執行輕鬆完成串列終端訪問
systemctl enable serial-getty@ttyUSB0.service systemctl start serial-getty@ttyUSB0.service
在遠端伺服器上,以及
screen -F /dev/ttyUSB0 9600
在我的本地機器上。因此,USB-RS232 適配器工作正常。該伺服器是帶有 Braswell 晶片組的Intel NUC 5CPYH,執行
Linux 4.9.0-4-amd64
debian 核心。我的問題
我必須採取哪些措施才能使其正常工作?
編輯№1
當提供
console=tty0 console=ttyUSB0,9600n8
啟動參數時,機器啟動得很好,但我仍然無法連接到串列埠。另外,systemctl status serial-getty@ttyUSB0.service
說服務是loaded
andinactive (dead)
。我本來預計它會在那時啟動並執行。編輯№2
我做了一些研究,發現我的 initramfs 缺少相關的核心模組。我通過提供核心參數設法進入 initramfs shell,
break=init
發現沒有/dev/ttyUSB0
設備。我在重新創建 initramfs 後添加了
cp210x
,pl2303
和ftdi_sio
to/etc/initramfs-tools/modules
,看到現在/dev/ttyUSB0
initramfs shell 中有一個設備。不過,我無法從我的另一台機器連接。所以我嘗試在該設備上手動啟動 getty:
# /sbin/getty -L 9600 /dev/ttyUSB0 vt100 getty: setsid: Operation not permitted # su root -c "/sbin/getty -L 9600 /dev/ttyUSB0 vt100" sh: su: not found
這就是我現在的位置。
Debian 目前不使用 建構它的 Linux 核心
CONFIG_USB_SERIAL_CONSOLE=y
,這是該功能工作所必需的。對應的錯誤報告是https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=868352
CONFIG_USB_SERIAL_CONSOLE=y
在使用(參見https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-official )建構我自己的核心之後,我還必須包含 FTDI 串列驅動程序對於我在 initrd 中的適配器:# echo ftdi_sio >> /etc/initramfs-tools/modules # update-initramfs -u
最後,我調整
/etc/default/grub
閱讀:GRUB_CMDLINE_LINUX_DEFAULT="panic=10 panic_on_oops=1 console=tty0 console=ttyUSB0,115200"
……然後跑了
update-grub
。之後,我成功看到了啟動資訊,並且可以通過自動啟動的serial-getty@ttyUSB0 服務登錄。
您的系統沒有凍結。您剛剛將所有輸出定向到串列控制台。
將控制台參數傳遞給核心,您必須同時包含本地控制台和串列介面。
請參閱TLDP - 遠端串列控制台 HOWTO - 第 5 章。配置 Linux 核心
圖 5-2。推薦核心參數,帶顯卡的PC
console=tty0 console=ttyS0,9600n8
核心消息將同時出現在第一個虛擬終端和串列埠上。來自 init 系統和系統記錄器的消息將僅出現在第一個串列埠上。在查看連接的監視器時,這可能會有點令人困惑:機器似乎正在啟動然後掛起。不要驚慌,init 系統已經啟動,但現在正在向串列埠列印消息,但在螢幕上沒有列印任何內容。如果配置了 getty,則登錄:提示最終將出現在連接的監視器上。
對於沒有顯卡的 PC,此 HOWTO 建議核心參數:
圖 5-3。推薦核心參數,不帶顯卡的PC
console=ttyS0,9600n8
這些參數由引導載入程序傳遞給引導核心。接下來,我們將配置您的 Linux 安裝使用的引導載入程序,以將控制台參數傳遞給核心。