みなさんは複数のLinux環境が必要な場合、どうされていますか？

最近のマシンはとても高性能なため、仮想化環境で構築している方も多いと思われますが、昔ながらのマルチブート環境で構築されている方もまだまだいらっしゃるかと思います。

今回は、そんなマルチブートマシンからモニタやキーボードを外した状態でも、マルチブートのメニューを操作する方法です。

開発や実験などに使うサブマシンの場合、SSHで接続できるように設定した後は、モニタやキーボードは不要ですので、外してしまいたいところですが、マルチブート環境の場合、OS切替時のブートメニューの操作があるためそうもいきません。

KVMスイッチなどの切替機を使ってもいいのですが、シリアルケーブルを使ってモニタ/キーボードレスにしてみたいと思います。

なお、マルチブートのためのブートローダーとしては、Linuxディストリビューションで良く使われているGNU GRUBを使用します。

まず、サブマシンの /boot/grub/menu.lst (grub.conf) へ次の二行を追加します。

serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console

また、「splashimage」の行がある場合は、行頭へ「#」を付けてコメントアウトしておきます。

次に、メインマシンとサブマシンをシリアルケーブルで接続します。メインマシンがノートPCなどのようにシリアル端子がない場合は、USB-シリアル変換を使って接続します。

そして、メインマシンがWindows環境であればTeraTermやPuTTY、LinuxであればMinicomなどのターミナルソフトでCOMポートへ接続します。

なお、COMポートの設定は次のようにしておきます。

通信速度: 9600 データ長: 8 bit ストップ: 1 bit パリティ: None フロー制御: None

後は、ターミナルソフトを起動したまま、サブマシンを起動します。

ターミナルソフトの画面へ「Press any key to continue.」と表示されると思いますので、そこでキーを押してGRUBのメニューが表示されれば成功です。

Press any key to continue. Press any key to continue. Press any key to continue. GNU GRUB version 0.95 (639K lower / 259969K upper memory) +-------------------------------------------------------------+ | Red Hat Enterprise Linux AS | | Red Hat Enterprise Linux 5 | | CentOS 4 | | CentOS 5 | | Debian GNU/Linux Etch | | | | | | | | | | | | | | | +-------------------------------------------------------------+ Use the ^ and v keys to select which entry is highlighted. Press enter to boot the selected OS, 'e' to edit the commands before booting, 'a' to modify the kernel arguments before booting, or 'c' for a command-line.

あとは通常通り起動するOSを選択するだけです。

これでサブマシンが無事モニタ/キーボードレスになりました！

ちなみに、このままシリアルコンソールでログインしたい場合は、サブマシンの /etc/inittab へ

s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100

を追加し、/boot/grub/menu.lst (grub.conf) の「kernel」行へ

kernel …… console=tty0 console=ttyS0,9600n8

を追加すればターミナルへログインプロンプトが表示されるようになります。

また、その場合は、表示を速くするためにボーレートの設定を115200へ変更したほうが快適になるかと思います。

なお、シリアルコンソールについては、

Remote Serial Console HOWTO

がとても参考になりますので、興味のある方はどうぞご覧ください。