1. シリアルコンソールの設定
  2. upstartでのシリアルコンソールの設定
  3. セキュリティ
    • grub.confの設定


    シリアルポート経由でLinuxをリモート接続できるように、シリアルコンソールの設定を行います。 libvirtを利用しているKVMなどの仮想環境では、ゲストOSでシリアルコンソールを設定すると、virsh consoleコマンドでホストからゲストに接続することができます。

    ・ virsh console

    シリアルコンソールの設定

    注意  Redhat 6 ではupstartが使用される関係で、シリアルコンソールの設定方法が以前と変わっています。 CentOS 6.0 や Fedora 15などでは以下の「upstartでのシリアルコンソールの設定」を参照してください。

       ・upstartでのシリアルコンソールの設定

    upstartが使用されていない場合は以下のように /etc/inittab で設定を行います。

    • 設定

    • Linuxでシリアルコンソールを使用する場合、/etc/inittab にシリアル用の設定を追加します。追加するのは以下の設定です。

      s0:12345:respawn:/sbin/agetty 115200 ttyS0
      s1:12345:respawn:/sbin/agetty 115200 ttyS1

      上記ではttyS0がCOM1に、ttyS1がCOM2になります。COM2が必要ない場合は、ttyS0のみ追加します。

      また、この例では通信速度を115200bpsにしていますが、問題がある場合は9600に変更します。

      参考   ・Linux Serial Console

    • 設定の反映

    • 変更した設定を反映するため、root権限で以下のコマンドを実行します。

      # init q

    upstartでのシリアルコンソールの設定

    Redhat 6では、sysviniパッケージのinitから upstartに変更になっていて、 シリアルコンソールの設定も変更されていました。 upstartの場合、grub.conf の設定だけでシリアルコンソールが使用できるようになります。 /etc/inittab にttyS0の設定を書いても無視されます。

    参考   RED HAT Enterprise Linux 6   4.2. サービスの初期化

    注.  Fedoar15、CentOS 6.0はupstartになっていました。

    • upstartの確認

    • Fedora15の最小構成でインストールしたとき、 /etc/init ディレクトリが存在していませんでした。 Redhatのドキュメントなどを見ても、/etc/init ディレクトリ以下にコンソール関係の設定ファイルがあることが 前提で説明されていました。それで調べてみると、パッケージのupstart がインストールされていないのが原因でした。 もし、/etc/init ディレクトリが存在しない場合は、upstartのパッケージがインストールされているかどうか確認してください。

      注意.  upstartパッケージがインストールされていないと、grub.confにシリアルコンソールの設定をしても、シリアルコンソールが使用できません。

      upstartパッケージのインストール

      # yum install upstart
      ......
      ==========================================================================================
       パッケージ                  アーキテクチャ  バージョン            リポジトリー      容量
      ==========================================================================================
      インストールしています:
       upstart                     x86_64          1.2-4.fc15            updates          168 k
      依存性関連でのインストールをします。:
       initscripts-legacy          x86_64          9.30-2.fc15           fedora           140 k
       libnih                      x86_64          1.0.2-4.fc15          fedora           137 k
      
      トランザクションの要約
      ==========================================================================================
      インストール         3 パッケージ
      
      総ダウンロード容量: 444 k
      インストール済み容量: 1.1 M
      .......
      完了しました!

      インストール後、/etc/init ディレクトリは以下のようになります。

      # ls -l /etc/init
      合計 56
      -rw-r--r-- 1 root root  267  5月 26 18:30 control-alt-delete.conf
      -rw-r--r-- 1 root root  186  5月 26 18:30 fix-selinux-on-run.conf
      -rw-r--r-- 1 root root  130  5月 26 18:30 init-system-dbus.conf
      -rw-r--r-- 1 root root  409  5月 26 18:30 plymouth-shutdown.conf
      -rw-r--r-- 1 root root  217  5月 26 18:30 prefdm.conf
      -rw-r--r-- 1 root root  362  5月 26 18:30 quit-plymouth.conf
      -rw-r--r-- 1 root root  281  5月 26 18:30 rc.conf
      -rw-r--r-- 1 root root  580  5月 26 18:30 rcS-sulogin.conf
      -rw-r--r-- 1 root root  766  5月 26 18:30 rcS.conf
      -rw-r--r-- 1 root root  845  5月 26 18:30 serial.conf
      -rw-r--r-- 1 root root  643  5月 26 18:30 splash-manager.conf
      -rw-r--r-- 1 root root  329  5月 26 18:30 start-ttys.conf
      -rw-r--r-- 1 root root 1622  5月 26 18:30 tmpfiles.conf
      -rw-r--r-- 1 root root  147  5月 26 18:30 tty.conf

    セキュリティ

    シリアルコンソールではrootでのログインが禁止されている場合があります。 その場合、/etc/securettyの中を確認します。 ttyS0やttyS1が存在しない場合、rootでのログインが許可されていません。 rootでのログインを許可する場合は、ttyS0、ttyS1などを追加します。

    /etc/securetty
    console
    vc/1
    vc/2
    ・・・
    ・・・
    tty10
    tty11
    ttyS0
                    

    上記の例では、ttyS0(COM1)のみrootでのログインを許可し、それ以外のシリアルコンソール のttyS1(COM2)は禁止になります。

      grub.confの設定

      • カーネルのオプション設定

      • シリアルコンソールを使用するところに、設定を追加します。

        例 115200bps、8ビット、ノンパリティでttyS0をコンソールとして使用する場合
        console=tty0 console=ttyS0,115200n8

        /root/grub/grub.conf のサンプルは以下になります。

        default=1
        timeout=5
        #splashimage=(hd0,0)/boot/grub/splash.xpm.gz
        hiddenmenu
        title CentOS (2.6.18-238.19.1.el5)
           root (hd0,0)
           kernel /boot/vmlinuz-2.6.18-238.19.1.el5 ro root=LABEL=/ console=tty0 console=ttyS0,115200n8
           initrd /boot/initrd-2.6.18-238.19.1.el5.img
        title CentOS (2.6.18-238.19.1.el5debug)
           root (hd0,0)
           kernel /boot/vmlinuz-2.6.18-238.19.1.el5debug ro root=LABEL=/ console=tty0 console=ttyS0,115200n8
           initrd /boot/initrd-2.6.18-238.19.1.el5debug.img

      • ブートメッセージの表示

      • シリアルコンソールにブート時のメッセージを表示する場合は、grub.confに設定を追加します。 また、この場合は起動時のスプラッシュ画面が必要なくなるので splashimage=(hd0,0)/boot/grub/splash.xpm.gz をコメントアウトしておきます。

        /root/grub/grub.confに追加するのは以下になります。
        serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
        terminal --timeout=5 serial console
         注意  上記で serial とconsoleの順番を逆にすると、シリアル出力にはgrubの選択メッセージが表示されません。  注意 grubの出力先

        パラメータの詳細は以下のようになります。

        --unit=0 ポートにCOM1を指定しています。COM2の場合は --unit=1 を指定します。
        --speed=115200 通信速度に115200bpsを指定しています。9600bpsの場合は --speed=9600 を指定します。指定が無い場合は9600になります。
        --word=8 データビットに8ビットを指定しています。5〜8の範囲で指定できます。指定がない場合は8ビットになります。
        --parity=no パリティなしを指定しています。奇数の場合は --parity=odd、偶数の場合は --parity=evenを指定します。指定がない場合はnoになります。
        --stop=1 ストップビットに1を指定しています。1か2を指定できます。指定が無い場合は1になります。

        参考  serial - GNU GRUB Manaual 1.99

        /root/grub/grub.conf のサンプルは以下になります。

        default=1
        timeout=5
        #splashimage=(hd0,0)/boot/grub/splash.xpm.gz
        hiddenmenu
        serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
        terminal --timeout=5 serial console
        title CentOS (2.6.18-238.19.1.el5)
           root (hd0,0)
           kernel /boot/vmlinuz-2.6.18-238.19.1.el5 ro root=LABEL=/ console=tty0 console=ttyS0,115200n8
           initrd /boot/initrd-2.6.18-238.19.1.el5.img
        title CentOS (2.6.18-238.19.1.el5debug)
           root (hd0,0)
           kernel /boot/vmlinuz-2.6.18-238.19.1.el5debug ro root=LABEL=/ console=tty0 console=ttyS0,115200n8
           initrd /boot/initrd-2.6.18-238.19.1.el5debug.img

      • 注意 grubの出力先

      • grub.conf で、serial のあとに console を書くと、メニューメッセージが以下のように表示されますが、 serial と connsole の順番を逆にすると、grubのメニューメッセージがシリアル側には表示されません。

        Fedora 15 の場合

        grub.conf のterminal 行
         terminal --timeout=5 serial console
        上記設定時の出力
        Press any key to continue.
        Press any key to continue.
        Press any key to continue.
        Press any key to continue.
        Press any key to continue.
        
        
        
        Press any key to enter the menu
        
        
        Booting Fedora (2.6.38.6-26.rc1.fc15.x86_64.debug) in 0 seconds...[   10.074061
        ] ALSA sound/pci/hda/hda_intel.c:755: hda_intel: azx_get_response timeout, switching to
         single_cmd mode: last cmd=0x000f0000
        
        Fedora release 15 (Lovelock)
        Kernel 2.6.38.6-26.rc1.fc15.x86_64.debug on an x86_64 (ttyS0)
        
        fedora15vm.localdomain login:

        grub.confで、console を serialの前に書いた場合

        順番を変えたgrub.conf の のterminal 行
         terminal --timeout=5 console serial
                          
        上記設定時の出力
        Press any key to continue.
        Press any key to continue.
        Press any key to continue.
        Press any key to continue.
        Press any key to continue.
        [   10.035050] ALSA sound/pci/hda/hda_intel.c:755: hda_intel: azx_get_response timeout,
         switching to single_cmd mode: last cmd=0x000f0000
        
        Fedora release 15 (Lovelock)
        Kernel 2.6.38.6-26.rc1.fc15.x86_64.debug on an x86_64 (ttyS0)
        
        fedora15vm.localdomain login: