Skip to content

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」を選択します。

file

ファイアウォールのプロパティが表示されます。「VM serial port connected over network」(Incoming / TCP23, 1024-65535)という行にチェックを入れ、OK を押します。

file

仮想マシンへシリアルポートの追加

次は仮想マシンへシリアルポートを追加します。該当仮想マシンの構成を表示し、画面上部の「Add」を押します。

file

追加可能なハードウェアの一覧が表示されます。「Serial Port」を選択して次に進みます。

file

「Connect via Network」を選択して次に進みます。

file

まず「Server(VM listens for connection)」を選択します。Port URI には「telnet://[ESXi ホストのアドレス]:[ポート番号]」を入力します。「ESXi ホストのアドレスが 192.168.100.100」「該当仮想マシンへのコンソール接続に使いたいポートは 50001」の場合、下図のように「telnet://192.168.100.100:50001」と設定します。

file

CentOS 6.x の場合

CnetOS 6.x の場合、以下の順序で作業します。

  1. /etc/grub.conf を修正する
  2. 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

これに以下の修正を加えます。

  1. serial 行を追加
  2. terminal 行を追加
  3. 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 を再起動します。

1
sudo reboot

これでコンソールが有効化されました。

CentOS 7.x の場合

CentOS 7.x の場合、以下の順序で作業します。

  1. /etc/default/grub を修正
  2. grub2 の定義アップデート
  3. OS 再起動

私の環境だと /etc/default/grub は以下のようになっていました。

1
2
3
4
5
6
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」を以下のように修正します。

1
2
3
4
5
6
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 の定義をアップデートします。

1
grub2-mkconfig -o /boot/grub2/grub.cfg

最後に OS を再起動し、設定を反映します。

1
reboot

これでコンソール接続出来るようになります。

Ubuntu 14.x の場合

Ubuntu 14.x の場合、以下の順序で作業します。

  1. /etc/init/ttyS0.conf を新規作成
  2. ttyS0 を開始する

まず、以下の内容で /etc/init/ttyS0.conf を新規作成します。

1
2
3
4
5
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -8 115200 ttyS0

ttyS0 を開始します。

1
sudo start ttyS0

これでコンソール接続出来るようになります。OS を再起動しても、有効なままです。