3 ポイント 投稿者 GN⁺ 2024-07-29 | 1件のコメント | WhatsAppで共有
  • 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を正常に利用できる

配布とドキュメント

1件のコメント

 
GN⁺ 2024-07-29
Hacker Newsのコメント
  • これまで見た中で最大級のバッチファイルだと思う。高校時代に作った200行ちょっとのものでもやりすぎだと思っていたのに、ここまでバッチで押し切った執念は本当にすごい
    疑似的な関数呼び出しや妙な構文があることは少し知っていたけれど、ざっと眺めるだけでも初見のものがたくさんある。たいてい「X in Y KiB」系はリンカを奇妙にいじっていることが多いが、これは新鮮。そして「Windows To Go」と「Windows To Stay」という機能名がかなり笑える

    • 大きなバッチファイルの話が出たので言うと、WiiをソフトモッドしたことがあるならModMiiを使った可能性が高く、私が見たバッチ製プログラムの中では断然最大だった
      メインスクリプト [1] は1MBを超えるバッチファイル。昔Wii改造にかなりハマっていて、そのスクリプトの作者とバッチ関連の雑談を何度かした記憶がある。あの規模のファイルを保守するのは想像もつかない
      [1] https://github.com/modmii/modmii.github.io/blob/master/Suppo...
    • Windows To Go」は以前のWindows機能の正式名称だ
      PowerShellが標準インストールに含まれている状況で、3085行どころかどんな長さであれバッチスクリプトで書くのは完全に正気ではない
    • 話題からかなり逸れるけれど、この話を見て90年代初頭にBBSで使っていた300行超のバッチファイルを思い出した
      doorの切り替えやFidonetなどを処理するためにerrorlevelチェックを大量に入れていた。本当に追加機能が必要なら、バッチファイルも信じられないほど複雑になり得た
  • 参考までに、ライセンスが明記されていない

  • 私の理解では「Windows Recovery Environment」は、通常のユーザー空間の大半とカーネルの一部を省いた縮小版の最小Windowsで、人々がさまざまな方法で拡張・カスタマイズしてきたものだ

    • 全体の設計はAndroidのClockworkMod Recoveryが使っていたシンプルなテキストベースUIに着想を得ている
      依存関係もまったくない
  • これまで使ってきたシェルベースのツールの中でもかなり印象的な部類。200KBに収まっていること自体が成果であり、巧妙だ

  • ものすごく些細な揚げ足取りだけれど、FOO'S のような複数形を見ると身構えてしまう
    VHDXSが紛らわしいなら、全部大文字をやめてVHDXsと書けばいい
    https://www.hamilton.edu/academics/centers/writing/seven-sin...

  • 見た目はすごいけれど、これが標準のWindows Recovery Environmentパーティションでできない何をしてくれるのか気になる
    標準の回復環境が壊れたときに使うものなのだろうか? 最近のCrowdStrike騒動がそういうケースだったのかも気になる

    • 最近のCrowdStrike騒動ではそうではなかった
      私の業務用ノートPCでは回復環境は普通に動いていて、セーフモードで起動できたし、セーフモードでもクラッシュしなかった
  • これでモニタードライバやファームウェアをインストールできるだろうか? ブート可能なUSBを作って、そこにインストーラを入れてファームウェアを入れる、といったことができるのか気になる
    https://www.lg.com/au/support/product-support/cs-32GS95UE-B....
    WINEでやることも考えたが少し怖い。残念ながら私のモニターの新しいファームウェアはexeでしか入れられず、今手元にあるのはLinuxデスクトップだけだ

    • たいていはこう対処する。まずEXEを数時間から数日かけて解析する。単なる自己解凍実行ファイルで、元のファームウェアバイナリが見つかることもある。R2/Ghidraの基礎を数日かけて思い出した末に、ようやくファームウェアを取り出せることもある
      次に、見つけたらどう書き込むかを突き止める。方法を思いついたと思ったら、必ず深夜で、意識がぼんやりするほど疲れている状態でなければならない。そうすれば文鎮化せずにできると確信できる。そもそも文鎮化しないなら何が楽しいのか? 適当なPomona SOIC互換クリップを持ち出して、チップからランダムなROMをダンプすればいい
      最後に、前の段階に騙されない程度には起きていたなら、それまでの作業を全部捨てて、ブート可能なWindows USBを作ることに時間を使う。何らかの理由でそれがうまくいかなければWindowsノートPCを借りる。だがその頃にはもう疲れ切っているので、QEMUにWindows仮想マシンを作り、デバイス接続に必要なパススルー設定をいじるためにPCを何度も再起動する。ユーティリティを実行し、EXEを起動すると動き始める。興奮のあまり途中でうっかり全部の接続を引き抜いてしまう。どういうわけかモニターはまだ動いているように見えるが、どこか微妙におかしいと確信するようになる。数年後、またSOICクリップを取り出す。いくつもの失敗談を合成した話だ
      現実的には、その通り。このプロジェクトならそういう作業を大きな問題なくこなせる可能性が高い。ただし、インストーラが完全なブロートウェアで、まったく動かないか、ほとんど最後まで動いたふりをした末にどこかで壊れる可能性は覚悟しておいたほうがいい
    • こうした単純なユーティリティは、USBフラッシュドライブやCDから起動したFreeDOS/MS-DOS上でも実行できることがある
      それ以外のケースではWin32が必要で、その場合は最近のHiren’s Boot CDのようなものを使うことになる。記憶が正しければ最新版はWindows 10ベースで、初期リリースはXPベースだった
    • 方法はいくつかあるだろうが、これはWindowsコマンドシェルスクリプトなのでWindowsでしか動かない
    • サードパーティ製ソフトウェアでもよければ、ファームウェア更新用のブートUSBを作成できる
      https://www.hirensbootcd.org/
  • すごい。3000行のシェルスクリプトだなんて、こういうものを保守できる人たちは尊敬する
    私には手の出しにくい熱いスパゲッティの塊に見える

    • 本当にそんなに手が出しにくいだろうか? 私も3000行のファイルが好きなわけではないが、扱わなければならないときは複数ファイルを扱うのと同じように対処する
      作業したいそれぞれの「領域」ごとにタブや分割ウィンドウを1つずつ開いておく。3つの領域を触るなら、その領域ごとに集中した分割ウィンドウを3つ開いて行き来する。実質的には3つのファイルを扱うのとほとんど同じだ