概要
CO-Spray で配信した端末には、通常の更新手順で Windows の機能更新プログラム (Feature Update) を適用することはできません (CO-Spray では Windows の VHD Native Boot の機能を用いているため)。この制限を回避するために、Hyper-V の仮想マシンに CO-Spray が管理するディスクイメージを割り当て Windows を起動し、仮想マシン上で Windows の Feature Update を適用する手順を紹介します。
このドキュメントでは、Hyper-V に CO-Spray のディスクイメージを割り当てる操作から、Feature Update が完了したディスクイメージを CO-Spray の管理下に置くまでの一連の操作を説明します。
前提条件
- クライアントは UEFI (GPT) で構成された環境であること
- ディスクイメージは vhdx 形式であること
事前準備
Windows サーバー上に Hyper-V を導入します。
CO-Spray サーバーとは別のサーバーに導入してもかまいませんが、別のサーバーに導入した場合には、ディスクイメージを Hyper-V を導入したサーバーにコピーする手間が発生します。
構成
このあとの「手順」で実行するコマンドには、次の構成を基にした値を使用しています。 ご利用の環境に合わせて適宜読み替えて、操作してください。
設定 | 値 |
---|---|
Feature Update するディスクの名前 | DiskA |
Feature Update するディスクの最新バージョン番号 | 5 |
CO-Spray ディスクイメージ管理フォルダ | C:\Disks |
Feature Update するディスクの管理フォルダ | C:\Disks\DiskA |
Feature Update するディスクのファイル名(最新バージョン) | C:\Disks\DiskA\DiskA.5.vhdx |
手順
Hyper-V サーバーで以下の操作を行います。
1. 更新作業用の vhdx の作成
CO-Spray で利用しているイメージの差分を作成します。
1-1. Diskpart を起動する
管理者権限でコマンドプロンプトを起動して、diskpart
コマンドを実行します。
> diskpart
1-2. 更新作業用の差分ディスクを作成する
create vdisk
コマンドを実行して更新作業用の差分ディスクを作成します
DISKPART> create vdisk file=C:\Disks\DiskA\hyperv.vhdx parent=C:\Disks\DiskA\DiskA.5.vhdx
file=
には更新作業用の差分のディスクとして新規作成する vhdx ファイルを絶対パスで記述します。parent=
には CO-Spray が管理するディスクイメージの最新の差分ディスクを絶対パスで指定します。
コマンド実行後、下記のメッセージが表示されることを確認します。
100% 完了しました
DiskPart により、仮想ディスク ファイルが正常に作成されました。
1-3. 更新作業用ディスクをマウントする
attach vdisk
コマンドを実行して、更新作業用ディスクをマウントします。
DISKPART> attach vdisk
コマンド実行後、下記のメッセージが表示されることを確認します。
100% 完了しました
DiskPart により、仮想ディスク ファイルがアタッチされました。
Tips:attach した vdisk のディスク番号を確認する方法
list vdisk
コマンドで attach
したディスクのディスク番号を確認できます。
DISKPART> list vdisk
仮想ディスク ### ディスク ### 状態 種類 ファイル
---------------- ------------ -------------------- ---------- --------
* 仮想ディスク 0 ディスク 1 アタッチされたディスクは開いていません 拡張可能 C:\Disks\DiskA\hyperv.vhdx
1-4. ディスクが GPT フォーマットであることを確認する
list disk
コマンドを実行して、ディスクが GPT フォーマットであることを確認します。
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン 200 GB 1024 KB
* ディスク 1 オンライン 40 GB 1024 KB *
attach
したディスクの GPT の列に *
マークがついていれば GPT です。
1-5. NTFS パーティションのドライブレターを確認する
マウントした更新作業ディスクの NTFS パーティションのドライブレターを確認します。
※ このあとの工程でこの情報が必要となります。
list partition
コマンドを実行して、 プライマリパーティションを確認します。
DISKPART> list partition
コマンド実行後、下記のメッセージが表示されます。
Partition ### Type Size Offset
------------- ------------------ ------- -------
Partition 1 予約 128 MB 17 KB
Partition 2 プライマリ 40 GB 128 MB
プライマリパーティションを選択します。
DISKPART> select partition 2
detail partition
コマンド を実行します。
DISKPART> detail partition
コマンド実行後、下記のメッセージが表示されます。
パーティション 2
種類 : ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
隠し属性 : いいえ
必要 : いいえ
属性 : 0000000000000000
オフセット (バイト): 17825792
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ---- ---------- ------- --------- --------
* Volume 2 E NTFS Partition 40 GB 正常
NTFS パーティションに割り当てられているドライブレターをメモしておきます
以上で更新作業用ディスクの作成は完了です。
2. EFI パーティションの作成
CO-Spray が管理するディスクイメージには EFI パーティションがないため、このままでは Hyper-V で起動することができません。
以下の手順を実施して、EFI パーティションの vhdx ファイル (efi.vhdx
) を作成します。
1-1. Diskpart を起動する
管理者権限でコマンドプロンプトを起動して、diskpart
コマンドを実行します。
> diskpart
2-2. EFI 用のディスクを作成する
DISKPART> create vdisk file=C:\Disks\DiskA\efi.vhdx maximum=2048
100% 完了しました
DiskPart により、仮想ディスク ファイルが正常に作成されました。
2-3. 作成したディスクをマウントする
DISKPART> attach vdisk
100% 完了しました
DiskPart により、仮想ディスク ファイルがアタッチされました。
2-5. GPT フォーマットにする
DISKPART> convert gpt
DiskPart は選択されたディスクを GPT フォーマットに正常に変換しました。
2-5. EFI パーティションを作成する
EFI パーティションを作成して、FAT32 でフォーマットします。
DISKPART> create partition efi size=1024
DiskPart は指定したパーティションの作成に成功しました。
DISKPART> format quick fs=fat32
100% 完了しました
DiskPart は、ボリュームのフォーマットを完了しました。
2-6. ドライブレターを設定して diskpart を終了する
作成した パーティションに対して、空いているドライブレターを設定し、diskpart を終了します。
ここでは、S:
を設定しています。
これ以降の手順では、EFI パーティションには S: ドライブが割り当てられているものとして説明しますので、これとは違うドライブレターを使用した場合には、適宜読み替えてください。
DISKPART> assign letter=S
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。
DISKPART> exit
DiskPart を終了しています...
2-7. EFI のパーティションでブートできるようにする
bcdboot
コマンドを実行し、Windows が起動できるように EFI を設定します。
下記コマンド実行例の、第一引数の E:\
の部分には 手順 1-6 で確認した更新作業ディスクの NTFS パーティションに設定されたドライブレターを記述してください。
/s
の後ろには、EFI パーティションに設定したドライブレターを記述してください。
> bcdboot E:\Windows /l ja-jp /s S: /f all
ブート ファイルは正常に作成されました。
以上で EFI の設定は完了です。
2-8. ドライブレターの削除と vdisk のアンマウント
引き続き、手順 2-6 で割り当てたドライブレターを削除して、マウントした vdisk のアンマウントを行います。
再度 disk part に入ります。
> diskpart
DISKPART>
EFI パーティションに割り当てたドライブレターの割り当てを外します。
DISKPART> select volume S
ボリューム X が選択されました。
DISKPART> remove letter S
更新作業ディスクをアンマウントします。
select vdisk file
では 作業 vhdx を指定してください。
DISKPART> select vdisk file=C:\Disks\DiskA\hyperv.vhdx
DISKPART> detach vdisk
EFI パーティション用 ディスクをアンマウントします。
select vdisk file
では EFI パーティション用 vhdx を指定してください。
DISKPART> select vdisk file=C:\Disks\DiskA\efi.vhdx
DISKPART> detach vdisk
3. 仮想マシンの作成
Hyper-V において更新作業を実施するための仮想マシンを作成します。
メニューの [操作] > [新規] > [仮想マシン] で仮想マシンを追加します。
仮想マシンの種類は、ディスクイメージの作成手順により異なります。
- 仮想マシンの世代: 第 2 世代
- 起動メモリ: 4096 MB 以上を推奨
- 仮想ハードディスク:
- 手順1. で作成した 更新作業用 vhdx (
hyperv.vhdx
) - 手順2. で作成した EFI パーティション用 vhdx (
efi.vhdx
)
- 手順1. で作成した 更新作業用 vhdx (
仮想マシンに対して、以下の設定を行います。
- セキュリティ設定: セキュアブートを無効にする
- ブート順序: ハードドライブ
efi.vhdx
を最上位にする - プロセッサ数: 2 以上を推奨
4. Feature Update を実施する
- 仮想マシンを起動する
- Feature Update を実施する (何度か自動で再起動されます)
- Feature Update 完了後、OS のバージョンを確認し、仮想マシンをシャットダウンする
- 仮想マシンからディスクの割り当てを解除する
- EFI 用の vdisk を削除する
エクスプローラーなどから操作してefi.vhdx
を削除する
5. CO-Spray に新バージョンとして設置する
5-1. 更新作業用ディスクの vhdx ファイルを読み取り専用にする
エクスプローラーで、hyper.vhdx ファイルを右クリックして [プロパティ] を開く。 [全般] タブの [属性] の [読み取り専用] にチェックをいれて [OK] をクリックする。
5-2. 更新作業用ディスクを CO-Spray に登録する
更新作業用ディスク (hyperv.vhdx
) を CO-Spray のディスク イメージ管理フォルダのディスク名のフォルダ内に移動します。
更新作業用ディスク (hyperv.vhdx
) の vhdx ファイルのファイル名を変更します。
ディスク名の後の番号には、最新のバージョン番号を設定します。
(例) ディスク名が DiskA
、Feature Update 実行前の最新バージョンが 5
であった場合
- (変更前)
hyperv.vhdx
- (変更後)
DiskA.6.vhdx
5-3. 新しく作成されたバージョンが配信されるように設定する
CO-Spray コンソールにおいて、新しく作成されたバージョンが配信されるように設定します。
6. 端末にイメージを配信する
端末に 手順5. で登録した新バージョンを配信し、問題なく起動できることを確認します。