木曜日, 3月 07, 2013

Ubuntuでシリアルを有効にする

[概要]
Ubuntuでシリアルコンソールを利用可能にする方法を説明します。
[詳細]
対象となるUbuntuのバージョンは12.04とします。

  1. 起動ファイルの作成
    1. まず、Upstartの設定を行います。 下記の内容を "ttyS0.conf"へコピペしてください。
      foo@ubuntu01:~$ vi ttyS0.conf

      # ttyS0 - getty
      #
      # This service maintains a getty on ttyS0 from the point the system is
      # started until it is shut down again.

      start on stopped rc or RUNLEVEL=[2345]
      stop on runlevel [!2345]

      respawn
      exec /sbin/getty -L 115200 ttyS0 vt102

      作成した"ttyS0.conf"を"/etc/init/ttyS0.conf"へコピーします。
      foo@ubuntu01:~$ sudo cp ttyS0.conf /etc/init/ttyS0.conf
    2. サービスを起動ます。
      foo@ubuntu01:~$ sudo start ttyS0
      ttyS0 start/running, process 25444

      foo@ubuntu01:~$
    3. 接続を確認します。
      [kvm環境]
      virshを使用して確認します。
      foo@vmhost01:~/tech/ubuntu$ virsh
      virsh にようこそ、仮想化対話式ターミナルです。

      入力: 'help' コマンドのヘルプ
      'quit' 終了

      virsh # console ubuntu01
      ドメイン ubuntu01 に接続しました
      エスケープ文字は ^] です

      Ubuntu 12.10 ubuntu01 ttyS0

      ubuntu01 login: foo
      Password:
      Last login: Tue Feb 5 11:04:28 JST 2013 from 192.168.122.1 on pts/0
      Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-17-generic x86_64)

      * Documentation: https://help.ubuntu.com/

      System information as of Tue Feb 5 11:11:51 JST 2013

      System load: 0.0 Processes: 79
      Usage of /: 20.0% of 7.12GB Users logged in: 1
      Memory usage: 38% IP address for eth0: 192.168.122.65
      Swap usage: 0%

      Graph this data and manage this system at https://landscape.canonical.com/

      foo@ubuntu01:~$
      virsh #
      コンソールから抜け出るときには、"Ctrl+]"を押します。接続時に表示される「エスケープ文字は ^] です」は、これを意味しています。

      [RS232C接続]
      これは、別途。それまでは、ネット上で接続方法を探してください。
  2. grub, bootパラメータの変更
    ubuntuでは起動パラメータは、"/boot/grub/grub.conf"を直接編集するのではなく"/etc/grub.d"の下にあるファイルを編集し、コマンドを用いて"/boot/grub.conf"を生成します。
    1. [00_headerの編集]
      赤字の部分を追加します。
      # along with GRUB. If not, see <http://www.gnu.org/licenses/>.

      GRUB_TERMINAL_INPUT="console serial"
      GRUB_TERMINAL_OUTPUT="console serial"
      GRUB_SERIAL_COMMAND="serial"


      transform="s,x,x,"

    2. [10_linuxの編集]
      赤字の部分を追加してください。
      # along with GRUB. If not, see <http://www.gnu.org/licenses/>.

      GRUB_CMDLINE_LINUX="console=ttyS0,115200n8"

      prefix="/usr"

      なお、今と同様にディスプレイにも表示した場合は、下記のように"console=tty0"を"ttyS0"と併記します。
      GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
    3. ["/boot/grub/grub.cfg"への反映]
      "grub-mkconfig"を使用して、"grub.cfg"を生成します。
      foo@ubuntu01:~$ sudo grub-mkconfig -o /boot/grub/grub.cfg

    4. 動作確認
      シリアル・コンソールに接続したまま、OSのリブートを行います。
      OSの選択画面が表示され、ブート状況がコンソールに表示されれば、設定は成功です。

[おまけ]
virt-managerでもシリアル・コンソールに接続できます。

以上でシリアルコンソールの設定方法の説明はおしまいです。

参考文献
"SerialConsoleHowto", help.ubuntu.com
https://help.ubuntu.com/community/SerialConsoleHowto