2011/06/23(Thu)Fedora 9以降でシリアルコンソールを使用可能にする方法
2011/06/23 1:40
今回は、Upstartを採用しているFedora 9以降でシリアルコンソールを有効にする方法を紹介。
# いざ必要なとき、ググっても過去の設定方法とかがヒットしてなかなか見つけられない…
/etc/inittab
これまでのinitの挙動を書いていた/etc/inittabはrunlevelの設定のみを残し、他の設定(システム初期化、Ctrl+Alt+Delete押下時の挙動、そして今回のターミナル関連の設定)が個々の設定ファイルに分散された。よって、このファイルは編集する必要なし。
# inittab is only used by upstart for the default runlevel. # # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # System initialization is started by /etc/init/rcS.conf # # Individual runlevels are started by /etc/init/rc.conf # # Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf # # Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf, # with configuration in /etc/sysconfig/init. # # For information on how to write upstart event handlers, or how # upstart works, see init(5), init(8), and initctl(8). # # Default runlevel. The runlevels used are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault:
/etc/init/serial.conf
これがずばりシリアルコンソールを提供するagettyというプログラムを起動するためのconfigであるが、コメントにあるように、grubのkernelパラメータにconsole設定を与えると、fedora.serial-console-availableが有効になってポートが用意されると書いてある。よって、このファイルも編集する必要なし。
Automatically start a configured serial console # # How this works: # # On boot, a udev helper examines /dev/console. If a serial console is the # primary console (last console on the commandline in grub), the event # 'fedora.serial-console-available' is emitted, which # triggers this script. It waits for the runlevel to finish, ensures # the proper port is in /etc/securetty, and starts the getty. # # If your serial console is not the primary console, or you want a getty # on serial even if it's not the console, create your own event by copying # /etc/init/tty.conf, and changing the getty line in that file. start on fedora.serial-console-available DEV=* and stopped rc RUNLEVEL=[2345] stop on runlevel [016] instance $DEV respawn pre-start exec /sbin/securetty $DEV exec /sbin/agetty /dev/$DEV $SPEED vt100-nav
/boot/grub/menu.lst
シリアルコンソールを有効にするには、先ほどのserial.confに書いてあったように、ブート設定が書いてあるmenu.lst(=grub.conf)を編集すればよい。defaultで指定されている項目番号(0オリジン)のkernel行の最後に"console=tty0 console=ttyS0,115200n8"のように付加する。
シリアル設定は115200bps, parity = No, 8bitという具合に。
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You do not have a /boot partition. This means that # all kernel and initrd paths are relative to /, eg. # root (hd0,0) # kernel /boot/vmlinuz-version ro root=/dev/sda1 # initrd /boot/initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz #hiddenmenu title Fedora (2.6.35.13-92.fc14.i686.PAE) root (hd0,0) kernel /boot/vmlinuz-2.6.35.13-92.fc14.i686.PAE ro root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYTABLE=jp106 vga=791 console=tty0 console=ttyS0,115200n8 initrd /boot/initramfs-2.6.35.13-92.fc14.i686.PAE.img
再起動後
rebootしてくると、このようにagettyが接続を待ち受けていることが確認できる。# ps auxw | grep agetty root 1304 0.0 0.0 2060 540 ttyS0 Ss+ 01:08 0:00 /sbin/agetty /dev/ttyS0 115200 vt100-nav root 2157 0.0 0.0 4464 772 pts/0 S+ 01:25 0:00 grep --color=auto agetty