Skript v jazyce Python kompatibilní s Windows a OS X, který ze serveru Apple nebo z vašeho aktualizačního serveru stáhne ESD („Electronic Software Distribution“) Boot Campu pro konkrétní model Macu. Rozbalí několik vrstev archivů v plochém balíčku, a pokud je skript spuštěn v systému Windows s volbou --install, spustí také 64bitový instalační program MSI.

V systému Windows jsou archivy rozbaleny pomocí programu 7-Zip a je stažen a nainstalován program 7-Zip MSI, který je později odstraněn, pokud jej nainstaloval program Brigadier. Tento nástroj dříve používal dmg2img k provedení extrakce souborů ze souboru Apple WindowsSupport.dmg, ale novější verze 7-Zipu obsahují kompletnější podporu DMG, takže dmg2img již zřejmě není potřeba.

Tento nástroj byl napsán ze dvou důvodů:

  1. Rádi bychom udržovali co nejméně obrazů systému Windows, ale v daném okamžiku je obvykle k dispozici 3-5 balíčků BootCampESD od společnosti Apple zaměřených na konkrétní sady modelů. Pomocí nástroje Orca je možné upravit vlastnosti MSI a zakázat kontrolu modelu, ale jen zřídka se vyskytují případy, kdy jeden instalační program obsahuje všechny ovladače. Společnost Apple již dokáže stáhnout správný instalátor pro zaváděný model počítače v systému OS X pomocí nástroje Boot Camp Assistant, takže není důvod, proč bychom totéž nemohli udělat v rámci systému Windows.
  2. Někdy chceme pouze stáhnout a rozbalit kopii instalátoru pro daný model. Kroky, jak to provést ručně, jsou zdlouhavé a je jich mnoho. Od jara 2013 Apple na své stránce podpory pro stahování zpřístupnil řadu instalačních balíčků Boot Campu, ale stále jsou rozděleny do mnoha různých sad různých modelů a stále je nepohodlné zajistit, abyste měli správný balíček.

Původně byl navržen tak, aby se spouštěl jako krok po nasazení Boot Campu do počítačů Mac, ale protože vyžaduje síťové připojení, musí být v systému již k dispozici síťový ovladač. (Viz Upozornění níže)

Důležitá (!) poznámka k podpoře nástroje Brigadier

V posledních verzích Boot Campu 5 a nyní i v Boot Campu 6 poskytoval Brigadier s některými kombinacemi balíčků ovladačů a modelů hardwaru nepříliš dobré výsledky. Někteří lidé potvrdili problémy s Boot Campem 6 a Windows 7 obecně, takže nemusí jít výhradně o chybu Brigadieru. Nějaké zkoumání setup.exe Boot Campu mi naznačuje, že tento spustitelný soubor provádí několik úkolů a nastavuje nějaké prostředí pro případné spuštění BootCamp.msi, kterého nejsme vždy schopni dosáhnout prostým vyvoláním msiexec Brigadýrem pro přímou instalaci MSI.

Nejsem zdaleka natolik znalý vnitřností Windows, abych pochopil, jak by bylo možné provést plně automatizovanou verzi toho, co setup.exe skutečně dělá (kromě případného spuštění msiexec /i /qr na MSI). Například tento PR naznačuje, že lepších výsledků lze dosáhnout použitím různých „tichých“ voleb k msiexec, ale rozebrání setup.exe ukazuje, že se ve skutečnosti spouští /qr, stejně jako kód v aktuální hlavní větvi. U tohoto druhu otázek nemám pocit, že mám dostatečné znalosti, abych se pokusil o odpověď.

Před několika lety jsem také zažil podivné problémy. Například jeden instalační program ovladače (související s čipovou sadou Intel), který vyhodil řadu chyb WinRAR SFX kvůli tomu, že se pokoušel postupně spustit všechny lokalizační soubory ovladače (které ani nejsou spustitelné). Pouhé proklikání těchto dialogů nakonec způsobí pokračování instalace, ale dokud se tak nestane, je proces zablokován. K této chybě nedochází, když uživatel ručně spustí setup.exe, ale proč, to nechápu.

Přestože si zachovávám určitou naději, že se mi podaří tyto problémy vyřešit, v mém prostředí se počet případů použití pro dual-boot laboratoře zmenšuje, a tak je obtížné ospravedlnit čas potřebný k dalšímu zkoumání těchto problémů. Pokud má někdo, kdo se vyzná v obracení setup.exepodobných instalačních obalů a instalátorů MSI a obecně ve správě systémů Windows, zájem řešit v současnosti poněkud nefunkční podporu tiché instalace ovladačů Boot Camp v tomto nástroji, budu rád za pomoc! V části BootCamp.msi je několik vlastností instalátoru, které mohou pomoci i s tímto problémem:

Použití

Spustit brigadier bez voleb pro stažení a rozbalení ESD, který se vztahuje k tomuto modelu, do aktuálního pracovního adresáře. V systému OS X je ESD uložen ve formátu .dmg pro snadné vypálení na disk; v systému Windows jsou soubory ovladačů rozbaleny.

Spustit s volbou --model pro zadání alternativního modelu ve tvaru MacPro3,1 atd.

Spustit s volbou --install pro stažení i instalaci, přičemž po instalaci se ovladače odstraní. To samozřejmě funguje pouze v systému Windows. Tato možnost byla vytvořena pro provádění automatizovaných instalací ovladačů Boot Camp.

Ve stejné složce jako skript umístěte soubor brigadier.plist, který přepíše adresu URL .sucatalog tak, aby ukazovala na interní katalog serveru Software Update Server (podrobnosti níže).

Další možnosti jsou uvedeny níže.

Získání

Předkompilovanou binární verzi pro systém Windows najdete v oblasti verzí. To může být užitečné, pokud ještě nemáte Python nainstalovaný v systému Windows. Byla sestavena pomocí nástroje PyInstaller. Další podrobnosti o vlastním sestavení najdete níže.

Můžete jej také spustit přímo z výpisu Git v systému OS X nebo Windows.

Konfigurace

Kromě několika možností příkazového řádku:

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.

Můžete také vytvořit brigadier.plist soubor XML plist a umístit jej do stejného adresáře jako skript. V současné době podporuje jeden klíč: CatalogURL, řetězec, který ukazuje na adresu URL interního katalogu SUS obsahující balíčky BootCampESD. Viz příklad v tomto repozitáři.

Spuštění jako příkaz Sysprep FirstLogonCommand

Běžně se ovladače Boot Camp provádějí během fáze Sysprep po zobrazení, takže je možné nasadit stejnou bitovou kopii na různé modely bez ohledu na model a požadovaný balíček Boot Camp. Zdá se, že se Brigadier chová v kontextu příkazu SysPrep FirstLogonCommand.

Při spuštění v tomto scénáři, kdy by se normálně pracovalo s aktuálním pracovním \windows\system32, existuje jeden workaround, který skript provádí. Při mých testech na 64bitovém systému by se MSI zastavil při pokusu o nalezení svých instalačních komponent kvůli způsobu, jakým systém Windows rozvětvuje svou složku System32 do SysWoW64 pro 32bitové aplikace. Když skript zjistí tento pracovní adresář, aniž by jej přepsal volbou --output-dir, nastaví výstupní adresář na kořenový adresář systému, tj. %SystemRoot%\.

Ve výchozím nastavení při použití --install po instalaci uklidí své extrahované soubory, pokud není zadána volba --keep-files, takže pokud nechcete soubory ponechat v okolí, neměli byste po něm uklízet.

Spuštění / sestavení ze zdrojových kódů v systému Windows

Pokud jej chcete spustit jako standardní skript Pythonu, budete ke spuštění skriptu potřebovat Python pro Windows (to bylo testováno s nejnovější verzí 2.7).

Pokud jej chcete raději sestavit sami, můžete použít přiložený sestavovací skript. Ten vyžaduje Python a odpovídající verzi pywin32. O stažení programu PyInstaller se postará za vás. Stačí jej spustit bez argumentů a on sestaví soubor zip v aktuálním pracovním adresáři:

c:\python27\python build_windows_exe.py

Podrobnosti o rozbalování v systému Windows

V systému OS X máme k dispozici nativní příkazy hdiutil a pkgutil, které se postarají o rozbalení souborů ovladačů. V systému Windows:

  1. Zkontrolujeme, zda je již nainstalován program 7-Zip – pokud ne, stáhneme a nainstalujeme jej
  2. Extrahujeme BootCampESD.pkg xar archiv pomocí 7-Zip
  3. Extrahujeme archiv Payload pomocí 7-Zip, jednou k dekomprimaci gzip a znovu k rozbalení archivu cpio
  4. Pomocí 7-Zip extrahujte soubory ovladače ze souboru WindowsSupport.dmg v rámci pkg
  5. Odinstalujte 7-Zip, pokud jsme jej nainstalovali

Upozornění

  • Vyžaduje síťové připojení, což tedy vyžaduje, aby byl k dispozici funkční síťový ovladač. Nejjednodušší způsob, který jsem našel, je umístit různé síťové ovladače z BootCampESD do složky „BootCamp“ (nebo podobné) v rámci C:\Windows\INF na sysprepovaném obrazu. Tato složka je výchozím místem pro vyhledávání ovladačů zařízení a měla by automaticky detekovat a nainstalovat zde umístěné ovladače pro veškerý neznámý hardware. Můžete také upravit klíč registru DevicePath a přidat vlastní umístění, ale použití stávající složky INF znamená, že k aktualizaci ovladačů existujícího obrazu nejsou kromě kopírování souborů nutné žádné další změny, takže to lze provést bez skutečného obnovení obrazu a jeho spuštění jen kvůli instalaci ovladače. Offline obsluha ovladačů pomocí systému Windows a DISM je pro obrazy WIM snadná, ale většina správců pravděpodobně nenasazuje obrazy WIM na počítače Mac, ale spíše používá nástroje, které obalují ntfsprogs.
  • V současné době neprovádí téměř žádné zpracování chyb.
  • 7-Zip stahuje z veřejné adresy URL, která je natvrdo zakódována ve skriptu. Brzy bude brigadier.plist podporovat přepsání těchto URL vlastními kopiemi uloženými na soukromém webovém serveru.
  • Po instalaci nastaví klíč registru FirstTimeRun na HKEY_CURRENT_USER\Software\Apple Inc.\Apple Keyboard Support, aby zakázal vyskakovací okno nápovědy Boot Campu při prvním spuštění, a v současné době neexistuje možnost toto chování zakázat.
  • Podporuje pouze instalace v 64bitových Windows. Stojí za zmínku, že ESD ovladače Boot Campu z prosince 2012 jsou zřejmě pouze 64bitové, takže pro podporu 32bitových Windows by bylo třeba provést další práci. Pokud je pro vás podpora 32bitových Windows důležitá, je vytvořen problém, který ji sleduje.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.