Windowsのイメージバックアップを取る最適解

情シスの仕事の1つとして、PCのキッティングがあります。キッティングが完了したらPCのリセット等で初期化をする時用にディスクイメージを取得しておき、別の人に貸与する際にはこのイメージを書き込んで追加セットアップして渡すのが一連の流れです。この際のディスクイメージの取得や書き込みをする手段についてまとめました。

多くの情シスではWindows標準のDismコマンドでwimイメージを取得して読み書きをさせていると思いますが、より簡単にそれらが出来るツール等も含めて検証します。特定の有償製品ではなく無償で利用できるという点に着目しています。sysprepを使ったキッティングは別記事でそのうち作成してみたい。

今回利用するツール 

  • DISM - Windows標準のツールでwimで固める
  • バックアップと復元 - Windows標準のツールでコンパネから利用する
  • RescueZilla

初期化状態のクリーンなPCからイメージを取得し復元するのに情シスで使うのはDISMコマンド。そしてwimイメージを操作するのが定石ですが、今回はwimイメージの他にRescueZillaなども使ってみたいと思います。

※無償で使えるAOMEI Backupper Standard等もありますが、これらはディスクがGPTの場合使えません。クローニングもディスクが検出されませんでした。RescueZillaは問題なくクローニング可能です。

注意点

Bitlockerの注意点

Dismにせよバックアップツールにせよ、Windows10/11でイメージバックアップと復元を利用するにあたっての注意点があります。それはBitlocker。BitlockerはそのPC固有の情報に基づいてディスク暗号化をしている為、そのイメージを他のPCに展開しても利用することは出来ません。固有のBitlocker回復キーはMicrosoftアカウントに紐付けされたり、社内ならばActive Directoryに保存されたりします。

故に個人宅のPCでならばBitlocker対応のバックアップソフトを使ってのイメージ取得や復元は問題ないと思いますが、企業ユースではキッティング後のPCではBitlockerは無効化してからイメージの取得を行いましょう。Bitlockerについてはイメージ復元後に個別に有効化し、回復キーを取得し保存する手順にする必要性があります。

USBメモリとフォーマットの注意点

WindowsPEといったブータブルなUSBメモリを作成し、ディスクイメージを復元したい場合いくつかの注意点があります。

  1. FAT32だと4GB以上のサイズのファイルを入れることが出来ない(NTFSにフォーマットし直す必要。exFATではブート自体出来ない)
  2. NTFSのUSBメモリだと古いPCではブート出来ない場合がある(ディスクイメージ用のUSBメモリとFAT32のブートディスクの2本を使って解決)
  3. 最近のUEFIなPCではNTFSではブートが出来ないので、BIOSでLegacy Bootを有効化セキュアブートを無効化する必要がある(FAT32は問題ない)

1本のUSBメモリにブートするFAT32領域とwimイメージ等を格納するNTFS領域の2つを作っておいて、運用するほうが現代のPCではオススメです。WindowsのDiskpartを使って以下のような形で自分は2つのパーティションを作成して運用しています。

  1. 管理者権限でコマンドプロンプトを起動する
  2. 以下のようなコマンドを実行する

    FAT32部分をKドライブとして30GB割当し、残りの領域をNTFSとしてJドライブで割り当ててます。Kドライブの側にWindowsPEやRescueZillaを入れておき、残りの部分にwimやバックアップディスク、スクリプト類を入れておくと良いでしょう。
  3. 実際に挿してみて2つドライブが出れば成功

難易度

実際にDismコマンドおよびWindowsPEの作成と、RescueZillaの2つを使ってみた感想として、難易度的には圧倒的に後者のRescueZillaのほうが楽ちんで利便性も上です。ただし、Windows標準で作れる点やセキュアブートの変更の手間などが無い分はDismコマンドのほうが楽とも言えます。

WindowsPE作成のハードルはそこそこ高いのですが、1度作ってしまえば何度も作ることは無いのと、情シスであれば必須のテクニックの1つでもあるので、個人的には前者のDism + WinPEをオススメしたいところ。

ただし、実際に情シスの現場で使う場合には、更にディスクイメージを作るsysprepの作業などが事前にあるので、この作業は全体の工程の1部でしかありません。

Windows標準機能

Dismコマンド

比較的小規模で台数もそこまで多いわけじゃないという場合、情シスで常套手段として利用してるのがDismコマンド。sysprepでキッティングした後に、Dsimコマンドでそのマシンのディスクイメージを取得したり、そのマシンに対してディスクイメージを書き込んだりする標準機能です。時に企業内で複数の型式のマシンが混在する為、複数イメージを保管し機種ごとに復元するといった作業も必要です。

イメージはwimという1個のファイルとして作成されます。Windows PEのUSBメモリにイメージファイルと作成用・復元用それぞれのコマンドを記述したBATファイルを入れ込んでUSBメモリからブートさせ仕事をする事になります。まずは、WindowsPEを作りましょう

WindowsPEの場合ブートすると

  • Xドライブ:ブートディスクのドライブ
  • Dドライブ:マシンのCドライブに当たるドライブ
  • Gドライブ等:イメージを保存するために別に用意したUSBメモリ

という形でブートするはずですが、実際にはnotepadなどを起動してみて対象のドライブレターがどれなのか?よく確認すべきでしょう。BATファイルで書き込む際も正しいドライブレターになってることを確認して書き直しが必要な場合があります。

Windows11 パーフェクトバイブル

イメージの作成

コマンドプロンプトを管理者権限で実行して、以下のようなコマンドを実行します。以下はCドライブをキャプチャしてZドライブに保存するようにしてあります。イメージ名はwindows10.wimとして保存します。ただし、WindowsPEでブートした場合、Cドライブは予約ドライブとなっており、実際にはDドライブになります。

保存場所は別のG:に当たるUSBメモリに今回は指定しています。

  1. 管理者権限でコマンドプロンプトを起動します
  2. 以下のようなコマンドを入力して実行します
  3. Gドライブにwimファイルが生成される
  4. このファイルはc:¥winpe¥mountの直下に置いてWindowsPEディスクを作っておくと良いでしょう。

図:wimでキャプチャしてる様子

イメージの復元

注意点

復元をする上での注意点がいくつかあり、

  • 復元先にデータ等がある場合、復元が実行できないでエラーとなるので、一度空にしてパーティションから作り直す必要がある
  • 復元をしてもこれだけではブートしなくなるので、Diskpartでブートフラグを付けてあげる必要がある。
  • ブートディスクにwimを同梱してしまうとRAMの容量不足に陥ることがあるので、wimファイルは別のドライブにわけておくか別のUSBメモリに入れておく
  • ドライブレターは必ずしも同じとは限らないので、必ずBAT実行前にドライブレターは確認しておく
  • 複数のPCの型式毎にwimを指定するBATファイルを用意しておく必要はあるかもしれない

といった形で、きちんと仕組みを用意しておかないと復元がスムーズに進みません。こちらの工程のように、DiskPartでパーティションを切ったりスクリプトを実行する必要があるので、それらを含めた復元用のBATファイルを用意する必要があります。以下の工程を参照してください。

パーティション作成用スクリプト

ディスクイメージを復元するには、現在のCドライブの中身を消してパーティションを作り直す必要があります。その為のスクリプトは前述のMicrosoftのサイトにもありますが、これらを要約して以下のようなtxtファイル(ファイル名:CreatePartisions-UEFI-FFU.txt)としてスクリプトを用意しておきます。今回のスクリプトはUEFIブートさせるPC用なので、BIOS用の場合はちょっと異なるので注意。

余計なディスクの無い状態にて

  • 1番目の物理ディスクを選択して初期化
  • gptディスクとして指定し、EFIに100MB(FAT32)を指定し、ドライブレターはSドライブとする
  • 予約パーティションは16MBとして指定
  • Windowsパーティションは残りのすべてを指定し、ドライブレターはWドライブとする

Wドライブが復元先となります。これが完了後にはCドライブとなるので要注意

復元用のBATファイル

前述のスクリプトを呼び出す形で初期化を行いつつ、ディスクイメージを復元しブートフラグをつけるBATファイル(ファイル名:applyImage.bat)を作成します。このファイルと前述のファイルはc:¥winpe¥mountの直下に格納して、WindowsPEのディスクを作っておくと良いでしょう。

  • Powercfgにて電源プランを高パフォーマンス状態とします
  • diskpartにて、前述のCreatePartisions-UEFI-FFU.txtに基づくパーティショニングをするコードを実行する
  • dismのApply-ImageにてGドライブに入ってるwindows10.wimをWドライブに対して復元を実行
  • bcdbootにて起動フラグを付けてあげる

という手順を一括で行うBATスクリプトになります。

復元手順

Windows10/11のインストールディスクやWindowsPEディスクを作成しておき、その中にwimイメージと復元用のBATファイルを同梱しておきましょう。以下のようなBATファイルを実行することで、ディスクを初期化した上でイメージを適用し、バックアップを復元することができるようになります。

ただし、WindowsPEでブートした場合、前述のパーティション作成スクリプトと復元用スクリプトをあわせて適用するため、一時仮割当したWドライブに復元を実行することになります。

  1. USBメモリのディスクからブートさせる(UEFIブートなど)
  2. Windows10のインストールディスクの場合は、起動するとWindows10等のインストール開始画面がでますが、ここでShift + F10キーでコマンドプロンプトを出す(PEの場合はダイレクトにコマンドプロンプトが出てる状態のはず)
  3. インストールディスクがXドライブだと思われるので、cd X:で移動する
  4. 今回はG:¥にwindows10.wimというファイルがあるのでこれを利用する
  5. Xドライブ直下にあるapplyImage.batを実行する
  6. Wドライブに対して復元が実行される。

WindowsPEを終了させて、ディスクを抜いて再起動をすると、WドライブことCドライブに必要なパーティショニングがされた上で復元がなされてブートするようになっているはずです。

図:復元作業実行中の様子

ツールを利用する

DISMはコマンドラインツールであるため、BATファイルを作成する上でもコマンドラインを扱える必要性があります。そこで合わせて使いたいのが、DISMコマンド用のフロントエンドツール。ウェブ上を探索してみると以下のようなものがリリースされています。

このうち、ディスクイメージの取得や復元を行えるのが前者のDISM GUIやDism++。後者はページが既に存在しないので、Dism GUI 4.0 Utilityを今回は取り上げてみます。主な機能としては以下のような機能を搭載しています。

USBメモリにこのツールを入れておいてコマンドラインではなくGUIでイメージの取得やキャプチャなどを出来るようにしておくと、利便性が向上します。ただし、WindowsPEに.Net Framework 4.0を事前に入れておく必要があるので要注意。

図:Dism GUIツールを起動してみた

バックアップと復元機能

Windows7の頃から搭載してる古い機能です。昔からあるイメージバックアップの取得と復元をする機能なのですが、実はこの機能紹介してるページが多いですが、Windows10 Build 1709より非推奨の機能となっているため、将来的に削除や無効化、また復元が困難になるなどが想定されています。

これまでこの機能を利用してせっせとバックアップしていた人は早急に違う手段でのバックアップ手段に乗り換えるようにしましょう(とはいえ、Windows11 ARM版にも搭載されていたりする)。また、NTFSにしかバックアップが出来ない、環境によっては使えないなどあまり優秀ではありません。

  1. 設定アプリを開き、更新とセキュリティを開く
  2. 左サイドバーのバックアップを開き、バックアップと復元に移動(Windows7)をクリック。
  3. 左パネルにある「システムイメージの作成」をクリック
  4. バックアップ先は、内部のディスクではなく、外付けの大容量HDDを用意しましょう。サブのHDDや別のドライブを含める事も可能
  5. どんどん次へ進んでいく
  6. 最後にバックアップ開始で、イメージバックアップが取得されます。

図:Windows10に付属のOS標準イメージバックアップ

これで終わりではありません。バックアップから復元する為のシステム修復ディスクを作りましょう。

  1. 同じバックアップと復元の画面で今度は「システム修復ディスクの作成」をクリック
  2. USBメモリを用意して、差し込み作成開始

その他の手段

それ相応の規模の企業の場合、1台1台クローニング作業などを手作業で行うのは時間と手間も掛かるため、PCをまとめて購入してそこにディスクイメージを書き込むといった作業が必要な場合は以下のような手法がオススメです。自分は1.を利用推奨しています。

  1. PCレンタルサービスを利用しイメージキッティングまで含めて依頼する(Microsoft365インストール済みなど融通が効きます)
  2. Windows Serverを利用しPXEブートでWindows展開サービスを利用したクローニングを利用する
  3. Acronis Snap DeploySymantec Ghost Solution Suiteを利用したデプロイ環境を構築する

しかしこれらは有償のサービスになります。企業の規模によって利用を考えましょう。人手不足の時代に数百台ものPCを人力でクローニングする人件費と天秤に掛けて利用した場合のほうが明らかに手間もコストも安いと思います。

ディスク交換の引越し時にも使える

先日、自宅のデスクトップ機のSATA形式のSSD(256GB)をTrancendのSSD(2TB)に交換しました。交換手順としては

  1. Windows10起動ディスクを作っておきブート
  2. そこにdiskimage吸い出すBATファイルを仕込んでUSBメモリにイメージ格納
  3. 一旦シャットダウンして、SSDを交換
  4. 再度、1.のディスクでブート
  5. 今度はdiskimageを復元するBATファイルで吸い出した2.のイメージを書き戻し
  6. 再起動するとバッチリ元の環境が引っ越しできています。

昔あった下手なバックアップツールよりも確実に処理が出来るので、この手法は身につけておくとこうしたシーンでも活かせます。

RescueZilla

CloneZillaと呼ばれるコマンドラインベースのオープンソースのバックアップツールにGUIを搭載したスグレモノです。これまでもフリーソフトとしてはMacrium Reflectなどがありました。ということで、今回はこのRescueZillaを使ってみました。日本語にも対応しています。作業としてはDismよりも断然楽ちんです。

※FirefoxやGPartedなども搭載しています。

※バックアップ以外にもイメージのマウントやクローニングも可能になっています。

USBディスクの作成

2つの方法で試してみてわかったことがあるので、それも含めて作成方法を記述します。Windows用として使うのですが、CD-Rに焼いたりUSBメモリに書き込んで使うツールなのですが、書き込みにはrufusBalenaEtcherを使って作成します。

ところが、後者のBalenaEtcherの場合、焼き込んでもブートローダに問題があるのか、EFI環境では起動せずBIOS環境でなければ起動しませんでした。前者の場合は両対応であるため、GPT/EFIな最近のPCでも起動するようになります。また、ResucueZilla自体はセキュアブート対応のツールとなっているので、起動すればそのままバックアップを取ることが可能です。

今回はrufusを使ってEFIブート可能なUSBメモリを作成します。Balena Etcherでも作成は可能です。

  1. rufusを起動する
  2. USBメモリを差し込む
  3. ディスク選択でrescuezillaのISOファイルを選択する
  4. パーティション構成はGPTを選択
  5. 自動でターゲットシステムはUEFI(CSM無効)という構成になる
  6. ファイルシステムはFAT32のままにする
  7. スタートをクリックする
  8. ISO Hybridイメージの検出というダイアログが出ますがそのまま「はい」をクリックですすめる

これで、対象のPCでEFIブートメニューを起動して、USBメモリを選択すれば起動するようになります。セキュアブート対応なので、EFI側でセキュアブートをオフにしたりCSMをオンにするなどの作業は不要です。

図:rufusでEFI対応のUSBメモリを作成する

バックアップ時の注意点

作成したらBIOS/EFIからブートプライオリティを変更して、CDやUSBからブートするようにするのですが、いくつか注意点があります。

  1. 前述のようにWindows10/11の場合、bitlockerがオンの場合バックアップが出来ませんので、事前に解除が必要です。
  2. ノーマルなMBR/BIOSなPCの場合はブートプライオリティをBIOSで変更しておく必要があります。
  3. EFIなPCの場合は、F2やF12キーなどのUEFIブートメニューを起動時に開いて、選択して起動します。
  4. ただし、EFI未対応のUSBへの書き込みの場合(FAT32ではないディスク等)は、PCのセキュアブートをオフにする、CSMを有効化などの作業が必要になります。何機種かテストしましたが、基本、セキュアブートオンでCSM無効のままでもクローニングはできました

セキュアブートのオフをする方法はPCによって異なるのですが、概ねこのページにあるようなやり方になります。

※ケースによってはWindows11の場合セキュアブートをオフにすると起動しなくなるので、バックアップ後はセキュアブートをオンに戻しましょう。

ブートしたら、日本語を選択しRescueZillaを起動するを選択すれば作業開始です。

図:日本語もバッチリ対応

図:rescuezillaを起動しよう

使ってみる

Linuxベースのツールなので、起動が成功するとLinuxが起動し自動的にRescueZillaが起動するようになります。ここからバックアップを開始します。今回はCDブートさせた後に512GBのUSBメモリも挿して起動させています。実際にVMware Fusion上のWindows8.1をバックアップ⇒レストアをしてみましたが、バッチリバックアップと復元が出来ました。

RescueZilla用のパーティションとバックアップ先のパーティションの2つをUSBに設けておくとバックアップイメージも通常のPCから見えますし、ブートも可能になるので、おすすめです。

バックアップ

  1. バックアップをクリックする
  2. バックアップ元ドライブを選択します。容量などからどのドライブなのか見分けることが可能です。
  3. 保存するパーティションを選択の画面では基本的に全部選択します
  4. 保存先ドライブでは今回は挿しておいたUSBメモリを指定。NASなどに接続してそちらに保存することも可能です。
  5. 保存先フォルダは特にそのままで次へ
  6. バックアップイメージの名前をつけて次へ
  7. 最終確認画面で次へをクリック
  8. バックアップが始まりUSBメモリへバックアップファイルが書き込まれます。

これで復元時用のファイルが完成です。

図:保存先ドライブの指定画面

図:バックアップ実行中の様子

復元

前述のRescueZillaで取得しておいたイメージバックアップのファイルを指定して今度は復元をしてみます。

  1. レストアをクリックする
  2. イメージの格納されてる場所を指定する。ここではUSBメモリを探して指定
  3. バックアップイメージを選択する
  4. レストアするドライブを指定する。
  5. パーティション選択画面は基本的に全部指定状態のまま次へ進みます。
  6. 最終確認画面で次へ進む
  7. レストアが実行される
  8. レストアが完了したら、RescueZillaを終了し、ブートしてみる

図:イメージ選択画面

図:レストア実行中の様子

クローニング時の注意点

ディスクのクローンをしてみました。セキュアブートはオン・CSMは無効というデフォルトのままWindows10のHDD⇒SSDに対して行っています(Panasonic CF-SZ5のRAM4GBモデルです:CF-SZ5YDLQR)。

外付にSATAケーブルでSSDを装備し、USBメモリからRescueZillaを起動。クローニング後にHDDを換装。ここで以下の重要な注意点があります。

  1. クローニングはパーティションサイズも忠実に再現するので、より大容量のSSDでも元のHDDと同じパーティション構成になります
  2. よって、余った部分が未割り当ての状態になるのでGPartedなどで不要な後ろのパーティションを削除してメインのCドライブにあたるパーティションを拡張し反映する
  3. 換装するとBIOS画面に入って、UEFIブートの優先度にて、なぜか1番目がRecovery Partitionとなってるので、ここをWindows Boot Mangerに変更して保存する
  4. GPartedで元のHDDからRecovery Partitionなどは切り貼りでSSDに後で貼り付けられるので16GB程度後ろに残しておいて貼り付けました。
  5. SSDディスクに対してTrimがオフのままなので、以下のコマンドでTrimをオンにしましょう。

特に3.が勝手にWindows Boot Managerが1番目じゃなくなってるので起動せず焦ることになるので必ず、F2でBIOS画面に入って設定を変更し保存しましょう。無事に交換後は10秒程度でWindowsが起動するようになりました。

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)