続 Vagrant (VirtualBox) でシリアルコンソールに繋ぐ

Vagrant (VirtualBox) でシリアルコンソールに繋ぐ というエントリを書いたその続き

VirtualBoxシリアル通信?のオプションである --uartmode を今一度調べたら コンソールログをファイルとしてもホストOSに書き出せるようになっていました。

$ /Applications/VirtualBox.app/Contents/MacOS/VBoxManage -h
// ... 略
                            [--uartmode<1-N> disconnected|
                                             server <pipe>|
                                             client <pipe>|
                                             file <file>|
                                             <devicename>]

Vagrantfile の書き方

--uartmode1 に file を渡しているのがミソです

  config.vm.provider :virtualbox do |vb|
    vb.gui = true
    vb.customize ["modifyvm", :id, "--uart1", "0x3F8", "4"]
    vb.customize ["modifyvm", :id, "--uartmode1", "file", "/tmp/vagrant-ttyS0.log"]
  end

ゲストOS (この例では CentOS6 ) の e/etc/grub.conf に下記の行を足しておきます

console=ttyS0,9600

ゲストOSが起動後 /tmp/vagrant-ttyS0.log にずるずるとコンソールのログが出ます。ログがでるだけで対話側の操作はできません。

--uartmodeN server の場合はホストOSから何かしらのクライアントで繋いでおかないととログが見れませんが、 --uartmodN file は常にログがでていますし、後から追うのも楽そうです。

用途に応じて使い分けるとよさそうですね

参考にしたサイト