LoginSignup
5
3

More than 5 years have passed since last update.

Windows10 Creators Update のvagrant Boxをつくる

Last updated at Posted at 2017-08-16

Windows 側の準備をする

Windows ディスクイメージ の準備

Windows 10 のディスク イメージ (ISO ファイル) のダウンロードから[エディションの選択]で[Windows10]を選択してダウンロードする。

Windows をインストールする

ライセンスキーを入力する。スキップした場合でもいつでも設定からライセンスキーを入力できます。
Microsoft アカウントのログインを求められた時に、左下のオフラインアカウントでのログインをクリック、Microsoft アカウントでログインすると便利だよと言われるので、後でを押す。
ユーザー名とパスワードに"vagrant"を設定(プライベートユーズの場合、任意の名前とパスワードの方が良いかも)
プライバシー設定を全てオフにする
インストールが完了したらWindows Updateを適用して再起動
guest addition をインストールして再起動

UAC をオフにする

[Win + I] で Windows の設定画面を表示する。
検索窓に"ユーザー アカウント制御"("ユーザー"の後ろに半角スペース)で検索
一番下の通知しないに設定。
コントロールパネルでオフにした後さらにレジストリでもオフにする必要があるので、
[Win + X] -> [A] で管理者としてPowerShellを起動。以下のコマンドを実行

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /d 0 /t REG_DWORD /f /reg:64

再起動する。

WinRMの設定をする。
PowerShellではquickconfigは動いたがそれ以降のsetでエラーが出たので、コマンドプロンプトに切り替えて行った。PowerShell上で cmd と打てば切り替えられる。
以下の winrm quickconfig -q の前にトラブルシューティングも参考のこと。

winrm quickconfig -q
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"}
winrm set winrm/config @{MaxTimeoutms="1800000"}
winrm set winrm/config/service @{AllowUnencrypted="true"}
winrm set winrm/config/service/auth @{Basic="true"}
sc config WinRM start= auto

PowerShellからcmdに入った場合はexitでPowerShellに戻ってくる

PowerShellのExecutionPolicyをUnrestrictedにする

Set-ExecutionPolicy -ExecutionPolicy Unrestricted 

Get-ExecutionPolicyを実行して"Unrestricted"が返ってきたらOK

設定の検索窓で"リモート"を検索
"このコンピュータへのリモートアクセスの許可"をクリック
[リモートデスクトップ]の[このコンピュータへのリモートアクセスを許可する]にチェックして[ネットワークレベル認証でリモートデスクトップを実行しているコンピュータからのみ接続を許可する]のチェックを外す。

パフォーマンスの設定

視覚効果について設定

[システムのプロパティ]ウィンドウのまま、[システムの保護]タブにアクセス
保護設定が無効になっていることを確認
[詳細設定]タブに切り替え、[パフォーマンス]の[設定]をクリックすると[パフォーマンスオプション]ダイアログが開く
その[視覚効果]タブのチェックボックスでオンにしたりオフにしたり好きなように設定する。
パフォーマンスが気になる場合はアニメーションや影の項目のチェックを外すと良い
私は"コンピュータに応じて最適なものを自動的に選択する"の状態から以下のもののチェックを外した。

  • ウィンドウの下に影を表示する
  • ウィンドウを最大化や最小化するときにアニメーションで表示する
  • コンボボックスをスライドして開く
  • デスクトップのアイコン名に影をつける
  • ヒントをフェードまたはスライドして表示する
  • メニューをフェードまたはスライドして表示する
  • メニュー項目をクリック後フェードアウトする

仮想メモリについて設定

その[パフォーマンスオプション]ダイアログの[詳細設定]タブに移動し、[仮想メモリ]の[変更]をクリック
※既にダイアログを閉じている場合は設定の検索窓から検索すればすぐに開けるはず
[仮想メモリ]ダイアログが開く
[すべてのドライブのページングファイルのサイズを自動的に管理する]のチェックを外す
[カスタムサイズ]にチェックを入れ、[初期サイズ] [最大サイズ]を共に"1024MB"にして[設定]をクリック[OK]をクリック
再起動

拡張子の表示

エクスプローラの[表示] [オプション]から[隠しファイル、隠しフォルダー、および隠しドライブを表示する]にチェック[登録されている拡張子は表示しない]からチェックを外す。

容量軽減のための作業

スタートメニューの整理

スタートメニューにあるタイルを右クリックしてはアンインストールできるものはアンインストールし、できないものはスタートからピン留めを外すをひたすら繰り返す作業
必要に応じてコルタナさんもオフにしましょう。

ディスククリーンアップを実行する

SDelete をダウンロードして展開しておく(備考を参考のこと)

C:\Windows\System32\cleanmgr.exe /d c:
C:\path\to\sdelete64.exe -z C:

クリーンアップでは全部選択して削除

シャットダウンする

光学ドライブや共有フォルダが接続されていないこと、最新のWindows Updateが適用されていることを確認したらゲストOSをシャットダウンする。
以降ホストOSでの作業になる。

Vagrantfile の作成

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

Vagrant.configure(2) do |config|
  config.vm.box = "Windows10-1703"
  config.vm.guest = :windows
  config.vm.communicator = "winrm"
  config.vm.boot_timeout = 600
  config.vm.graceful_halt_timeout = 600

  config.vm.network :forwarded_port, guest: 3389, host: 3389, id: "rdp", auto_correct:true
  config.vm.network :forwarded_port, guest: 5985, host: 5985, id: "winrm", auto_correct: true
  # Port forward SSH
  # config.vm.network :forwarded_port, guest: 22, host: 2222, id: "ssh", auto_correct:true

  config.vm.provider "virtualbox" do |vb, override|
    vb.gui = true
    vb.customize ["modifyvm", :id, "--memory", 2048]
    vb.customize ["modifyvm", :id, "--cpus", 1]
    vb.customize ["modifyvm", :id, "--vram", "256"]
    vb.customize ["setextradata", "global", "GUI/MaxGuestResolution", "any"]
    vb.customize ["setextradata", :id, "CustomVideoMode1", "1024x768x32"]
    # vb.customize ["modifyvm", :id, "--paravirtprovider", "hyperv"]
  end
end

パッケージング

ホストOSにて

vagrant package --base VirtualBoxVMName --output /path/to/output/windows10CU.box --vagrantfile /path/to/initial/Vagrantfile

--outputに渡すものはフルパスでも良いがBox名だけでも良い。その場合はカレントディレクトリに生成される。
ディレクトリは勝手に作ってくれないっぽいので、指定したい場合は事前に作ってから実行した方が良い。

Boxを利用する

vagrant box add yourBoxName /path/to/windows10CU.box

vagrant box listで追加されたことを確認したら、いつも通り利用するディレクトリに移動して

vagrant init yourBoxName
vagrant up

を実行。VMが追加されて、毎回VirtualBoxのGUIが起動する。
vagrant rdpvagrant powershellで接続する。
windows 以外ではrdpクライアントをインストールしておかないと駄目かも。

備考

トラブルシューティング

  • はじめ日本語入力が使えなかったので設定の"時刻と言語"→"地域と言語"から日本語のキーボードにMicrosoft IMEを追加し直した。

  • winrm quickconfig を行った時に

    このコンピューターのネットワーク接続の種類の 1 つが Public に設定されているため、WinRM ファイアウォール例外は機能しません。 ネットワーク接続の種類を Domain または Private に変更して、やり直してください。

と言われたので
設定から[ネットワークとインターネット]→[イーサネット]→[ネットワーク]→[このPCを検出可能にする]をON

SDelete について

SDelete v2.0

使用法: sdelete [-p <回数>] [-s] [-q] <ファイルまたはディレクトリ> ...
sdelete [-p <回数>] [-z|-c] [<ドライブ文字>] ...
-a         読み取り専用の属性を削除します。
-c         空き領域から不要なものを除去します。
-p <回数>  上書きの回数を指定します (既定値は 1 です)。
-q         エラーを出力しないようにします (Quiet モードで実行します)。
-s または -r   サブディレクトリを再起処理します。
-z         空き領域に 0 を設定します (仮想ディスクの最適化に適しています)。

参考

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3