目標
- 起動できないデバイスのデータをサルベージするために、USB メモリから起動する Windows PE を作成する。
- GUI でファイル操作をするために、ファイルマネージャーとして、7-Zip File Manager を使う。
- USB メモリに、WinPE とサルベージデータ保存用に 2 つのパーティションを作成する。
- WinPE 用の既定のドライブ フォーマットである FAT32 の最大ファイル サイズは 4GB、最大パーティション サイズは 32GB なので、データ リカバリー用は NTFS でフォーマットする。
準備
1. Windows アセスメント & デプロイメント キット (ADK) と WinPE アドオンのインストール
(1) Windows ADK と WinPE アドオンをダウンロードする。
- 次から、Windows のバージョンに合わせた ADK と WinPE アドオンの 2 個をダウンロードする。
- テクニシャンPC は、Windows 10 21H2 64bit を使用するので、Windows 10 バージョン 2004 をダウンロードした。
- 他のバージョンでは、インストール中のメニューの表現が異なる場合がある。
(2) Windows ADK をインストールする。
- adksetup.exe を起動する。
- 「場所の指定」では、「このコンピュータにWindows アセスメント & デプロイメント キットをインストールします」を選択する。「インストール パス」はそのままで。
- 「Windows キット プライバシー」の「Windows 10 キットの匿名の使用状況データを Microsoft に送信しますか?」は、「いいえ」でよい。
- 「インストールを行う機能を選択してください」では、「Deployment Tools」は必ず選択する。他は選択しなくても WinPE は作成できる。
(3) WindowsPEアドオンをインストールする。
- adkwinpesetup.exeを起動する。
- 「Specify Location」では、「Install the Windows アセスメント & デプロイメント キット Windows Preinstallation Environment アドオン - Windows 10 to this computer」を選択する。
- 「Windows Kits Privacy」の「Send anonymous usage data to Microsoft for the Windows 10 Kits?」は、「No」のままでよい。
- 「Select the features you want to install」では、「Windows Preinstallation Environment(Windows PE)」は必ず選択する。
2. 7-Zip のインストール
- 次から 7-Zip(64-bit x64)をダウンロードし、インストールする。「Destination folder」はそのままで。
USB メモリから起動する日本語化した WinPE の作成
- 次のコードでバッチファイルを作り、USB メモリを挿してから実行する。
- テクニシャンPC が 32bit Windows ならば、PATH を適宜変更する。
- PowerShell や Driver をインストールする場合、size=512 は作成する WinPE のサイズに合わせて変更する。
- USB メモリのフォーマットに失敗するときがあるが、もう一度実行するとうまくいった。
make_winpe.bat
@echo off
rem ----- 管理者でなければ管理者として実行 -----
whoami /priv | find "SeDebugPrivilege" > nul
if %errorlevel% neq 0 (
@powershell start-process %~0 -verb runas
exit
)
setlocal
echo ----- USBメモリのフォーマット -----
set DISKPART_TXT=%TEMP%\diskpart.txt
echo list disk > %DISKPART_TXT%
diskpart /s %DISKPART_TXT%
echo;
set /P NUM_DRIVE="USBディスクのディスク番号を数値で入力してください。: "
echo;
set /P STR_INPUT="ディスク %NUM_DRIVE% にパーティションを作成します。よろしいですか?(Y/N): "
IF /I not "%STR_INPUT%" == "Y" (
echo;
echo "終了します"
echo;
pause
exit
)
echo select disk %NUM_DRIVE% > %DISKPART_TXT%
echo clean >> %DISKPART_TXT%
echo create partition primary size=512 >> %DISKPART_TXT%
echo active >> %DISKPART_TXT%
echo format fs=FAT32 quick label="WinPE" >> %DISKPART_TXT%
echo assign letter=P >> %DISKPART_TXT%
echo create partition primary >> %DISKPART_TXT%
echo format fs=NTFS quick label="USB_B" >> %DISKPART_TXT%
echo assign letter=Q >> %DISKPART_TXT%
echo Exit >> %DISKPART_TXT%
diskpart /s %DISKPART_TXT%
del %DISKPART_TXT%
if not exist P:\ (
echo フォーマットに失敗しました。もう一度実行してみてください。
pause
exit
)
echo;
echo ----- 7-Zip 環境の設定 -----
set MYAPPS_DIR=Q:\.MyApps
mkdir %MYAPPS_DIR%
set SETENV_BAT=%MYAPPS_DIR%\setenv.bat
echo @echo off > %SETENV_BAT%
echo set PATH=%%~dp07-Zip;%%PATH%% >> %SETENV_BAT%
echo 7zFM.exe >> %SETENV_BAT%
echo;
xcopy "C:\Program Files\7-Zip\" %MYAPPS_DIR%\7-Zip\
xcopy "C:\Program Files\7-Zip\Lang\ja.*" %MYAPPS_DIR%\7-Zip\Lang\ja.*
echo;
echo ----- WinPE USB の作成 -----
set WINPE_DIR=C:\WinPE_amd64
set ADK_PATH=C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit
set ADK_PACK=%ADK_PATH%\Windows Preinstallation Environment\amd64\WinPE_OCs
call "%ADK_PATH%\Deployment Tools\DandISetEnv.bat"
if not exist "%WINPE_DIR%" (
echo;
echo 作業ファイルの作成
copype amd64 "%WINPE_DIR%"
)
echo;
echo ----- Windows PE ブート イメージをマウント -----
Dism /Mount-Image /Imagefile:"%WINPE_DIR%\media\sources\boot.wim" /Index:1 /Mountdir:"%WINPE_DIR%\mount"
echo;
echo ----- 日本語ランゲージパック -----
Dism /Image:"%WINPE_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\ja-jp\lp.cab"
echo;
echo ----- フォントパック -----
Dism /Image:"%WINPE_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\WinPE-FontSupport-JA-JP.cab"
echo;
echo ----- デフォルトのUI言語 -----
Dism /Image:"%WINPE_DIR%\mount" /Set-Allintl:ja-jp
echo;
echo ----- インプットロケール -----
Dism /Image:"%WINPE_DIR%\mount" /Set-Inputlocale:0411:00000411
echo;
echo ----- キーボードドライバ (106/109 キーボード) -----
Dism /Image:"%WINPE_DIR%\mount" /Set-Layereddriver:6
echo;
echo ----- タイムゾーン -----
Dism /Image:"%WINPE_DIR%\mount" /Set-Timezone:"Tokyo Standard Time"
echo;
echo ----- startnet.cmd の設定 -----
set STARTNET_CMD=%WINPE_DIR%\mount\Windows\System32\startnet.cmd
echo @echo off > %STARTNET_CMD%
echo wpeinit >> %STARTNET_CMD%
echo powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c >> %STARTNET_CMD%
echo setlocal >> %STARTNET_CMD%
echo set C2Z=CDEFGHIJKLMNOPQRSTUVWXYZ >> %STARTNET_CMD%
echo set /a i=0 >> %STARTNET_CMD%
echo :StartFor >> %STARTNET_CMD%
echo if %%i%% leq 23 (goto IfThen) else goto EndFor >> %STARTNET_CMD%
echo :IfThen >> %STARTNET_CMD%
echo call set DRV=%%%%C2Z:~%%i%%,1%%%%>> %STARTNET_CMD%
echo if exist %%DRV%%:\.MyApps\setenv.bat ( >> %STARTNET_CMD%
echo %%DRV%%:\.MyApps\setenv.bat >> %STARTNET_CMD%
echo goto BreakFor >> %STARTNET_CMD%
echo ) >> %STARTNET_CMD%
echo set /a i+=1 >> %STARTNET_CMD%
echo goto StartFor >> %STARTNET_CMD%
echo :BreakFor >> %STARTNET_CMD%
echo :EndFor >> %STARTNET_CMD%
echo endlocal >> %STARTNET_CMD%
echo;
echo ----- イメージの最適化 -----
dism /image:"%WINPE_DIR%\mount" /cleanup-image /startcomponentcleanup
echo;
echo ----- イメージを保存してマウントを解除 -----
dism /unmount-image /mountdir:"%WINPE_DIR%\mount" /commit
echo;
echo ----- Windows PE USB の作成 -----
echo;
MakeWinPEMedia /UFD "%WINPE_DIR%" P:
endlocal
pause