azukipochette's weblog

memory dump (mini)

検証用の Windows ベース イメージを Compact OS にして約 30 % (1.6 GB) ディスク節約する話

Compact OS とは何なのか

マイクロソフトは、パートナーを通じて戦略的に Windows タブレット PC を複数出していますが、タブレットのような小型端末では、SSD などの大容量ディスクが搭載できないため Windows のようなディスクの占有率の大きい OS をインストールするとユーザー使用領域がほとんどないという問題が発生します。そこで、Windows 10 では特定条件を満たすと自動的に Compact OS と呼ばれる OS のシステム ファイルを圧縮するモードでインストールされるようになっています。また、条件を満たしていなくても OEM がマスターイメージ作成時にオプションを有効にすることもできます。compact.exe というコマンドを使うことであとから圧縮/非圧縮を変更できますが、今回はこの話はせずに、インストール時に Compact OS 化する話をします。なお、Compact OS というのは、ファイルアクセス時に展開することになるため、パフォーマンスが悪い HDD などのディスクでは推奨されません。

なぜ Compact OS なのか

私は Vagrant + VMWare を使って検証 VM を管理していますがベース イメージ自体を小さくするということは、ディスク使用量の減少だけでなく、BOX ダウンロード時間の短縮、BOX 管理用クラウド ドライブの使用料削減、など様々なメリットがあるからです。

Compact OS のインストール方法

Windows 10 のインストール画面で Shift+F10 を押し、コマンド プロンプトを起動します。

(オプション) 英語キーボードを使用している場合

英語キーボードを使用している場合、日本語版の OS では日本語配列のキーボードであることが想定されているため、うまく入力ができません。 英語のキーボードのリストを取得する場合、次のように入力します。

wpeutil ListKeyboardLayouts 0x411

表示されたリストの中から使用中のキーボードを選択します。たとえば英語 "(インターナショナル)" キーボードの場合は次のように実行します。

wpeuitl SetKeyboardLayout 0411:00020409

変更後、次のようにして新しくコマンド プロンプトを起動すれば、英語配列でキー入力ができるようになります。

start cmd

パーティションを設定する

パーティションは diskpart コマンドで行います。コマンドライン上で以下のコマンドを実行し、対話モードでパーティションを作成していきます。

diskpart

パーティションの作成方法は、マイクロソフトの以下のドキュメントを参考にします。

https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn898510(v=vs.85).aspx

具体的には、以下のコマンドで UEFI/GPT ベースのハード ドライブ パーティションを設定していきます。なお、私の場合、回復パーティションのほうはディスク サイズ削減を目的に作成していません *1

select disk 0
clean
convert gpt
create partition efi size=100
format quick fs=fat32 label="System"
assign letter="S"
create partition msr size=16
create partition primary 
shrink minimum=500
format quick fs=ntfs label="Windows"
assign letter="W"

create partition primary
format quick fs=ntfs label="Recovery tools"
assign letter="R"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001

list volume
exit

コンパクト OS イメージを適用する

必須ではありませんが、作業を高速化するために電源プランを "高パフォーマンス" に変更します。

powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

以下のコマンドで、ISO に含まれるエディションを取得します。

dism /get-ImageInfo /ImageFile:D:\sources\install.wim

表示されたリストから、インストールするエディションをのインデックス番号を特定します。 たとえば、"Windows 10 1803 (Business Edition)" の場合、以下のリストが表示されます。

# 名前
1 Windows 10 Education
2 Windows 10 Enterprise
3 Windows 10 Pro
4 Windows 10 Pro Education
5 Windows 10 Pro for Workstations

次にコンパクト OS イメージを W:\ に適用します。以下の例では、"Windows 10 Enterprise" (2) をインストールの対象にしています。

dism /Apply-Image /ImageFile:D:\sources\install.wim /Index:2 /ApplyDir:W:\ /compact

BCDBoot を使ってシステム パーティションを構成します。

W:\Windows\System32\bcdboot W:\Windows /s S:

システムを再起動します。

wpeutil reboot

再起動後、Windows が "準備しています" と言いながら様々な設定をしますので、しばらく待ちます。 (結構長いです)

準備が完了するとコルタナが話しかけてきますので、あとは通常のセットアップ同様に作業を行います。

Compact OS になっているかどうかを確認する

Compact OS としてインストールできているかどうかを確認するには次のコマンドを実行します。

compact /compactos

Compact OS になっていれば、以下のように表示されます。

システムは圧縮状態です。管理者が変更しない限り、この状態のままになります。

それでは、よい Compact OS 生活を。Enjoy!

*1:検証用の VM を大切に使う方は回復パーティションを用意したほうがいいと思います。私は壊れたら作り直す精神です。