我正在嘗試在 CentOS 6.2 上設定串行控制台。
我已經能夠獲得登入控制台,但如果我嘗試啟用 grub 並且內核日誌顯示在序列埠上,則 grub 每隔幾秒鐘就會終止。
這是我目前的配置:
/etc/init/serial-ttyS1.conf
:
# This service maintains a getty on /dev/ttyS1.
start on stopped rc RUNLEVEL=[2345]
stop on starting runlevel [016]
respawn
exec /sbin/agetty /dev/ttyS1 115200 vt100-nav
/boot/grub/grub.conf
:
#boot=/dev/sda
default=0
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
serial --unit=1 --speed=19200
terminal --timeout=8 console serial
title CentOS (2.6.32-220.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=VolGroup/lv_root quiet rd_NO_DM console=tty0 console=ttyS1,19200n8
initrd /initramfs-2.6.32-220.el6.x86_64.img
console
請注意內核命令開關末端的兩個標誌 ( console=tty0 console=ttyS1,19200n8
)。如果它們被刪除,問題就不會再出現,但我也會遺失 grub 和串列控制台中的啟動日誌。
這是來自的範例/var/log/messages
:
Aug 27 14:14:24 ovesh-centos-62 init: serial-ttyS1 main process ended, respawning
Aug 27 14:14:25 ovesh-centos-62 init: serial (ttyS1) main process (1614) terminated with status 1
Aug 27 14:14:25 ovesh-centos-62 init: serial (ttyS1) main process ended, respawning
Aug 27 14:14:26 ovesh-centos-62 init: serial (ttyS1) main process ended, respawning
Aug 27 14:15:25 ovesh-centos-62 init: serial-ttyS1 main process ended, respawning
Aug 27 14:15:35 ovesh-centos-62 init: serial (ttyS1) main process (1731) terminated with status 1
Aug 27 14:15:35 ovesh-centos-62 init: serial (ttyS1) main process ended, respawning
注意:我看到其他人在他們的日誌中收到“重生太快”訊息,但這是不是這裡的情況。
答案1
試著找出錯誤發生的位置。
除 grub 配置外,在所有地方停用串行。啟動時可以在串列埠上看到 grub 選單嗎?
在沒有任何串行控制台選項的情況下啟動並嘗試啟動agetty /dev/ttyS0 115200 -a root
。這個命令會失敗嗎?該指令運行時可以串口登入嗎?
然後嘗試相同的測試agetty /dev/ttyS0 115200 vt100-nav
答案2
正如我在其中一條評論中提到的:
事實證明,您不需要添加配置來/etc/init/serial-ttyS1.conf
獲取 shell。
將參數傳遞console
給核心(例如,console=ttyS1,19200n8
)就足夠了。
所以我猜測有兩個進程不斷嘗試啟動agetty(也許互相殺死?),這導致它不斷失敗。