Apple またはソフトウェアアップデートサーバーから、特定のモデルの Mac 用の Boot Camp ESD (“Electronic Software Distribution”) を取得する Windows および OS X 互換の Python スクリプトです。 フラット パッケージ内の複数のレイヤーのアーカイブを解凍し、スクリプトが --install オプション付きで Windows 上で実行された場合、64 ビット MSI インストーラーも実行されます。 このツールは、Apple の WindowsSupport.dmg ファイルからファイルの抽出を実行するために dmg2img を使用していましたが、より最近のバージョンの 7-Zip は DMG をより完全にサポートしているので、dmg2img はもはや必要ないようです。

  1. 私たちはできるだけ少ない Windows システム画像を維持したいと思いますが、特定のモデルのセットを対象とする BootCampESD パッケージは Apple から常に 3-5 個利用できます。 Orca ツールを使用して MSI のプロパティを編集し、モデル チェックを無効にすることは可能ですが、1 つのインストーラーにすべてのドライバーが含まれているケースはほとんどありません。 Apple 社では、Boot Camp アシスタントを使用して、OS X でブートしたマシン モデル用の正しいインストーラーをすでにダウンロードしているので、Windows で同じことができない理由はないでしょう。 これを手動で行うための手順は面倒であり、また、その数は多くあります。 2013 年の春の時点で、Apple はサポート ダウンロード ページで多数の Boot Camp インストーラー パッケージを利用できるようにしましたが、それらはまだ多くの異なるモデルのセットに分かれており、正しいパッケージを持っていることを確認するのはまだ不便です。

これはもともと、Mac への Boot Camp デプロイのポストイメージングのステップとして実行するよう設計されていますが、ネットワーク接続が必要なので、システム上でネットワーク ドライバーがすでに利用可能でなければなりません。 (下記の「警告」を参照)

Brigadier のサポートに関する重要な (!) メモ

Brigadier は、最近のバージョンの Boot Camp 5、そして現在の Boot Camp 6 において、ドライバー パッケージとハードウェア モデルの組み合わせによってはあまり良くない結果をもたらしています。 Boot Camp 6 や Windows 7 全般で問題を確認している人もいるので、これらは完全に Brigadier のせいではないかもしれません。 Boot Camp setup.exe を調べてみると、この実行ファイルがいくつかのタスクを実行し、最終的に BootCamp.msi を実行するために何らかの環境をセットアップしていることがわかりますが、Brigadier の msiexec を呼び出して MSI を直接インストールする方法では、必ずしもそれを実現できません。 たとえば、この PR では、msiexec に対して異なる “quiet” オプションを使用することにより、より良い結果が得られることを示唆していますが、setup.exe を分解すると、現在の master ブランチのコードと同様に、実際には /qr が実行されていることがわかります。 この種の質問は、回答を試みるのに十分な知識があるとは思えません。

数年前にも、私が経験した奇妙な問題がありました。 たとえば、1 つのドライバー インストーラー (Intel チップセット関連) で、ドライバーのすべてのローカライズ ファイル (実行可能ではない) を順次実行しようとするため、一連の WinRAR SFX エラーがポップアップ表示されることがありました。 これらのダイアログをクリックするだけで、最終的にはインストールが続行されますが、それまではプロセスがブロックされています。 このエラーは、ユーザーが手動で setup.exe を実行したときには発生しませんが、なぜなのかはわかりません。

これらの問題を解決できるという希望をいくつか持っていますが、私の環境でのデュアルブート ラボの使用事例は縮小しているので、これらの問題をさらに調査するために必要な時間を正当化することは困難です。 もし、setup.exe のようなインストーラー ラッパーと MSI インストーラーの逆引き、および一般的な Windows システム管理に詳しい方が、このツールで現在やや壊れている Boot Camp ドライバーのサイレント インストールのサポートに取り組むことに興味があれば、ぜひ助けてください!

Usage

brigadier をオプションなしで実行し、このモデルに適用する ESD を現在の作業ディレクトリにダウンロードおよび解凍します。 OS X では、ESD はディスクに簡単に書き込めるように .dmg 形式で保存され、Windows では、ドライバー ファイルが展開されます。

--model オプションで実行し、MacPro3,1 などの形式で代替モデルを指定。

--install オプションで実行し、ダウンロードとインストールの両方で、インストール後にドライバーは削除されます。 これは明らかに Windows 上でのみ機能します。 このオプションは、Boot Camp ドライバーの自動インストールを行うために作られました。

スクリプトと同じフォルダに brigadier.plist ファイルを置き、.scatalog URL を上書きして内部 Software Update Server カタログを指すようにします (詳細は後述)。

以下に示す追加のオプション。 これは、Windows に Python がインストールされていない場合に便利です。 これは PyInstaller を使ってビルドされました。

また、OS X または Windows の Git チェックアウトから直接実行することもできます。

設定

いくつかのコマンドラインオプションに加えて、

Usage: brigadier Options: -h, --help show this help message and exit -m MODEL, --model=MODEL System model identifier to use (otherwise this machine's model is used). -i, --install After the installer is downloaded, perform the install automatically. Can be used on Windows only. -o OUTPUT_DIR, --output-dir=OUTPUT_DIR Base path where the installer files will be extracted into a folder named after the product, ie. 'BootCamp-041-1234'. Uses the current directory if this option is omitted. -k, --keep-files Keep the files that were downloaded/extracted. Useful only with the '--install' option on Windows.

また、brigadier.plist XML plist ファイルを作って、スクリプトと同じディレクトリに置いておくこともできます。 現在、1つのキーをサポートしています。 CatalogURLは、BootCampESD パッケージを含む内部 SUS カタログ URL を指す文字列です。 このリポジトリの例を参照してください。

Sysprep FirstLogonCommand としての実行

Boot Camp ドライバーをイメージング後の Sysprep フェーズで実行することは一般的で、モデルや必要な Boot Camp パッケージを考慮せずに異なるモデルへ同じイメージを展開することが可能です。 Brigadier は SysPrep FirstLogonCommand.

このシナリオで実行する場合、現在の作業は通常 \windows\system32 となるところ、スクリプトによって実行される 1 つの回避策があります。 64 ビット システムでのテストでは、Windows が 32 ビット アプリケーション用に System32 フォルダーを SysWoW64 にフォークするため、MSI がインストーラー コンポーネントの場所を特定しようとして停止していました。 スクリプトが --output-dir オプションで上書きすることなくこの作業ディレクトリを検出すると、出力ディレクトリをシステムのルート、つまり %SystemRoot%\ に設定します。

デフォルトでは、--install が使用されると、--keep-files オプションが与えられていない限り、インストール後に抽出したファイルをクリーンアップするので、ファイルを保持したい場合を除いてクリーンアップは必要ないはずです。

Windows でのソースからの実行/ビルド

標準の Python スクリプトとして実行したい場合は、スクリプトを実行するために Windows 用 Python (これは最新の 2.7 リリースでテストされています) が必要です。 これは Python と一致するバージョンの pywin32 を必要とします。 これは PyInstaller のダウンロードをあなたのために処理します。 引数なしで実行するだけで、現在の作業ディレクトリに zip ファイルが構築されます:

c:\python27\python build_windows_exe.py

Unpack details on Windows

OS X では、ドライバーファイルを展開するためにネイティブの hdiutil と pkgutil コマンドが用意されています。 Windows では、

  1. 7-Zip がすでにインストールされているかどうかを確認し、インストールされていない場合は、ダウンロードおよびインストールします
  2. BootCampESD を展開します。pkg xar archive with 7-Zip
  3. Payloadアーカイブを7-Zipで取り出します。 gzip の解凍に一度、cpio アーカイブの解凍にもう一度
  4. 7-Zip を使用して、pkg 内の WindowsSupport.dmg ファイルからドライバーファイルを展開します
  5. 7-Zip をインストールした場合はアンインストールします

警告

  • ネットワーク接続を必要とするので、ネットワークドライバーが使用可能でなければならないのですが、そのようなことはありません。 私が見つけた最も簡単な方法は、BootCampESD のさまざまなネットワーク ドライバを sysprepped イメージの C:\Windows\INF 内の “BootCamp” (または同様の) フォルダに配置することです。 このフォルダはデバイスドライバのデフォルトの検索場所であり、すべての未知のハードウェアのためにここにあるドライバを自動的に検出してインストールするはずです。 レジストリキー DevicePath を変更して独自の場所を追加することもできますが、既存の INF フォルダーを使用すると、既存のイメージのドライバーを更新するのにファイルのコピー以外の変更は必要ないため、実際にイメージを復元してドライバーをインストールするために起動することなく、この操作を行うことができます。 Windows と DISM を使用したオフライン ドライバー サービスは WIM イメージでは簡単ですが、ほとんどの管理者は WIM イメージを Mac に展開するのではなく、ntfsprogs をラップするツールを使用していると思われます。
  • これは現在ほとんどエラー処理を行いません。 まもなく、brigadier.plist は、プライベートな Web サーバーに保存された独自のコピーでこれらの URL を上書きすることをサポートします。 2012 年 12 月の Boot Camp ドライバーの ESD は 64 ビットのみであるようなので、32 ビット Windows をサポートするには余分な作業が必要であることは言及する価値があります。 32 ビット Windows のサポートが重要である場合、それを追跡するための課題が作成されます。

コメントを残す

メールアドレスが公開されることはありません。