Vagrantfileの仮想マシン設定項目とVirtualBoxの設定画面の対応

 本記事では、VirtualBoxの設定画面のうち、「一般」、「システム/マザーボード」、「ディスプレイ」画面の設定項目とVagrantfileの設定項目の対応を見ていきます。

【目次】

[1]はじめに

VirtualBoxの仮想マシンに対する設定は、「Oracle VM VritualBox マネージャー」の設定画面から行うことができます。
また、VirtualBoxをインストールすると、VBoxManageというコマンドラインツールが提供されており、コマンドラインからも仮想マシンの設定や運用を行うことができます。

これをみると非常に細かく様々な項目をコントロールできることが分かりますが、利用する立場からみると、(英語という障害?を除いても)分量も多く、理解して利用するのは大変だと思います。

一方で、Vagrantは、一般的な設定が行われているBOXから仮想マシンを生成することと、高レベルなvagrantコマンドが用意されていることで、詳細な設定を考えなくても非常に簡単に仮想マシンを利用できるようになっています。しかし、それでも少しはカスタマイズしたい項目が残ります。

ありがたいことに、Vagrantは、VBoxManageコマンドのパラメータ(仮想マシンの設定)をVagrantfileに記述する方法を提供してくれており、仮想マシンが起動する前にその設定値を反映してくれます。これを利用すれば、Vagrantから仮想マシンの細かな設定を行うことが可能です。

私の場合、これまで仮想マシンの設定は、マニュアルに頼るというより、VritualBox マネージャーの設定画面で直観的に行っていたため、設定画面の項目とVBoxManageコマンドのパラメータとの対応関係がわかれば、Vagrantがより使いやすくなると思いました。

そこで、Vagrantを利用した仮想マシンのちょっとしたカスタマイズを行いやすくするため、本記事は「Oracle VM VritualBox マネージャー」の設定画面の項目に対応するVagrantfileへの記載方法(VBoxManageの引数)をまとめてみます。

なお、本記事では、ディスクやネットワーク、共有フォルダを除いた仮想マシンの設定項目のみを見ていきます。

[2]Vagrantfileの設定方法

本記事では、VirtualBoxの設定画面のうち、「一般」、「システム/マザーボード」、「ディスプレイ」画面の設定項目とVagrantfileの設定項目の対応を見ていきます。

これらの設定項目はVagrantfileの「config.vm.provider "virtualbox" do |vb|」から始まるブロックに記述します。

以下に、設定サンプルを示します。
なお、これら全ての項目を設定する必要は無く、以下の設定項目のうち、変更したい項目や明示的に設定したい項目のみ設定すれば十分です。
(そもそも、vagrant init で生成するVagrantfileはconfig.vm.providerレベルでコメントになっているくらいですので。)

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-20.04"

  # VirtualBoxの仮想マシン設定
  config.vm.provider "virtualbox" do |vb|
    # メインメモリー
    vb.memory = "4096"
    # プロセッサー数
    vb.cpus = "1"
    # VBoxManage modifyvmの設定
    vb.customize [
      "modifyvm", :id,
      # スナップショットの保存先
      "--snapshotfolder", "default",
      # クリップボードの共有
      "--clipboard-mode", "disabled",
      # ドラッグ&ドロップ
      "--draganddrop", "disabled",
      # 説明
      "--description", " ",
      # 起動順序
      "--boot1", "disk",
      "--boot2", "dvd",
      "--boot3", "none",
      "--boot4", "none",
      # チップセット
      "--chipset", "piix3",
      # ポインティングデバイス
      "--mouse", "ps2",
      # I/O APICを有効化
      "--ioapic", "on",
      # EFIを有効化(一部のOSのみ)
      "--firmware", "bios",
      # ハードウェアクロックをUTCにする
      "--rtcuseutc", "on",
      # 使用率制限
      "--cpuexecutioncap", "100",
      # PAE/NXを有効化
      "--pae", "on",
      # ネステッドVT-x/AMDVを有効化
      "--nested-hw-virt", "off",
      # 準仮想化インターフェイス
      "--paravirtprovider", "default",
      # ネステッドページングを有効化
      "--nestedpaging", "on",
      # ビデオメモリー
      "--vram", "8",
      # ディスプレイ数
      "--monitorcount", "1",
      # グラフィックコントローラー
      "--graphicscontroller", "VBoxVGA",
      # 3Dアクセラレーションを有効化
      "--accelerate3d", "off",
      # リモートディスプレイ/サーバーを有効化
      "--vrde", "off",
    ]
  end
end

少し補足します。
  • メインメモリーとプロセッサー数については、VagrantのVirtualBox Providerが提供しているパラメータ(vb.memory、vb.cpus)を利用しています。
  • それ以外の設定は、vb.customizeのリスト中に記載しています。
    • このリストに記載する内容は、VBoxManage modifyvmコマンドの引数になっています。
    • Vagrantが仮想マシンを起動する前に、vb.customizeに記載した内容をVBoxManage modifyvmコマンドへ渡して仮想マシンの設定を変更してくれます。
  • VBoxManage modifyvmの詳細については、以下のドキュメントを参照してください。
  • 上記の設定内容は、仮想マシンを起動(vagrant up)する毎に仮想マシンに反映されます。
ところで、Vagrantfileの文字エンコーディングはUTF-8です。Vagrantfile内に日本語を含む場合は特に注意して下さい。

以降は各設定項目について見ていきます。

[3]VirtualBoxの設定画面とVagrantfileの設定項目の対応


(1)「一般/高度」画面の項目

VirualBox:仮想マシン「一般/高度」設定画面

①スナップショットの保存先

vb.customizeの中で以下のように設定します。
"--snapshotfolder", "値",

値にはスナップショットを保存したいディレクトリのパス、または”default”を指定します。
  • ディレクトリのパスを指定する場合
    • 例えば、"C:\\vagrant\\projectvm\\snapshots"のように指定します。
    • パス区切り(Windowsの場合は円マーク:\)を2つ書いていることに注意してください。
  • "default"を指定した場合
    • VirtualBoxの仮想マシンがあるディレクトリ下のSnapshotsになると思います。

(注意)
既にスナップショットが存在する場合、スナップショットの保存先を変更すると、エラーになって仮想マシンを起動することが出来ません(vagrant upコマンドが失敗します)。

スナップショットがある仮想マシンに対する保存先を変更する場合は、スナップショットをすべて削除してから変更する必要があります。

②クリップボードの共有

vb.customizeの中で以下のように設定します。
"--clipboard-mode", "値",

値は以下の中から1つ指定します。
  • disabled
    • 無効
  • hosttoguest
    • ホストOSからゲストOSへ
  • guesttohost
    • ゲストOSからホストOSへ
  • bidirectional
    • 双方向

③ドラッグ&ドロップ

vb.customizeの中で以下のように設定します。
"--draganddrop", "値",

値は以下の中から1つ指定します。
  • disabled
    • 無効
  • hosttoguest
    • ホストOSからゲストOSへ
  • guesttohost
    • ゲストOSからホストOSへ
  • bidirectional
    • 双方向

(2)「一般/説明」画面の項目

VirualBox:仮想マシン「一般/説明」設定画面

vb.customizeの中で以下のように設定します。
"--description", "値",

値には、説明の文字列を指定します。

なお、説明の文字列は、「\n」で改行することができ、また、HTMLの装飾も利用できるようです。例えば、以下のような文字列を設定できます。
"--description", "HTMLの装飾が使えるようです。\n例えば<b>ボールド</b>\n<i>イタリック</i>。",

(注意1)
確かに、<b>と<i>は使えることを確認しましたが、HTMLをフルサポートしているわけではなく、また仕様を見つけることができませんでしたので、どのようなタグが利用できるのか、私は理解できていません。また、装飾タグを入れると、表示がおかしくなる場合もありました(使い方が間違っている?)。

(注意2)
一度説明文字列を設定すると、それをクリアする方法(空文字(””)に戻す方法)がわかりませんでした。(実装とエラーを考えると、””はVBoxManageに渡っていないような感じです。半角空白1文字(” “)の説明文字列を設定すると見かけ上はクリアできますけど。。。)

ダサい方法ですが、Vagrantfileの"--draganddrop"の設定を削除し、VirtualBoxの設定画面から説明文字列を削除して再起動(vagrant up)すると、仮想マシンの説明を空にすることができます。

(3)「システム/マザーボード」画面の項目

VirualBox:仮想マシン「システム/マザーボード」設定画面

①メインメモリー

vb.memory = "値"

MB単位で数値を指定します。

②起動順序

仮想マシンを起動できるデバイスには、「フロッピー」、「光学」、「ハードディスク」、「ネットワーク」の4つがあります。
これら起動デバイスの評価の有無と順序を、vb.customizeの中で”起動順序を表す--boot1”から”--boot4”までの各項目に、デバイスを表す"値"を設定します。

デバイスの値には以下の中から1つ指定します。
  • none
    • 未指定(☑しない設定。)
  • floppy
    • フロッピー
  • dvd
    • 光学
  • disk
    • ハードディスク
  • net
    • ネットワーク

例えば、「フロッピー」=>「光学」=>「ハードディスク」の3つの起動順序を指定する場合は以下のように指定します。
"--boot1", "floppy",
"--boot2", "dvd",
"--boot3", "disk",
"--boot4", "none",

③チップセット

vb.customizeの中で以下のように設定します。
"--chipset", "値",

値には以下の中から1つ指定します。
  • piix3
    • PIIX3
  • ich9
    • ICH9

④ポインティングデバイス

vb.customizeの中で以下のように設定します。
"--mouse", "値",

値には以下の中から1つ指定します。
  • ps2
    • PS/2マウス
  • usb
    • USBマウス
  • usbtablet
    • USBタブレット
  • usbmultitouch
    • USBマルチタッチタブレット

⑤拡張機能:I/O APICを有効化

vb.customizeの中で以下のように設定します。
"--ioapic", "値",

値には以下の中から1つ指定します。
  • on
    • チェック有り
  • off
    • 非チェック状態

⑥拡張機能:EFIを有効化(一部のOSのみ)

vb.customizeの中で以下のように設定します。
"--firmware", "値",

値には以下の中から1つ指定します。
  • bios
    • 非チェック状態
  • efi
    • チェック有り
  • efi32
    • チェック有り
  • efi64
    • チェック有り

⑦拡張機能:ハードウェアクロックをUTCにする

vb.customizeの中で以下のように設定します。
"--rtcuseutc", "値",

値には以下の中から1つ指定します。
  • on
    • チェック有り
  • off
    • 非チェック状態

(4)「システム/プロセッサー」画面の項目

VirualBox:仮想マシン「システム/プロセッサー」設定画面

①プロセッサー数

vb.cpus = "値"

仮想マシンに割り当てるCPUの数を指定します。

②使用率制限

vb.customizeの中で以下のように設定します。
"--cpuexecutioncap", "値",

値には、半角数字で、1から100の範囲で指定します。

③拡張機能:PAE/NXを有効化

vb.customizeの中で以下のように設定します。
"--pae", "値",

値には以下の中から1つ指定します。
  • on
    • チェック有り
  • off
    • 非チェック状態

④拡張機能:ネステッドVT-x/AMDVを有効化

vb.customizeの中で以下のように設定します。
"--nested-hw-virt", "値",

値には以下の中から1つ指定します。
  • on
    • チェック有り
  • off
    • 非チェック状態

(5)「システム/アクセラレーション」画面の項目

VirualBox:仮想マシン「システム/アクセラレーション」設定画面

①準仮想化インターフェイス

vb.customizeの中で以下のように設定します。
"--paravirtprovider", "値",

値には以下の中から1つ指定します。
  • none
    • なし
  • default
    • デフォルト
  • legacy
    • Legacy
  • minimal
    • Minimal
  • hyperv
    • Hyper-V
  • kvm
    • KVM

②仮想化支援機能:ネステッドページングを有効化

vb.customizeの中で以下のように設定します。
"--nestedpaging", "値",

値には以下の中から1つ指定します。
  • on
    • チェック有り
  • off
    • 非チェック状態

(6)「ディスプレイ/スクリーン」画面の項目

VirualBox:仮想マシン「ディスプレイ/スクリーン」設定画面

①ビデオメモリー

vb.customizeの中で以下のように設定します。
"--vram", "値",

MB単位で数値を指定します。

②ディスプレイ数

vb.customizeの中で以下のように設定します。
"--monitorcount", "値",

値にはディスプレイ数を指定します。

③グラフィックコントローラー

vb.customizeの中で以下のように設定します。
"--graphicscontroller", "値",

値には以下の中から1つ指定します。
  • none
    • なし
  • vboxvga
    • VBoxVGA
  • vmsvga
    • VMSVGA
  • vboxsvga
    • VBoxSVGA

④3Dアクセラレーションを有効化

vb.customizeの中で以下のように設定します。
"--accelerate3d", "値",

値には以下の中から1つ指定します。
  • on
    • チェック有り
  • off
    • 非チェック状態

(7)「ディスプレイ/リモートディスプレイ」画面の項目

VirualBox:仮想マシン「ディスプレイ/リモートディスプレイ」設定画面

①サーバーを有効化

vb.customizeの中で以下のように設定します。
"--vrde", "値",

値には以下の中から1つ指定します。
  • on
    • チェック有り
  • off
    • 非チェック状態
(注意)
リモートディスプレイを利用するにはOracle VM VirtualBox Extension Packのインストールが必要なようです。
--vrdeをonに設定する場合、パラメータなどの設定については以下を参照してください。

コメント

このブログの人気の投稿

VirtualBoxのスナップショット機能

Google Document AIで画像から表形式データを抽出する(Vision API OCRとの違い)

Ubuntu/Colab環境でPDFファイルのページを画像化する(pdf2image、pdftoppm、pdftocairo)