2018/01/16

[WinPE] WindowsPEで画面の解像度が低いのをなんとかしようと四苦八苦した話

Blog.Entry.001

実に約3年3か月ぶりのエントリ投稿です。

WindowsPEでWindowsイメージファイルからリストアするためのツールをHTAで作っていたんですが、最近購入したPCでWindowsPEの画面の解像度がどうにも低くて、HTAの画面も見づらくて、これでは困ると思い解像度を上げるための四苦八苦を記録しました。 少し遠回りをしてしまったので結論だけ知りたい方が一番下の「結論」の見出しまでどうぞ。


WindowsPEでの解像度をあげる

デバイスドライバの追加

解像度が低い理由について、まずは「ビデオアダプタのドライバーが足りない」のだと考えます。
WindowsPEを作る時にデバイスドライバを追加する方法があるのは知っていたので、前にWindowsPEを作った環境(WADK)を引っ張り出してWindowsPEを作る準備をします。
今回の機種はEPSONのNA512EなのでEPSONダイレクトのWebサイトからWindows10向けのvideoドライバをダウンロードしてきます。
MSのサイト [Microsoft] Hardware Dev Center - WinPE: ドライバーの追加 を見ると、サンプルの構文はDism /Add-Driver /Image:"C:\WinPE_amd64\mount" /Driver:"C:\SampleDriver\driver.inf" となっています。
これ以上の説明が探しても見つからず、NA512Eのvideoドライバを解凍してみても「driver.inf」というファイル名は見当たりません。
きっといずれかのinfファイルがその機能を果たすのだろうと推測し、 na512e_video_21_20_16_4627_w10\VGA\win64\Graphics\igdlh64.INF を指定してみました。
Dism /Add-Driver /Image:"C:\WinPE_amd64\mount" /Driver:"C:\winpe_source\WinPE_amd64\Drivers\na512e_video\Graphics\igdlh64.INF" こんな感じです。
エラーにならず成功したのでこれでよかったのだろうと考えていますが、結果的にこれで解像度はあがらなかったのでよかったのかどうか正確にはわかりません。

応答ファイルで解像度を指定してみる

さらに調べてみると、WindowsPEの起動初期化時に解像度を指定できるらしいことがわかりました。

上記のWADKの「Windows システムイメージマネージャー」を使って応答ファイルを作り、解像度を指定してみます。
ツールでは複数の機種に対応させておきたいのでNA512Eの最高解像度1980x1240ではなく、ウチではデスクトップは17インチスクエアディスプレイが主流なので1280x1024を指定してみます。
もちろんNA512Eのグラフィックも対応している解像度です。
結果として解像度は変わらず、wpeinitのログに解像度変更失敗のWarningログcan't change screen resolutionが残っています。

ほら、そろそろ辛くなってきましたよ。

そもそもUEFIモードでは解像度を変更できない?

検索していたらこんなQAがヒットしました。
TechNet - How can I change the resolution of WinPE?
If you are booting in UEFI mode, you cannot change the resolution.
「UEFIモードで起動している場合は解像度変更できねーよ」と・・・なんということでしょう。応答ファイルを作ったのは完全に無駄でした。

そう考えると思い当たる節が。前まではWindows7プリインストールまたはWindows10のWindows7ダウングレードプリインストールのPCだけ扱っていました。
この場合UEFI対応のハードであっても出荷時にUEFI=disableにされてBIOS互換で起動します。
今回のNA512EはWindows10プリインストールで購入しており、出荷時設定はUEFI=enableです。
つまりハードウェアの違いというよりUEFI設定の違いにより解像度が違うのだと考えられました。

ただ、「UEFIモードの場合は自動で適当な解像度になる」ということらしいのですが、それにしては解像度が低すぎます。800x600にも満たないんじゃないかというレベルです。

不具合だったらしい

もっと早く教えてよ

Google先生はすごいですね。うっかり以下のようなページを見つけてしまいました。
Lenovo - Microsoft Windows PE ADK 1607を使用した Windows 10のインストールで、デフォルトの解像度が落ちる – ThinkPad
UFD (USB Flash Drive)で起動し、セキュアブートが有効の場合、Microsoft Windows 10 PE ADK 1607 のインストールすると、解像度が編集されます。解像度は 640x480 に落ちます。
この問題は、Microsoft Windows PE 10 ビルド 1607の不具合です。
確かにWindowsPEを作っている環境はWindows10バージョン1607だしWADKも1607です。
(Lenovo以外のページが見当たらないんだけど)これだったのか・・・

ここでまた罠に引っかかる

じゃー早速新しいバージョンのWADKを使ってみよう。ということで、見てみると最新版はWADK 1709らしい。
[Microsoft] Hardware Dev Center - Windows アセスメント & デプロイメント キット (Windows ADK)
ダウンロードして上書きインストールしてみようと思ったら前のバージョンをアンインストールせよと。アンインストールしてからインストールを仕掛けるとなにやらダウンロードが始まりました。
かなり時間がかかりそうだったので放置してスクリーンロックがかかりましたので解除して進捗を見ようと思ったら「ようこそ」でくるくるしたままロック解除できない。
EscもCtrl+Alt+Delも電源ボタン(短く押す)も反応しません。
思い切って電源長押しで強制終了して起動してみると、今度は「更新プログラムを構成しています。100%完了 コンピューターの電源を切らないでください」のくるくる表示のまま終わりません。
やっと終わったと思ったら再起動するたびに「Windowsの準備をしています コンピューターの電源を切らないでください」くるくる表示で毎回待たされるようになってしまいました。
あかんやつや。

「Windows ADK for Windows 10 Version 1709」の説明には特に書いてないんだけど、「Windows 10 バージョン 1703 用 Windows ADK」の説明には「このバージョンの Windows ADK および Version 1703 用の Windows 10 IoT Core ADK アドオンには、Windows 10 Version 1703 が必要です。」って書いてあります。
ということはWADKのシステム要件もWindows10 1709だったんではないのかな?
でもそういうことはさ、インストールが始まる前に教えてくれるもんじゃないの?

とりあえずこの環境は捨てて、改めてWindows10バージョン1709(10.0.16299.15)の環境を作り、WADK 1709をインストールしてWindowsPE 10.0.16299.15 を作り直しました。
結果、やっと無事適当な解像度に落ち着いてくれました。

結論

  • WindowsPE 10.0.14393.0(1607相当) はUEFIモードで起動すると解像度が異常に低くなることがあるよ
  • WADKは適切なビルドバージョンのOSに入れましょう

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。