如何制作可启动的 OSX El Capitan USB?

如何制作可启动的 OSX El Capitan USB?

我不确定是否要在这里或苹果社区发布此帖子。但是,由于我使用的是运行 Ubuntu 的 PC,所以我在这里发布了此帖子。

我的 MacBook Pro(2015 年中)坏了。我需要重新安装 OS X。请注意,我无法访问恢复分区;它也已被清除。

我有InstallESD.dmg在线找到的文件;我检查了哈希值。

我想知道如何使用该文件制作可启动的 USB 设备。请注意,我有一个带有 MBR 分区的 USB 密钥。我不确定,但它应该使用 GUID 才能被我的 MacBook Pro 识别?

我尝试过的:

  1. 将文件转换.dmg.iso文件,使用dmg2img

    $ dmg2img -v -i Downloads/InstallESD.dmg -o Downloads/ElCapitan.iso
    
  2. 将文件复制ElCapitan.iso到我的 USB 密钥上:

    $ dd if=Downloads/ElCapitan.iso of=/dev/sdb bs=16M && sync
    
  3. 插入 USB 密钥并启动。

结果:什么也没有发生,USB 密钥没有出现。

答案1

有一个准备好的脚本可以自动完成整个过程。手动操作如麦金塔世界,但使用 Linux 工具:


InstallESD.dmg是带有 HFS+ 分区的 GPT 磁盘的映像,其中包含安装程序文件,但其本身不可启动。

作为 工作root,转换InstallESD.dmg为原始图像格式并使用以下方式安装kpartx

dmg2img InstallESD.dmg InstallESD.img
kpartx -a InstallESD.img
mount /dev/mapper/loop0p2 /mnt/installesd

InstallESD.dmg包含另一个磁盘映像BaseSystem.dmg,即可启动安装程序磁盘。但将其直接写入 USB 驱动器不起作用,因为这会创建一个几乎没有可用空间且仍然缺少一些重要文件的分区。

提取基础系统映像BaseSystem.dmg,转换为原始映像并挂载:

dmg2img /mnt/installesd/BaseSystem.dmg BaseSystem.img
kpartx -a BaseSystem.img
mount /dev/mapper/loop1p1 /mnt/basesystem

将 USB 闪存驱动器格式化为 HFS+:

sgdisk -o /dev/sdb
sgdisk -n 1:0:0 -t 1:AF00 -c 1:"disk image" -A 1:set:2 /dev/sdb
mkfs.hfsplus -v "OS X Base System" /dev/sdb1
mount /dev/sdb1 /mnt/usbstick

复制丢失的安装程序文件(注意结尾/):

rsync -aAEHW --info=progress2 /mnt/basesystem/ /mnt/usbstick/
rm -f /mnt/usbstick/System/Installation/Packages
rsync -aAEHW -P /mnt/installesd/Packages /mnt/usbstick/System/Installation/
rsync -aAEHW -P /mnt/installesd/BaseSystem.dmg /mnt/usbstick/
rsync -aAEHW -P /mnt/installesd/BaseSystem.chunklist /mnt/usbstick/
sync

可以使用其他工具(tar、cpio)进行复制,只需提供保留大部分文件元数据的参数。rsync还支持-X参数,应该复制 HFS+ 扩展属性,但实际上它会失败并出现错误“操作不受支持”。

答案2

如果您无法从 OS X Recovery(Option-R)启动,请尝试按住(Option-Command-R)从 OS X Internet Recovery 启动。

您的 Mac(2015 年中)应该通过互联网启动恢复。

阅读更多https://support.apple.com/en-us/HT201314

答案3

这有效!我用它来制作 El Capitan 安装程序的 USB,使用 InsallMacOSX.dmg 中的 InstallESD.dmg。无需尝试使用脚本,因为它与自述文件上的命令列表一起使用。所以这个:

mkdir -p /mnt/OSX_InstallESD /mnt/OSX_BaseSystem /mnt/usbstick

# 将安装程序磁盘映像转换为原始格式
dmg2img “安装 OS X .app/Contents/SharedSupport/InstallESD.dmg” InstallESD.img
kpartx -a 安装ESD.img
挂载 /dev/mapper/loop0p2 /mnt/OSX_InstallESD

# 将基本系统磁盘映像转换为原始格式
dmg2img /mnt/OSX_InstallESD/BaseSystem.dmg BaseSystem.img
kpartx -a BaseSystem.img
挂载 /dev/mapper/loop1p1 /mnt/OSX_BaseSystem

# 对 USB 闪存驱动器进行分区,/dev/sdX
sgdisk -o /dev/sdX
sgdisk -n 1:0:0 -t 1:AF00 -c 1:“磁盘映像” -A 1:set:2 /dev/sdX
mkfs.hfsplus -v “OS X 基本系统” /dev/sdX1
安装 /dev/sdX1 /mnt/usbstick

# 复制安装程序文件
rsync -aAEHW /mnt/OSX_BaseSystem/ /mnt/usbstick/
rm -f /mnt/usbstick/系统/安装/软件包
rsync -aAEHW /mnt/OSX_InstallESD/Packages /mnt/usbstick/System/Installation/
rsync -aAEHW /mnt/OSX_InstallESD/BaseSystem.chunklist /mnt/usbstick/
rsync -aAEHW /mnt/OSX_InstallESD/BaseSystem.dmg /mnt/usbstick/
同步

唯一需要考虑的事情是:以 root 身份运行所有命令!因此使用“sudo su”kpartx 您需要添加 -v(详细)以查看创建了哪个循环,因此:kpartx -av InstallESD.img 在我的计算机上已经有 12 个循环,然后使用“df”查看系统中有哪些分区和名称。您唯一需要更改的是。根据您的 usb 安装,“loop0p2”和 loop1p1 以及 dev/sdX。

如果出现“挂载点忙”消息,则有时需要卸载 USB 驱动器。

下面我只是粘贴了我的终端历史记录,它给了我一个可以工作的 USB 驱动器。感谢以上所有人指出正确的方向!以“sudo su”开头,我已经从安装程序中提取了文件 InstallESD,它位于工作目录中

38 dmg2img 安装ESD.dmg 安装ESD.img
   39 kpartx -av InstallESD.img
   40 挂载 /dev/mapper/loop14p2 /mnt/OSX_InstallESD
   41 dmg2img /mnt/OSX_InstallESD/BaseSystem.dmg BaseSystem.img
   42 kpartx -av BaseSystem.img
   43 挂载 /dev/mapper/loop15p1 /mnt/OSX_BaseSystem
   四十四 DF
   45 历史
   46 sgdisk -o /dev/sdb
   47 sgdisk -og /dev/sdb
   48 man partprobe #收到一条消息,说除非我使用 partprobe 或重新启动,否则该分区将不可见
   49 部分探测-s
   50 sgdisk -n 1:0:0 -t 1:AF00 -c 1:“磁盘映像” -A 1:set:2 /dev/sdb
   51 部分探测-s
   52 男子 kpartx
   53 kpartx -u
   54 kpartx -ul
   55 mkfs.hfsplus -v “OS X 基本系统” /dev/sdb1
   56 挂载 /dev/sdb1 /mnt/usbstick
   五十七 DF
   58 卸载 /dev/sdb
   59 挂载 /dev/sdb1 /mnt/usbstick
   60 rsync -aAEHW /mnt/OSX_BaseSystem/ /mnt/usbstick/
   61 rm -f /mnt/usbstick/系统/安装/软件包
   62 rsync -aAEHW /mnt/OSX_InstallESD/Packages /mnt/usbstick/System/Installation/
   63 rsync -aAEHW /mnt/OSX_InstallESD/BaseSystem.chunklist /mnt/usbstick/
   64 rsync -aAEHW /mnt/OSX_InstallESD/BaseSystem.dmg /mnt/usbstick/
   65 同步

答案4

经过几个小时的反复尝试,我终于能够在我二手的 iMac(2009 年中)上安装 OSX 10.11“El Capitan”!我尝试使用随附的互联网安装程序,但如果不登录原主人的 AppleID,它就无法运行(尽管我在清除原始安装之前特意进入 iTunes 来“取消授权这台电脑”)

相反,我从 Apple 的支持页面下载了“El Capitan”安装程序 .dmg 文件: https://support.apple.com/en-us/HT206886

但是,它包含一个名为“InstallMacOSX.dmg”的文件,而不是“InstallESD.dmg”。因此,我需要先将此文件转换为映像:dmg2img InstallMacOSX.dmg InstallMacOSX.img 然后安装映像:在 Linux Mint 中,我使用右键单击 -->“使用其他应用程序打开...”-->“磁盘映像安装器”(但还有很多其他方法可以执行此操作) 里面有一个名为“InstallMacOSX.pkg”的大文件,我可以使用 p7zip 提取它,或者(在 Linux Mint 中):右键单击 -->“使用其他应用程序打开”-->“存档管理器” 里面可以找到 InstallESD.dmg!

但是,sha1 哈希确实匹配以下任何值: https://github.com/notpeter/apple-installer-checksums#mac-osx-installers-sha1-checksums 6198647687 字节,openssl sha1 InstallESD.dmg --> 732f873cbcf38d9e544e659d2429bd4444416cda 我很确定该文件是合法的(因为我直接从 Apple 支持下载了它),所以我编辑了“mkosxinstallusb.sh”脚本并将其添加到已批准列表中 --> 看到以“supported_checksums="...”开头的行,然后将其添加到最后一个结束引号之前的末尾)此外,在启动脚本之前,请确保您的 USB 拇指驱动器完全是空的。就我而言,在开始之前,我实际上将其插入 Mac 并使用磁盘实用程序将其格式化为“OS X Extended (Journaled)”(GUID 分区表)。(我之前曾尝试过一次使用部分占用的 USB 驱动器,但在完成之前空间就用完了)。我不确定使用磁盘实用程序格式化它有多大区别,但这对我来说很有效!然后我运行“sudo bash mkosxinstallusb.sh /dev/sdX “InstallESD.dmg”,脚本处理了剩下的事情。最后,我可以按住“option/alt”启动 Mac,我的 USB 驱动器作为可启动设备出现!17 分钟后,我可以启动 OSX!

我可能会继续重新下载安装程序并使用“createinstallmedia”创建一个新的可启动 USB,以防我使用的映像出现问题,但至少现在我可以启动计算机了!

相关内容