200KBでWindows回復環境と起動可能USBを作成するツール
(github.com/joshuacline)- Windows Deployment Image Customization Kit は、ネイティブのコマンドシェルベースのWindowsイメージ展開ツールで、HNのタイトルでは200KBサイズのWindows回復環境および起動可能USB作成ツールとして紹介されている
- SecureBootに関しては、
boot.wim内のEFI_EXフォルダーにある bootmgfw_EX.efi を通常のbootmgfw.efiの代わりに使うと、互換性の問題が少ないことを認識している - 現在はMicrosoftがどの方向に標準化するかを待っている状態で、方向が明確でなければ EFI_EXブートローダー を取り込むか、2つの方式から選べるように変更する予定である
- 当面は、ユーザーが
EFI_EXの場所からブートローダーを直接取得して cacheフォルダー に入れた後、recovery 内でブートファイルの更新を開始できる - SecureBootを無効化すれば、Microsoftがどのブートローダーを標準化するか決めるまで、Windowsを正常に使い続けられる
Windowsイメージ展開ツール
- Windows Deployment Image Customization Kit はネイティブのコマンドシェルベースのWindowsイメージ展開ツールである
- HNのタイトルでは、このプロジェクトは 200KB サイズのWindows回復環境および起動可能USB作成ツールとして紹介されている
- READMEにはGUI画面とMenuScript画面の画像が含まれている
SecureBootとブートローダーの扱い
boot.wim内部のEFI_EXフォルダーにある bootmgfw_EX.efi を通常のbootmgfw.efiの代わりに使用すると、SecureBootの互換性問題が少ない- 現在すぐに変更を適用しない理由は、Microsoftの方向性がまだ明確ではないためである
- Microsoftの方向性が明確にならなければ、次の変更のいずれかが適用される可能性がある
- 代替の
EFI_EXフォルダーから ブートローダーを取得する - 2つのブートローダー方式のうち 選択可能 にする
- 代替の
- 今変更して後で元に戻すことになる状況を避けようとしている
現在可能な手動対応
- ユーザーは
EFI_EXの場所からブートローダーを直接取得できる - 取得したブートローダーを cacheフォルダー に入れた後、recovery 内でブートファイルの更新を開始できる
- SecureBootを無効化すれば、Microsoftが標準ブートローダーの方向を決めるまでWindowsを正常に利用できる
配布とドキュメント
- ミラー:
- MajorGeeks: Windows Deployment Image Customization Kitのミラー
- Softpedia: Windows Deployment Image Customization Kitのミラー
- ドキュメント:
- GitHub documentation: プロジェクトのドキュメント
- Microsoft TechNet Wiki archive: コマンドシェルで起動可能なWindows PE回復・展開環境を実装するドキュメント
- YouTube チャンネル: 関連動画チャンネル
1件のコメント
Hacker Newsのコメント
これまで見た中で最大級のバッチファイルだと思う。高校時代に作った200行ちょっとのものでもやりすぎだと思っていたのに、ここまでバッチで押し切った執念は本当にすごい
疑似的な関数呼び出しや妙な構文があることは少し知っていたけれど、ざっと眺めるだけでも初見のものがたくさんある。たいてい「X in Y KiB」系はリンカを奇妙にいじっていることが多いが、これは新鮮。そして「Windows To Go」と「Windows To Stay」という機能名がかなり笑える
メインスクリプト [1] は1MBを超えるバッチファイル。昔Wii改造にかなりハマっていて、そのスクリプトの作者とバッチ関連の雑談を何度かした記憶がある。あの規模のファイルを保守するのは想像もつかない
[1] https://github.com/modmii/modmii.github.io/blob/master/Suppo...
PowerShellが標準インストールに含まれている状況で、3085行どころかどんな長さであれバッチスクリプトで書くのは完全に正気ではない
doorの切り替えやFidonetなどを処理するためにerrorlevelチェックを大量に入れていた。本当に追加機能が必要なら、バッチファイルも信じられないほど複雑になり得た
参考までに、ライセンスが明記されていない
私の理解では「Windows Recovery Environment」は、通常のユーザー空間の大半とカーネルの一部を省いた縮小版の最小Windowsで、人々がさまざまな方法で拡張・カスタマイズしてきたものだ
依存関係もまったくない
これまで使ってきたシェルベースのツールの中でもかなり印象的な部類。200KBに収まっていること自体が成果であり、巧妙だ
ものすごく些細な揚げ足取りだけれど、FOO'S のような複数形を見ると身構えてしまう
VHDXSが紛らわしいなら、全部大文字をやめてVHDXsと書けばいい
https://www.hamilton.edu/academics/centers/writing/seven-sin...
見た目はすごいけれど、これが標準のWindows Recovery Environmentパーティションでできない何をしてくれるのか気になる
標準の回復環境が壊れたときに使うものなのだろうか? 最近のCrowdStrike騒動がそういうケースだったのかも気になる
私の業務用ノートPCでは回復環境は普通に動いていて、セーフモードで起動できたし、セーフモードでもクラッシュしなかった
これでモニタードライバやファームウェアをインストールできるだろうか? ブート可能なUSBを作って、そこにインストーラを入れてファームウェアを入れる、といったことができるのか気になる
https://www.lg.com/au/support/product-support/cs-32GS95UE-B....
WINEでやることも考えたが少し怖い。残念ながら私のモニターの新しいファームウェアはexeでしか入れられず、今手元にあるのはLinuxデスクトップだけだ
次に、見つけたらどう書き込むかを突き止める。方法を思いついたと思ったら、必ず深夜で、意識がぼんやりするほど疲れている状態でなければならない。そうすれば文鎮化せずにできると確信できる。そもそも文鎮化しないなら何が楽しいのか? 適当なPomona SOIC互換クリップを持ち出して、チップからランダムなROMをダンプすればいい
最後に、前の段階に騙されない程度には起きていたなら、それまでの作業を全部捨てて、ブート可能なWindows USBを作ることに時間を使う。何らかの理由でそれがうまくいかなければWindowsノートPCを借りる。だがその頃にはもう疲れ切っているので、QEMUにWindows仮想マシンを作り、デバイス接続に必要なパススルー設定をいじるためにPCを何度も再起動する。ユーティリティを実行し、EXEを起動すると動き始める。興奮のあまり途中でうっかり全部の接続を引き抜いてしまう。どういうわけかモニターはまだ動いているように見えるが、どこか微妙におかしいと確信するようになる。数年後、またSOICクリップを取り出す。いくつもの失敗談を合成した話だ
現実的には、その通り。このプロジェクトならそういう作業を大きな問題なくこなせる可能性が高い。ただし、インストーラが完全なブロートウェアで、まったく動かないか、ほとんど最後まで動いたふりをした末にどこかで壊れる可能性は覚悟しておいたほうがいい
それ以外のケースではWin32が必要で、その場合は最近のHiren’s Boot CDのようなものを使うことになる。記憶が正しければ最新版はWindows 10ベースで、初期リリースはXPベースだった
https://www.hirensbootcd.org/
すごい。3000行のシェルスクリプトだなんて、こういうものを保守できる人たちは尊敬する
私には手の出しにくい熱いスパゲッティの塊に見える
作業したいそれぞれの「領域」ごとにタブや分割ウィンドウを1つずつ開いておく。3つの領域を触るなら、その領域ごとに集中した分割ウィンドウを3つ開いて行き来する。実質的には3つのファイルを扱うのとほとんど同じだ