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 rdp
やvagrant powershell
で接続する。
windows 以外ではrdpクライアントをインストールしておかないと駄目かも。
備考
トラブルシューティング
-
はじめ日本語入力が使えなかったので設定の"時刻と言語"→"地域と言語"から日本語のキーボードにMicrosoft IMEを追加し直した。
-
winrm quickconfig
を行った時にこのコンピューターのネットワーク接続の種類の 1 つが Public に設定されているため、WinRM ファイアウォール例外は機能しません。 ネットワーク接続の種類を Domain または Private に変更して、やり直してください。
と言われたので
設定から[ネットワークとインターネット]→[イーサネット]→[ネットワーク]→[このPCを検出可能にする]をON
SDelete について
使用法: sdelete [-p <回数>] [-s] [-q] <ファイルまたはディレクトリ> ...
sdelete [-p <回数>] [-z|-c] [<ドライブ文字>] ...
-a 読み取り専用の属性を削除します。
-c 空き領域から不要なものを除去します。
-p <回数> 上書きの回数を指定します (既定値は 1 です)。
-q エラーを出力しないようにします (Quiet モードで実行します)。
-s または -r サブディレクトリを再起処理します。
-z 空き領域に 0 を設定します (仮想ディスクの最適化に適しています)。