Bombardier:一键获取Boot Camp驱动包全攻略

发布时间:2026/10/8 3:35:21
Bombardier:一键获取Boot Camp驱动包全攻略
简介这是一款面向 Mac 用户的 Boot Camp 驱动管理实用工具基于 Swift 5.3 编写用来解决手动查找与安装驱动包的繁琐问题。界面虽为命令行但核心操作只需一步自动下载对应机型的 Boot Camp 驱动程序并从 PKG 中提取 DMG同时支持按 Mac 型号、驱动包名称进行排序、过滤与搜索内置型号列表与 Apple 软件更新目录的自动刷新机制还可通过偏好设置自定义目录。资源共 54 个文件主体为 26 个 Swift 源码文件另含 plist/json 配置与模型数据、png 界面素材整体仅 567KB工程结构紧凑。已有 396 人学习下载。通过这份源码Swift 开发者可以学习命令行工具开发、Xcode 工程组织、plist 数据建模及 Boot Camp 驱动包获取与解包的完整思路。1. Bombardier 到底是什么一次单击背后解决的是 Boot Camp 驱动全家桶的获取难题在 Mac 上装 Windows 其实不难难的是把驱动凑齐。苹果把 Boot Camp 驱动打包成 pkg藏在 macOS 的 Boot Camp 助理里如果我只想装个 Windows 10/11 精简版不想要助理那套引导或者要给公司里的同型号 Mac 批量部署就得找一个能直接下载驱动的方式。Bombardier 正好是这个角色它是一个 Mac 实用程序一次单击就能从 Apple 的服务器拉回对应型号的 Boot Camp 驱动包并且把它解包成可以直接拷进 Windows 的驱动目录。它受众很具体经常做双系统的装机佬、IT 运维、还有那些连 Boot Camp 助理都打不开的老机器用户。下面我会把它的原理、参数、排错和自动化一次讲透。2. 先搞懂它下载和提取的原理Apple 驱动分发结构与 Bombardier 的活儿2.1 Boot Camp 驱动包不是一个 exe是一个多层容器初次接触的人最容易懵官网说下载 Windows 支持软件结果拿到的是.pkg或.dmg双击之后里面不是单一 install.exe而是几十个文件夹。常见结构是这样的WindowsSupport.dmg └── Boot Camp ├── BootCamp.exe ├── Drivers │ ├── Apple │ ├── Broadcom │ ├── Intel │ └── Realtek └── $WinPEDriver$ ├── Apple ├── Atheros └── Intel$WinPEDriver$是给 Windows 预安装环境WinPE用的驱动Drivers是正常系统用的。Bombardier 的核心工作不是重新造驱动而是把苹果发在 CDN 上的这个容器拉回来再拆开给你。这也是我敢在装机流程里用它而不怕驱动不干净的原因下载地址来自 Apple工具只是搬运工。用命令行可以直接验证 pkg 内部是不是这个结构。在 macOS 上最常见的拆包命令就是pkgutil --expand-full WindowsSupport.pkg expanded/逻辑说明--expand-full会把 pkg 里的 Payload 完整解开而不是像--expand那样只生成 Payload 文件。展开后去expanded/找Payload里的 dmg。参数说明如果你只想看结构不关心驱动文件用pkgutil --payload-files WindowsSupport.pkg更快但 Bombardier 大多时候拿到的可能已经是 dmg就需要用hdiutil attach挂载这一层后面再讲。2.2 为什么 Boot Camp 助理不够用Brigadier 和 Bombardier 怎么选新版 macOS 的启动助理已经不允许单独下载驱动包了。对批量维护者来说直接跑 GUI 不现实所以社区里很早就有了命令行工具。Brigadier 是比较老牌的方案需要手动敲命令或者套一层前端Bombardier 则把「下载 提取」做成了图形界面的单按钮。选哪个取决于场景方案交互方式适合场景离线友好度Boot Camp 助理图形向导单台机器第一次装 Windows低必须跑引导Brigadier命令行会写脚本的运维中可以预下载Bombardier单击 GUI / 可传参装机量小、需要快速出结果中保留 dmg 后可复用我一般这样选只给自己一台机器装直接用助理超过两台我就会换成 Bombardier。它的 GUI 也省去跟同事解释命令行的成本双击、选型号、等它跑完剩下的拷贝 U 盘就完事。2.3 Bombardier 的下载与提取流水线从探测型号到生成驱动目录它的工作过程可以拆成四步每一步单独拿出来都是能排查的探测当前设备或你指定的机型的硬件标识比如MacBookPro15,12. 向 Apple CDN 请求该机型的 Boot Camp 版本目录3. 把对应版本的下载地址取回来用分段下载的方式拉WindowsSupport.dmg4. 挂载 dmg把Boot Camp/Drivers和$WinPEDriver$提取到指定目录。整个过程不是黑匣子Bombardier 一般有日志输出。如果你拿不到日志可以手动模拟下载探测curl -sI https://apps.apple.com/support/bootcamp | head -n 10这只是探测连通性不代表 Bombardier 真正使用的 CDN 地址。更可靠的做法是看工具运行时的网络请求打开 Console.app在搜索框输入Bombardier能看到它打给了哪个域名。如果域名是 Apple 官方域名基本可以确定下载源没问题。遇到下载失败先别急着怪工具多半是网络链路抖动或本地网络优化类工具把连接给干扰了。这里还涉及一个概念Apple CDN 返回的下载清单本质上是 XML plist里面按产品 ID 分组每一组包含一个版本号、一个下载路径和校验值。Bombardier 的工作很像把这份清单翻译成人话。如果你拿到 catalog 文件可以用系统自带工具解析plutil -convert json -o - catalog.plist | jq .Products | keys逻辑说明plutil -convert json把 plist 转成 JSON 输出jq .Products | keys只是列出有哪些产品条目真正要提取的是某个产品条目下的Packages数组里的URL字段。参数说明没有jq时可以用python3 -m json.tool替代但可读性差很多。实际使用中Bombardier 会自己完成这一步你不需要手动解析我这只是让你在它报错时知道日志里的 URL 是从哪来的。3. 跑通一次下载和提取最小可复现的安装与命令3.1 准备清单确认型号、系统版本与目标磁盘空间在下载前我们要知道要下载哪种。最常见的错误是拿新 Mac 的驱动去装老 Windows或者反过来。先确认两个信息system_profiler SPHardwareDataType | grep -E Model Identifier|Chipset sw_vers df -h / | tail -n 1逻辑说明第一行返回Model Identifier: MacBookPro15,1这样的标识Bombardier 选机型时靠它sw_vers显示 macOS 版本用来推测对应 Boot Camp 驱动版本df -h看根目录剩余空间因为下载的 dmg 加解压目录至少占用 68 GB。参数说明如果你要帮别人下载不需要他的机器直接把 Model Identifier 复制过去就行不要求 App 在本机跑。一个容易忽略的点Model Identifier 不是 Mac 的销售型号。比如「MacBook Pro 15 英寸 2018」对应的是MacBookPro15,1但同一年还有MacBookPro15,2和MacBookPro15,3它们的驱动包有细微差别。拿不到准确标识时不要猜用system_profiler查最稳。3.2 一次单击下载GUI 操作和底层命令行等价的差别假设你已经拿到了 Bombardier 的 dmg拖进 Applications。第一次打开时会遇到 macOS 的 Gatekeeper正确做法是右键点图标选「打开」再在弹窗里点「打开」。这一步不是玄学是因为从网络下载的 app 带了隔离属性。双击后主界面一般就两个输入框一个是 Model Identifier另一个是 Boot Camp 版本甚至可能还有输出目录。填好就点 Download。工具开始跑时重点是看状态栏下载中、解包中、完成。遇到进度条卡住先别反复点。如果你想把这个过程固定成一条命令Bombardier 的图形界面其实只是套了一层壳常见的做法是用命令行参数直接传值。我这里演示的是用命令行跑通整个流程的习惯参数名可能因版本而异但逻辑是通用的cd $HOME/Desktop ./bombardier --model MacBookPro15,1 --version 6.1.12 --output ./BootCampFiles --keep-dmg --verbose逻辑说明--model指定目标机型--version指定 Boot Camp 版本--output指定解压目录--keep-dmg把下载的 dmg 留在临时目录方便二次提取--verbose会输出每一条下载请求的详情。参数说明如果你的 Bombardier 是菜单式 GUI留意是否有「Keep disk image」「Verbose logging」这类勾选项。跑完后输出目录里如果直接能看到Boot Camp/Drivers就说明成功。如果只有WindowsSupport.dmg说明这一步只完成了下载下一步还需要提取。3.3 提取层挂载 dmg 并复制驱动目录遇到上面只有 dmg 的情况可以用 macOS 自带的工具挂载和拷贝hdiutil attach $HOME/Desktop/WindowsSupport.dmg -nobrowse cp -R /Volumes/WinSupport/Boot Camp/Drivers $HOME/Desktop/BootCampFiles/Drivers hdiutil detach /Volumes/WinSupport -force逻辑说明-nobrowse让挂载卷不出现在 Finder 边栏避免误操作拷贝时目标目录名写错是低级错误建议先用ls /Volumes/WinSupport/Boot Camp看清楚大小写。参数说明如果 dmg 里的文件夹名是Drivers而不是Boot Camp路径要跟着调整不要用 Finder 去拖动容易漏掉隐藏文件。如果你更熟悉 pkg 解包遇到的是WindowsSupport.pkg就回到上一章的pkgutil --expand-full展开后再按同样路径拷贝。到这里你已经完成了 Bombardier 的「下载 提取」两件事。还有一个我建议养成的习惯提取完用tar打个包避免传输过程中产生一堆小文件。macOS 上直接打包会混入.DS_Store可以这样规避COPYFILE_DISABLE1 tar -C $HOME/Desktop/BootCampFiles -czf bootcamp.tar.gz Drivers逻辑说明COPYFILE_DISABLE1让 tar 不保存 Mac 特定的扩展属性文件-C先进入目录再做相对路径打包解压时不会多出一层嵌套。参数说明如果你要把目录拷给 Windows 机器tar.gz在 Win11 下自带解压支持如果对方还在用老 Windows就改用 zip避免打不开。4. 把提取结果组装成可用的 Boot Camp 驱动包4.1 INF 文件不是让你双击的用 DPInst 批量安装很多人拿到提取出的 Drivers 文件夹习惯性双击里面的.exe逐个装。但 Apple 驱动包更推荐的方式是用微软官方的dpinst.exe来做批处理因为驱动之间有依赖顺序。以 Intel 芯片组为例你需要先装芯片组驱动再装其他设备。在 Windows 管理员的命令行里这样跑cd /d C:\BootCamp\Drivers\Intel dpinst.exe /PATH C:\BootCamp\Drivers\Intel逻辑说明dpinst.exe是与提取包同级的微软工具也可能在$WinPEDriver$下/PATH指定递归搜索.inf的子目录。参数说明如果你希望安装在系统装完之后自动进行可以加/Q静默模式和/F强制安装。但/F会覆盖现有驱动可能造成设备管理器里出现过时驱动不建议在正常系统里用。还有个更粗暴的方法设备管理器里右键「更新驱动程序」→「浏览我的电脑」然后指定Drivers根目录。它能自动搜索子目录里所有匹配的 inf。这个方法对单台机器很省事但如果你要部署 50 台 Mac就老老实实用dpinst或者后面说的 DISM。4.2 给 WinPE 或 Windows 镜像离线注入DISM 的参数和边界我做的比较多的是用 Bombardier 提取完驱动直接注入到 Windows 安装 ISO 或者 WinPE 里这样装完系统就是全驱动状态。Windows 10/11 的镜像可以用 DISM 离线添加驱动dism /Image:D:\Win11Mount /Add-Driver /Driver:C:\BootCamp\Drivers /Recurse逻辑说明/Image指向已挂载的 Windows 映像通常用dism /Mount-Image做成install.wim的目录/Driver指定驱动根目录/Recurse确保搜索所有子目录。参数说明如果同时有 x86 和 x64 驱动DISM 会自动跳过不匹配的架构但在 ARM Mac 上装 ARM 版 Windows这里要确认驱动包是否为 ARM64否则会一条条报错。在 WinPE 里也可以用dism /Add-Driver直接打入启动镜像里的 WinPE 驱动目录。注意 WinPE 和正常系统的驱动版本要分开$WinPEDriver$里的那批就是给 WinPE 用的Drivers下的给正常系统别混。4.3 装完最容易遇到的三个驱动现象限速、签名、蓝牙驱动装完不代表完事。很多用户在 Mac 上装完 Windows 后发现无线网卡速率上不去或运行一会儿降速这在 Broadcom 网卡上特别常见。先看是不是电源管理在作怪设备管理器 → 网络适配器 → 属性 → 电源管理把「允许计算机关闭此设备以节约电源」取消勾选。再看驱动版本Bombardier 下载的版本通常是对的但 Windows 更新有时会强装一个旧驱动把版本回退掉。另一个高频错误是「Windows 无法验证此设备所需的驱动程序的数字签名」。这是因为 Boot Camp 驱动里某些第三方组件用的签名是 WHQL 测试签名在 Win11 默认开启 Secure Boot 时不认。常见解法是临时进入「禁用驱动程序强制签名」模式设置 → 系统 → 恢复 → 高级启动重启后选择「启动设置」按 7。但这个不是长期方案装完驱动再重启回正常模式即可。蓝牙和摄像头不工作多半是驱动安装顺序不对。Apple 的扩展驱动依赖于 Intel 芯片组里某个总线驱动如果先装了 Bluetooth 后装芯片组冷启动时设备不枚举。我个人习惯顺序是芯片组 → 显卡 → 网络/蓝牙 → Apple 其他外围。这顺序在批量部署脚本里要写死避免漏。另外老款 Mac 的有线网卡比如 AQC107 或 BCM5701在 Windows 下频繁断连很多是能量效率以太网造成的网卡属性 → 高级 → 关闭 Energy-Efficient Ethernet。Bombardier 提取出来的驱动不会自动帮你去掉这个默认勾选装完记得手动关。5. Bombardier 使用避坑5 条最容易翻车的场景与排查步骤5.1 Gatekeeper 把工具拦在外头双击没反应的常见原因现象下载完 Bombardier 后双击图标在 Dock 跳两下就消失或者提示“无法打开因为无法验证开发者”。原因macOS 的 quarantine 属性还在 app 上尤其是没有签名或使用自签名的工具。解决在访达里右键 app 选「打开」或使用命令xattr -dr com.apple.quarantine /Applications/Bombardier.app然后重新打开。注意如果是 GUI 版不要在终端里直接sudo运行权限混在一起反而容易造成缓存错乱。5.2 卡在“正在下载”且进度条死活不动现象界面显示 downloading 但网络活动为零等半小时进度还是 0。原因Apple CDN 返回了一个 403 或重定向地址过期也可能是用户本地网络对 Apple CDN 做了拦截跟工具本身无关。解决先关掉本地网络优化类工具再试一次如果成功说明是链路问题。如果必须用这类工具就把 Bombardier 对应的域名加进直连名单。另外可以清掉临时目录里的残留.part文件Bombardier 遇到不完整缓存有时会一直续传但永远续不动。5.3 解包出来了只见 dmg 不见 Drivers嵌套磁盘镜像现象Bombardier 提示 succeeded但输出目录里没有Drivers只有一个大 dmg。原因有的机型 bootcamp pkg 里套的是 dmgdmg 里还有一层Boot Camp.pkg你只完成第一层解包。解决不要只解 pkg用hdiutil attach挂载 dmg然后在挂载卷里找Boot Camp/Drivers。如果里面还是一个 pkg继续pkgutil --expand-full直到出现.inf为止。可以用find /Volumes/WinSupport -name *.inf | head验证。5.4 下载版本和 Windows 版本不匹配驱动装不上现象选了个旧版驱动结果 Windows 11 下网卡有黄叹号声卡没声音。原因Boot Camp 6.1.x 虽然能装到 Win11但对 22H2 以后的音频栈支持不一致反过来用太新版本装 Win10 也会出现设备无法启动。解决Bombardier 的版本选择里优先看 release notes。如果装 Win11选 6.1 以上装 Win10选 6.0 或 6.1 初版。拿不准时可以把两个版本都下载下来用dpinst.exe先装旧版再补新版绝大部分能回来。命令行工具一般会提供类似--list-available-versions的参数来预览可选版本GUI 里就是一个下拉框。不要偷懒只保持一个版本。5.5 日志说成功但拔掉 U 盘后在 Windows 里驱动路径不对现象从 U 盘安装驱动时dpinst 报找不到IntelChipset.inf但 U 盘里明明有。原因U 盘在安装过程盘符会变你硬编码了D:\BootCamp\...。解决在 Windows 的 cmd 里用相对路径或者先用wmic logicaldisk get caption,name找到 U 盘真实盘符脚本里用%~dp0定位当前目录。这个错误不怪 Bombardier但每次重装 Windows 时它都会跳出来浪费十分钟。6. 把整个流程缩成一条命令自动化脚本与最小验证如果你和我一样每个月要装几台双系统那就不要每次都打开 GUI 点一遍。把 Bombardier 的参数和提取逻辑包进一个 bash 函数同一台机器的同型号驱动就永远是同一套结果。bootcamp_fetch() { set -e local out${1:-$HOME/Desktop/BootCamp} local model${2:-$(sysctl -n hw.model)} local ver${3:-6.1.12} mkdir -p $out/tmp echo 下载 $model / $ver ./bombardier -m $model -v $ver -o $out/tmp --keep-dmg for dmg in $out/tmp/*.dmg; do [ -e $dmg ] || continue local mnt/Volumes/WinSupport hdiutil attach $dmg -nobrowse cp -R $mnt/Boot Camp/Drivers $out/Drivers 2/dev/null || true hdiutil detach $mnt -force done echo 驱动目录: $out/Drivers } bootcamp_fetch $验证不用等到 Windows 装完。跑完脚本后我习惯先数一下 inf 文件数量find $HOME/Desktop/BootCamp/Drivers -name *.inf | wc -l如果数字小于 20说明解析不完整优先检查是否还有嵌套 dmg。我自己的血泪经验是第一次用 Bombardier 时全程盯着 GUI以为下载完就万事大吉结果拿去 Windows 那边发现缺了$WinPEDriver$后来强制自己读取输出的目录结构才把这条流程固定下来。希望这组参数和检查项能帮你少走一次弯路也希望你下载顺利。本文还有配套的精品资源点击获取