VMware ESXi 上の CentOS / Ubuntu でコンソールを有効化するには
仮想環境を使うと検証がはかどります。ただ、仮想環境上にクローズなネットワークを作って検証する場合は(IP での疎通性が無い為)いちいち VI Client や Web Client からコンソール接続する必要があり、不便です。しかし、VMware では仮想マシンのコンソールをネットワークにリダイレクトする機能があるので、これを使えば VI Client や Web Client を使わなくても仮想マシンのコンソールに接続出来て便利です。今回は CentOS や Ubuntu 等の仮想マシンのコンソールポートに TELNET で接続出来るように設定してみます。
ESXi のファイアウォール設定変更
デフォルトでは ESXi ホストのファイアウォール機能が有効なので、仮想マシンのコンソールにアクセスすることが出来ません。まずは ESXi ホストのファイアウォール設定を必要な通信が許可されるように変更します。ホストの「Configuration → Security Profile →(Firewall の)Properties」を選択します。
ファイアウォールのプロパティが表示されます。「VM serial port connected over network」(Incoming / TCP23, 1024-65535)という行にチェックを入れ、OK を押します。
仮想マシンへシリアルポートの追加
次は仮想マシンへシリアルポートを追加します。該当仮想マシンの構成を表示し、画面上部の「Add」を押します。
追加可能なハードウェアの一覧が表示されます。「Serial Port」を選択して次に進みます。
「Connect via Network」を選択して次に進みます。
まず「Server(VM listens for connection)」を選択します。Port URI には「telnet://[ESXi ホストのアドレス]:[ポート番号]」を入力します。「ESXi ホストのアドレスが 192.168.100.100」「該当仮想マシンへのコンソール接続に使いたいポートは 50001」の場合、下図のように「telnet://192.168.100.100:50001」と設定します。
CentOS 6.x の場合
CnetOS 6.x の場合、以下の順序で作業します。
- /etc/grub.conf を修正する
- OS 再起動
私の環境だと /etc/grub.conf は以下のようになっていました(なぜか、kernel 行の引数に同じオプションが複数回、指定されていました……)。
1
2
3
4
5
6
7
8
9
10
11
12 | default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-504.30.3.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-504.30.3.el6.x86_64 ro root=UUID=4c6d88a1-8646-4a5f-a2e7-0f2ff6cac15c rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM crashkernel=auto rhgb quiet rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-504.30.3.el6.x86_64.img
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=4c6d88a1-8646-4a5f-a2e7-0f2ff6cac15c rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM crashkernel=auto rhgb quiet rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img
|
これに以下の修正を加えます。
- serial 行を追加
- terminal 行を追加
- kernel 行の末尾に console オプションを追記
修正後の /etc/grub.conf は以下の通りです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
terminal --timeout=1 serial console
title CentOS (2.6.32-504.30.3.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-504.30.3.el6.x86_64 ro root=UUID=4c6d88a1-8646-4a5f-a2e7-0f2ff6cac15c rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM crashkernel=auto rhgb quiet rd_NO_DM rhgb quiet console=ttyS0,115200
initrd /initramfs-2.6.32-504.30.3.el6.x86_64.img
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=4c6d88a1-8646-4a5f-a2e7-0f2ff6cac15c rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM crashkernel=auto rhgb quiet rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img
|
/etc/grub.conf の修正を反映する為、OS を再起動します。
これでコンソールが有効化されました。
CentOS 7.x の場合
CentOS 7.x の場合、以下の順序で作業します。
- /etc/default/grub を修正
- grub2 の定義アップデート
- OS 再起動
私の環境だと /etc/default/grub は以下のようになっていました。
| GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
|
「GRUB_CMDLINE_LINUX」を以下のように修正します。
| GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet console=tty0 console=ttyS0,115200n8r"
GRUB_DISABLE_RECOVERY="true"
|
grub2 の定義をアップデートします。
| grub2-mkconfig -o /boot/grub2/grub.cfg
|
最後に OS を再起動し、設定を反映します。
これでコンソール接続出来るようになります。
Ubuntu 14.x の場合
Ubuntu 14.x の場合、以下の順序で作業します。
- /etc/init/ttyS0.conf を新規作成
- ttyS0 を開始する
まず、以下の内容で /etc/init/ttyS0.conf を新規作成します。
| start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -8 115200 ttyS0
|
ttyS0 を開始します。
これでコンソール接続出来るようになります。OS を再起動しても、有効なままです。