Windows10仮想マシン構築スクリプト

スポンサーリンク
スポンサーリンク

はじめに

Mac上にWindows10仮想マシンを作成するためのスクリプトについて説明します。

使用しているスクリプトは、githubにvm-configurateとして公開しているのでgithubからダウンロードするかここからダウンロードしてください。

vm-configurateのフォルダ構成については、下のリンクを参照してください。

スクリプトの実行には、VirtualBoxとVagrantが必要です。インストールされていない場合は、下のリンクを参照してください。

Windows10のBoxファイルを下記リンクのWindows10用Boxファイルの準備を参照してください。

/host-osx/windows10/vm-create.command

Windows 10仮想マシンを構築するためのメインとなるスクリプトです。

スクリプトファイルの場所をカレントディレクトリにしています。

SCRIPT_DIR=$(dirname "$0")
cd "$SCRIPT_DIR"

スクリプトの実行結果を実行スクリプトファイル名の後ろに.logを付けたファイル(vm-create.command.log)へ出力するように設定し、ログファイルへ実行開始日時を出力しています。

exec &>>(tee "${0}.log")
date "+%Y/%m/%d %H:%M:%S"

VagrantのBoxファイル(Vagrant用の仮想端末のテンプレート)とVirtualBoxの仮想マシンの保存先の基準となるディレクトリをVM_BASE_DIRに設定しています。

# Directory to store vagrant box and virtual machine
VM_BASE_DIR=$(cd "${SCRIPT_DIR}/../" && pwd)

VagrantのBoxファイルの保存先は、環境変数VAGRANT_HOMEを設定することで変更することが出来ます。

スクリプトでbashの初期設定ファイル.bash_profileへVAGRANT_HOMEを環境変数として書き込んでいます。

保存先を変更したい場合は、#でコメントアウトされている箇所を下の状態に変更してください。

# --------------------------------------------------
# Change the save destination of vagrant box files to the VM_BASE_DIR folder.
# If you don't want to change the save folder, please comment out.
if [ -e "${HOME}/.bash_profile" ]; then
    sed -i _cb.bak -e "/^export VAGRANT_HOME=.*$/d" "${HOME}/.bash_profile"
    rm "${HOME}/.bash_profile_cb.bak"
fi
echo 'export VAGRANT_HOME="'"${VM_BASE_DIR}"'/.vagrant.d"' >>"${HOME}/.bash_profile"
# --------------------------------------------------

VirtualBoxの仮想マシン保存先を変更しています。

保存先を変更したい場合は、#でコメントアウトされている箇所を下の状態に変更してください。

# --------------------------------------------------
# Change the save destination of vagrant box files to the VM_BASE_DIR folder.
# If you don't want to change the save folder, please comment out.
vboxmanage setproperty machinefolder "${VM_BASE_DIR}/VirtualBox VMs"
# --------------------------------------------------

VagrantのBoxファイルの保存先は、環境変数VAGRANT_HOMEによって決定されます。上のコードにあるecho 'export VAGRANT_HOME="'"${VM_BASE_DIR}"'/.vagrant.d"' >>"${HOME}/.bash_profile"でbashの初期設定ファイルに保存された環境変数を読み込み直して有効化しています。

if [ -e "${HOME}/.bash_profile" ]; then
    . "${HOME}/.bash_profile"
fi

Vagrantでプロビジョニング中に再起動出来るようにするvagrant-reloadプラグインがインストールされていない場合はインストールしています。

if [ ! "`vagrant plugin list | grep 'vagrant-reload'`" ]; then
    vagrant plugin install vagrant-reload
fi

Windows10 BoxファイルがVagrantに登録されていない場合は、Vagrantに登録しています。

Boxファイルは、ここからダウンロードすることが出来ます。

if [ ! "`vagrant box list | grep 'Microsoft/EdgeOnWindows10'`" ]; then
    unzip MSEdge.Win10.Vagrant.zip
    vagrant box add "./MSEdge - Win10.box" --name "Microsoft/EdgeOnWindows10"
    rm "./MSEdge - Win10.box"
fi

vagrant initでVagrantを現在のディレクトリで実行出来るように初期化しています。vagrant upで現在のディレクトリにあるVagrantファイルを読み込み仮想マシンを起動しています。

vagrant init
vagrant up

/host-osx/windows10/Vagrantfile

Vagrantfileは、Vagrantで仮想マシンの構築するために必要な構成を記述するためのファイルです。

VAGRANTFILE_API_VERSIONで使用するVagrantfileのAPIバージョンを定義しています。

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|からendの間には、複数の仮想マシンの定義を入れることが出来ます。

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  ...
end

config.vm.define :vm1 do |vm1|からendの間に構築する仮想マシンの構成を定義します。

複数の仮想マシンを定義する場合は、vm1をvm2等にして定義を繰り返すことで一つのVagrantfileで複数の仮想マシンを構成することが出来ます。

  config.vm.define :vm1 do |vm1|
    ...
  end

使用するVagrantのBoxの名前を指定しています。

Boxファイルは、仮想マシンのテンプレートになるファイルで自分で作成したり、Vagrant Cloudに公開されているBoxファイルを使用することも出来ますが、今回はMicrosoft社からダウンロードしてきたboxファイルから作成します。

VagrantへBoxファイルを登録する処理は、vm-create.command.shで行っています。

    vm1.vm.box = "Microsoft/EdgeOnWindows10"

プロビジョニング 時にWindowsと通信する方法をデフォルトのSSHからWinRMに設定を変えています。

vm1.vm.communicator = "winrm"

ホストOSの”./../../guest-share/windows10″ディレクトリをゲストOSの”/users/IEUser/share”ディレクトリに同期するように指定しています。

同期することでホストOSとゲストOSでファイルを共有して使用することが出来ます。

    vm1.vm.synced_folder "./../../guest-share/windows10", "/users/IEUser/share", create: true

仮想マシンに設定するIPアドレスを指定しています。

    vm1.vm.network "private_network", ip: "192.168.33.102"

WinRMを実行するユーザーIDとパスワードを設定しています。

    vm1.winrm.username = "IEUser"
    vm1.winrm.password = "Passw0rd!"

Vagrantのプロビジョニング により仮想マシンの初期化時にスクリプトを実行するように指定しています。

ここではWindowsを日本語化するためのPowershellスクリプトconfigure-1.ps1を実行し、reloadで仮想マシンを再起動、その後、日本語化の続きのPowershellスクリプトconfigure-2.ps1を実行しています。

日本語化スクリプトの詳細については、下のリンクを参照してください。

Windows10を日本語化するためのスクリプト
はじめに英語版Windows10を日本語化するためのスクリプトについて説明します。使用しているスクリプトは、githubにvm-configurateとして公開しているのでgithubからダウンロードするかここからダウンロードしてください。...
    vm1.vm.provision :shell, inline: "powershell -File \"C:\\users\\IEUser\\share\\os\\configure-1.ps1\""
    vm1.vm.provision :reload
    vm1.vm.provision :shell, inline: "powershell -File \"C:\\users\\IEUser\\share\\os\\configure-2.ps1\""

VirtualBoxに作成する仮想マシンを設定しています。

項目内容
gui仮想マシン起動時に仮想マシンを表示するかの設定
name仮想マシンの名前
cpus仮想マシンに割り当てるCPU数
memory仮想マシンに割り当てるメモリサイズ
customizeカスタマイズ設定。
VirtualBoxのVBoxManageで設定することの出来るパラメータを設定することが出来ます。
設定可能なパラメータは、ここを参照してください。
modifyvm仮想マシンを変更するコマンド
–clipboardホストOSとゲストOS間のクリップボードの共有に関する設定
–draganddropホストOSとゲストOS間のドラッグアンドドロップに関する設定
–vramビデオメモリサイズの設定
–graphicscontroller仮想マシンで使用するグラフィックスコントローラー
setextradata仮想マシンへの追加設定のコマンド
GUI/ScaleFactorホストOSに表示する仮想マシンの画面サイズをスケーリング
    vm1.vm.provider "virtualbox" do |vb|
      vb.gui = true
      vb.name = "windows10"
      vb.cpus = 2
      vb.memory = "4096"
      vb.customize ["modifyvm", :id, "--clipboard", "bidirectional"]
      vb.customize ["modifyvm", :id, "--draganddrop", "bidirectional"]
      vb.customize ["modifyvm", :id, "--vram", "128"]
      vb.customize ['modifyvm', :id, '--graphicscontroller', 'vboxsvga']
      vb.customize ['setextradata', :id, 'GUI/ScaleFactor', '2.00']
    end

Comment

スポンサーリンク