(有)PCA


山形市小白川町4丁目25-22
 TEL:023-615-0185
 FAX:023-615-0186

特定労働者派遣事業受理番号
特06−300152


Shince 2002/01/16

アドバイス情報 - webmasterさんのエントリ

2013/12/17
Windows 8 CPU Feature Patch導入覚書(保管)

執筆者: webmaster (2:15 pm)
 以下こちらで調べたことをだらだらとメモ
※長いので興味ない人はスルーで

パッチを当てるファイルは基本は2個だけ
・SSE2 & NX回避:\Windows\System32\ntoskrnl.exe
・PAE回避:\Windows\System32\winload.exe

Pen4等でHTTを有効にして1コア2スレッドで起動する場合は
ntoskrnl.exeにパッチを当てた状態だとWin8のブートに失敗する模様(手元に環境がないので未確認)
この場合BIOSでHTTを無効にして1コア1スレッドで起動させるか
"Fix hyper-threading in hal.dll"と"Fix hyper-threading in halmacpi.dll"で
\Windows\System32\hal.dllと\Windows\System32\halmacpi.dllにもパッチを当てる

なおntoskrnl.exeにパッチを当てて改変すると
デフォルトの設定ではWin8が警告を出してブートできないので
それを回避するためにwinload.exeに別のパッチを当てる("Remove winload patchgard x86")
ただしwinload.exeが改変されていても起動時に警告が出るので
それを回避するためにbcdeditでブートパラメータを変更する
("bcdedit /set {default} nointegritychecks yes" と "bcdedit /set {default} recoveryenabled no")

また普通にWin8を起動した状態だと\Windows\System32以下のntoskrnl.exeやwinload.exeは書き換えできないので
Win7のインストールディスク等からブートして作業を行う必要がある

あとフォーラムにも書かれている通り
ntoskrnl.exe / winload.exe / hal.dll / halmacpi.dll は
Windows Updateで新しいバージョンに入れ替わることがあるので
その度にWin7のインストールディスク等で起動してWindows 8 CPU Feature Patchでパッチを当て直さないと起動できなくなる
今フォーラムで公開されているWindows 8 CPU Feature Patch v1.4は2013年8月末時点での
Win8/8.1用の ntoskrnl.exe / winload.exe / hal.dll / halmacpi.dll の全てのバージョン対応しているが
今後新しいバージョンが出た場合はWindows 8 CPU Feature Patchもそれに対応した新しいバージョンにする必要がある
事前にWin8のインストールディスクをWin8非対応のPCでも使えるように改変するのは
一見簡単そうに思えるけど実際には結構厄介

Vista以降はインストールディスクの起動ファイルやインストールに必要なファイルは
全てinstall.wim(Windowsイメージファイル)のような1個のファイルの中にまとめて格納されている
.wimファイルは.zipファイル等と同じような種類のファイルで
中のファイルを展開して取り出すことは例えば7-zip等の汎用ソフトでもできるが
.wimファイルを作るのはimagex等の専用ソフトを使う必要がある
また.wimファイルの中のファイルを1個だけ入れ替える、みたいな手段は用意されていないので
中のファイルを1個だけ入れ替えたい場合でも
全体を展開→ファイルを入れ替え→.wimファイルを作成
の手順を行う必要がある
あとintall.wimの中のファイルには特殊なアクセス権が設定されているので
作業する環境によってはintall.wimを展開しても
アクセスが拒否されて中のファイルへのパッチ当てや入れ替えができない、ということもある

それとキャンペーン期間中にWin8のダウンロード版を購入して
自分で作成したインストールディスクの場合は
install.wimが暗号化されたintall.esd(Electronic Software Downloadファイル)になっていて
これはWindowsのインストーラ経由でないと展開できないようになっている(少なくとも現時点では)ので
この形式のインストールディスクしか持ってない場合は
Win8対応の別のPCを経由する方法でないとインストールできない

ついでに手持ちのWin8がアップグレード版の場合も
Win8非対応のPCをWin7のインストールディスクでブートする方法だと
新規インストール扱いになってライセンス認証が通らなくなるので

Windows 8 アップグレード版でクリーンインストール
http://toro.2ch.net/test/read.cgi/win/1353214972/

に書かれているような情報を参考にして
Win8対応の別のPCを経由してインストールとパッチ当てを行う必要がある
Win8非対応のPCをWin7のインストールディスクでブートする方法や
事前にWin8のインストールディスクをWin8非対応のPCでも使えるように改変する方法で
作業に使うimagexはWindows AIKに含まれているが
普通にダウンロードするとサイズが1GB以上あるので
imagexだけを単独でダウンロードしたい場合は下のリンクから
http://raidcalculator.wordpress.com/2012/10/19/download-imagex-exe-without-installing-waik/

imagex.exe x86(バージョン6.1.7600.16385)
Size: 481,680 bytes
CRC32: 54bffad5 MD5: e0ad0c49291d7f63edefcef137e91d4f SHA-1: fc17bac4c13cf3bbb4a39bcd6e43500bfa4d99ed

※このimagexは

Windows(R) 7 用の Windows(R) 自動インストール キット (AIK)
http://www.microsoft.com/ja-jp/download/details.aspx?id=5753

のKB3AIK_JA.iso(約1.65GB)に含まれているものと同じ

※AIKをダウンロードした場合はAIKをインストールしなくても
7-zip等を使ってKB3AIK_JA.isoに含まれているNeutral.cabからF1_imagexを取り出してimagex.exeにリネームすれば
x86版のimagexを単独で取り出せる

※Win8対応の別のPCを経由する場合はimagexは不要
Windows 8 CPU Feature PatchはMDLのフォーラムに登録しないとダウンロードできないが
登録したくない人は"Windows 8 Patches v1.4"で検索すれば登録なしでダウンロードできるサイトもある

Windows 8 Patches v1.4 x86(W8CPUFeaturePatch.exe)
Size: 69,632 bytes
CRC32: 495dccbe MD5: ef42d2b2aaa9012aa3eb1ee89a063ea8 SHA-1: c061df7bb04389dc90798d9f0a3d391f42c5c7f7

W8CPUFeaturePatch.exeを使う場合"Backup original file"にチェックが入っていると
パッチ適用前のオリジナルファイルが"〜.bak"という名前で同じフォルダに保存されるが
以前にパッチを適用して同じフォルダに"〜.bak"がある状態で
"Backup original file"にチェックが入ったままパッチを当てようとすると
"CopyFile failed"のエラーが出てパッチが当てられないので
"〜.bak"を消すか"Backup original file"のチェックを外してパッチを当てる必要がある

パッチ適用済みのファイルに同じパッチを当てようとすると
"Patch failed: Patch loaction not found"のエラーが出る

パッチを適用するntoskrnl.exeやwinload.exeを
\Windows\System32から別の場所にコピーしてからパッチを当てることも可能
パッチ適用前にオリジナルファイルを手動で別の場所にコピーしておけば
"Backup original file"のチェックは特に必要ない

Win7やWin8のインストールディスクからブートしている場合は特に問題ないが
インストールディスクの改変等で既存のWin起動中に作業する場合は
ファイルのアクセス権絡みでパッチが失敗することもあるので注意
各パッチは10バイト程度なのでバイナリエディタ等を使って手動で適用することも不可能ではない

"Remove SSE2 and NX check"でWin8 x86インストール時のntoskrnl.exe(バージョン6.2.9200.16384)に
パッチを当てた時のパッチ適用ポイント(合計11バイト)

000002E0: 65 FF
000002E1: 01 FC
000002E2: 55 54
00000321: C2 00
00000322: 54 00
00000324: F0 00
00000325: 20 00
001E4C3F: 01 00
001E4C40: 20 00
001E4F10: 01 00
001E4F11: 20 00

オリジナルのntoskrnl.exe x86(バージョン6.2.9200.16384)
Size: 5,563,120 bytes
CRC32: 2583beac MD5: 23896b23830548fb9af6dbdb636fa758 SHA-1: 90d0e8bd7204d7765f4605ba6d6b0597e77da034

パッチ適用後のntoskrnl.exe x86
Size: 5,563,120 bytes
CRC32: 7c794e56 MD5: b7b04b3a167afdd3ea72c749a62c5b36 SHA-1: dd6cfd957b05218d9f748b319fb337c4e55b66e9
"Fix hyper-threading in hal.dll"と"Fix hyper-threading in halmacpi.dll"で
Win8 x86インストール時のhal.dll / halmacpi.dll(バージョン6.2.9200.16384)に
パッチを当てた時のパッチ適用ポイント(合計8バイト)

00000140: 1B 37
00000141: DA FB
00000142: 05 04
00000181: BE 00
00000182: 04 00
00000184: F0 00
00000185: 20 00
00033B78: 0E 1E

オリジナルのhal.dll / halmacpi.dll x86(バージョン6.2.9200.16384)
Size: 319,216 bytes
CRC32: da71a9a9 MD5: 4ec411f1ac6c9fb3a96c16d0c500a433 SHA-1: 68049ce1b6202889b6c5c27c307baacb36ab5b44

パッチ適用後のhal.dll / halmacpi.dll x86
Size: 319,216 bytes
CRC32: 343456f7 MD5: a678403104a35cc497b20bb3673b8318 SHA-1: bd66ca62f310b57e980476f2b43190cae03f8c86

※Win8 x86インストール時のhal.dll / halmacpi.dllは同一ファイルなのでパッチ適用ポイントも共通
"Remove winload patchgard x86"でWin8 x86インストール時のwinload.exe(バージョン6.2.9200.16384)に
パッチを当てた時のパッチ適用ポイント(合計11バイト)

00000138: F8 08
00000139: 9F AD
00000179: F6 00
0000017A: 0F 00
0000017C: 08 00
0000017D: 46 00
00033B3A: 8B 33
00033B3B: FF C0
00033B3C: 55 C2
00033B3D: 8B 14
00033B3E: EC 00

オリジナルのwinload.exe x86(バージョン6.2.9200.16384)
Size: 1,063,944 bytes
CRC32: ead572b7 MD5: 9275893085fd1574f80e8e3c2096cfee SHA-1: a1d91e22eae37bd5750e8d300f0b2eb5ddd78efc

パッチ適用後のwinload.exe x86
Size: 1,063,944 bytes
CRC32: 8c03cf7b MD5: f389729d6f1810f010a417cd8f5ad306 SHA-1: 184342f44ba8ede71e265de488ad2d6371256b32
"Remove PAE check"でWin8 x86インストール時のwinload.exe(バージョン6.2.9200.16384)に
パッチを当てた時のパッチ適用ポイント(合計12バイト)

00000138: F8 FA
00000139: 9F 90
00000179: F6 00
0000017A: 0F 00
0000017C: 08 00
0000017D: 46 00
000005FC: 0F 90
000005FD: 84 90
000005FE: 88 90
000005FF: 00 90
00000600: 00 90
00000601: 00 90

オリジナルのwinload.exe x86(バージョン6.2.9200.16384)
Size: 1,063,944 bytes
CRC32: ead572b7 MD5: 9275893085fd1574f80e8e3c2096cfee SHA-1: a1d91e22eae37bd5750e8d300f0b2eb5ddd78efc

パッチ適用後のwinload.exe x86
Size: 1,063,944 bytes
CRC32: 65f857c6 MD5: aaf6d9985c1cb8fae640b4b3df08de5b SHA-1: 1cb46706df47d2f19d0efa489f2c4d4e36026730

※初期PenM等のPAE非対応CPUでのみ必要なパッチでNXのみ非対応のPen4等ではこのパッチは不要
(ただしこのパッチを当ててPAE対応CPUで使っても特に害はない模様)

※実際には"Remove winload patchgard x86"も同時にパッチを当てる必要があるので
このパッチ単独ではあまり使われないと思われる

※上にも書いた通りこのパッチで実際にPAEチェックを回避できるかどうかは不明
"Remove PAE check"と"Remove winload patchgard x86"の両方のパッチを
Win8 x86インストール時のwinload.exe(バージョン6.2.9200.16384)に当てた時のパッチ適用ポイント(合計17バイト)

00000138: F8 22
00000139: 9F DA
00000179: F6 00
0000017A: 0F 00
0000017C: 08 00
0000017D: 46 00
000005FC: 0F 90
000005FD: 84 90
000005FE: 88 90
000005FF: 00 90
00000600: 00 90
00000601: 00 90
00033B3A: 8B 33
00033B3B: FF C0
00033B3C: 55 C2
00033B3D: 8B 14
00033B3E: EC 00

オリジナルのwinload.exe x86(バージョン6.2.9200.16384)
Size: 1,063,944 bytes
CRC32: ead572b7 MD5: 9275893085fd1574f80e8e3c2096cfee SHA-1: a1d91e22eae37bd5750e8d300f0b2eb5ddd78efc

両パッチ適用後のwinload.exe x86
Size: 1,063,944 bytes
CRC32: 49b67d70 MD5: dc2c9eb6900cc46af62d5b0d27885903 SHA-1: 2f3800a23ad1855b2d9f8c15f7d87b8a6d4d0f95

※"Remove PAE check"→"Remove winload patchgard x86"の順にパッチを当てても
"Remove winload patchgard x86"→"Remove PAE check"の順にパッチを当てても結果は同じ
※オフセット0x138と0x139の2バイトはチェックサムなのでそれぞれのパッチを単独で当てた場合とは値が変わる


※Windows 8 CPU Feature Patch導入アドバイス --2014/01/31 追記
http://www.y-pca.jp/modules/weblog/details.php?blog_id=148
webmasterさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (515)
このエントリのトラックバックURL
http://www.y-pca.jp/modules/weblog/weblog-tb.php/141
印刷用ページ 友達に送る
投稿された内容の著作権はコメントの投稿者に帰属します。