CentOS6.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=tty0 console=ttyS1,19200n8
)の最後にある2つのconsole
フラグに注意してください。それらを削除すると、問題は発生しなくなりますが、シリアルコンソールの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
注:他の人がログに「リスポーンが速すぎます」というメッセージを受け取るのを見たことがありますが、これはnotここに当てはまります。
エラーが発生する場所を見つけてください。
Grubconfigを除くすべての場所でシリアルを無効にします。起動中にシリアルポートにgrubメニューが表示されますか?
シリアルコンソールオプションなしで起動し、agetty /dev/ttyS0 115200 -a root
を起動してみてください。このコマンドは失敗しますか?このコマンドの実行中にシリアルポートにログインできますか?
次に、agetty /dev/ttyS0 115200 vt100-nav
で同じテストを試してください
コメントの1つで述べたように:
シェルを取得するために/etc/init/serial-ttyS1.conf
の構成を追加する必要がないことがわかりました。
カーネルにconsole
引数(例:console=ttyS1,19200n8
)を渡すだけで十分です。
したがって、2つのプロセスが常にagettyを開始しようとしていて(おそらくお互いを殺し合っているのでしょうか?)、失敗し続けていると思います。