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
カーネル コマンド スイッチの末尾にある2 つのフラグ ( 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 config 以外のすべての場所でシリアルを無効にします。起動中にシリアル ポートに grub メニューが表示されますか?
シリアル コンソール オプションなしで起動し、を起動してみますagetty /dev/ttyS0 115200 -a root
。このコマンドは失敗しますか? このコマンドの実行中にシリアル ポートにログインできますか?
次に同じテストをagetty /dev/ttyS0 115200 vt100-nav
答え2
コメントの一つで述べたように:
/etc/init/serial-ttyS1.conf
シェルを取得するために設定を追加する必要がないことがわかりました。
console
カーネルに引数 (例: )を渡すだけでconsole=ttyS1,19200n8
十分です。
したがって、2 つのプロセスが常に agetty を起動しようとしていた (おそらく互いに停止していた) ため、失敗し続けたのではないかと思います。