Mac实用技巧之:把macOS安装包转换成iso格式

Mac实用技巧之:把macOS安装包转换成iso格式

需求与准备工作

需求

有时候你可能想在你的Mac上用虚拟机再装一个macOS,以便用于测试新系统,或者有用Windows的童鞋想安装一个macOS试试,这都需要iso格式的macOS安装包,这时候你就可以用你的Mac从Appstore下载一个原装正版的macOS再转成iso。

下载系统

  • 1、从AppStore下载
  • 2、从一些网站上下载(有人会下载好上传到一些网站上);

这里我主要讲从AppStore下载,我现在(2021.10.16)最新的是BigSur11.5.6,所以我就以这个为例。

在AppStore中下载
Xnip2021-10-16_18-32-05.jpg

当然,Mojave以上的系统,AppStore下载都会自动跳转到系统更新里面,但是还是得从AppStore里进去,因为你直接去系统更新里,下载到的不一定是完整系统,可能只是更新。

下载完成后,它是下载到“应用程序”里面的,名称为Install macOS 版本名.app,比如:

Install macOS High Sierra.app
Install macOS Catalina.app
Install macOS Big Sur.app

比如我这次下载的是Big Sur,所以它的名称是Install macOS Big Sur.app
Xnip2021-10-16_18-39-57.jpg

格式的话,可以看到是.app格式,当然这个后缀默认不显示,需要在访达偏好设置里勾选显示才会显示,当然这种系统安装包也可以在网上下载,因为有些人是下载好分享出来的。

另外,下载好之后,它会自动弹出安装,如果你只是为了下载这个系统包,而不是为了更新系统,那就不安装,直接在程序坞中右击它→退出就行。

或者也可以用命令下载(11.5.6是版本号):

softwareupdate --fetch-full-installer --full-installer-version 11.5.6

这个命令会显示正在安装…其实它就只是下载到“应用程序”文件夹里而已,不会安装的,安装也是下载完成后弹出安装界面,要你同意后才会安装。

步骤详解

总体步骤

这里直接列出每一步要做什么,相关命令可能无法直接执行,主要是因为路径可能不一样,后面会单独讲解每条命令。

# 1.创建一个空白磁盘
hdiutil create -o /tmp/macOS -size 12945m -volname macOS -layout SPUD -fs HFS+J

# 2.把创建的空白盘挂载到系统中(相当于把U盘插到电脑上)
hdiutil attach /tmp/macOS.dmg -noverify -mountpoint /Volumes/macOS

# 3.向空白盘里写入系统数据(相当于制作U盘启动盘);
sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/macOS --nointeraction

# 4.推出写好数据的盘(相当于右击→推出U盘,在Windows上叫“弹出”,都是一个意思);
hdiutil detach -force /Volumes/Install\ macOS\ Big\ Sur

# 5.把刚刚推出的dmg镜像文件转换成DVD/CD-R存储格式的镜像文件
hdiutil convert /tmp/macOS.dmg -format UDTO -o ~/Downloads/macOS-Big-Sur-11.5.6

# 6.把前面做好的系统盘转换成DVD/CD-R格式(文件后缀为`.cdr`,可以认为是macOS版的`.iso`)
mv ~/Downloads/macOS-Big-Sur-11.5.6.cdr ~/Downloads/macOS-Big-Sur-11.5.6.iso

# 7.删除最开始创建的macOS.dmg
rm -f /tmp/macOS.dmg

一定要执行的命令是3,也就是向空白磁盘写入系统,其它的操作,都可以不用命令的。

创建空白磁盘

执行下面的命令创建一个磁盘镜像文件(相当于创建一个空白磁盘)

hdiutil create -o /tmp/macOS -size 12945m -volname macOS -layout SPUD -fs HFS+J

hdiutil:hd是hard disk,即硬盘,i是image,即镜像,util是utility,即实用工具,整体:hard disk image utility,即硬盘镜像实用工具。所以这条命令可以不执行,而是用磁盘实用工具来新建一个空白盘。

运行命令后,会提示

bruce > hdiutil create -o /tmp/macOS -size 12945m -volname macOS -layout SPUD -fs HFS+J
created: /tmp/macOS.dmg

bruce > ls -la /tmp/macOS.dmg
-rw-r--r--@ 1 bruce  wheel    13G 10 17 19:25 /tmp/macOS.dmg

这个文件创建好之后,格式就是.dmg的,大小显示13G(四舍五入),当然size单位也能用g和t(要小写),但t一般是用不到。

-o hdiutil的帮助信息里没有提到这个选项,但我个人认为它是object的首字母,也就是用于指定创建目标。

-size 12945m用于指定创建的磁盘大小,m就是MB,此外还有KB、GB、TB,分别用k、g、t表示就行(也就是说要小写)。

-volname macOS表示指定创建的磁盘(也叫卷)名称为macOS,这个完全是自己命名,你写成-volname abc也可以,只不过创建的磁盘文件名称叫abc罢了,但名称是不影响功能的,而且-volname macOS也可以不写,不写会默认使用/tmp/macOS中的macOS作为磁盘文件名,所以这个/tmp/macOS也完全可以写成其它你想要的名字,比如/tmp/abcd

-layout表示指定文件分区类型,SPUD指Single Partition,单文件分区。

-fs表示指定file system,即指定文件系统,后面的HFS+J就是文件系统,其中HFS是Hierarchical File System,即分层文件系统的意思,这是苹果一直以来的硬盘文件系统,就好比windows的NTFS也是硬盘文件系统的一种,+号应该是表示增强版的意思,J是什么意思我就不知道了。
Xnip2018-09-07_02-00-29.png

挂载空白磁盘

运行以下命令挂载刚刚创建的macOS.dmg空白磁盘

hdiutil attach /tmp/macOS.dmg -noverify -mountpoint /Volumes/macOS

attach是『附加,粘上,贴上』的意思,意思就是把刚才创建的在/tmp/目录下的macOS.dmg文件,挂载到/Volumes/macOS下。/Volumes/是专门用来挂载的目录,后面的macOS只是自己定义的一个挂载点的名称,你写成/Volumes/abcd也不会影响挂载,只要后面写入的时候,用同样的名称就行。

输出如下

bruce > hdiutil attach /tmp/macOS.dmg -noverify -mountpoint /Volumes/macOS
/dev/disk3              Apple_partition_scheme
/dev/disk3s1            Apple_partition_map
/dev/disk3s2            Apple_HFS                      /Volumes/macOS

事实上,这个挂载,也可以双击打开macOS.dmg来挂载,右击访达→前往文件夹,在里面输入/tmp/点击前往即可打开/tmp/文件夹,macOS.dmg就在这个文件夹里面。

打开后如下所示,双击它,就可以挂载它,效果跟用前面的命令挂载是一样的,双击挂载,挂载点的名称默认是文件名,即/Volumes/macOS

挂载后桌面就能看到,当然在访达侧边栏也能看到

向空白磁盘写入系统

用以下命令向刚刚挂载的空白磁盘写入系统

sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/macOS

它使用的其实是系统盘里的createinstallmedia工具来向空白磁盘写入,这个操作必须使用root权限,所以需要加sudo。

输出如下

bruce > sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/macOS
Password:
Ready to start.
To continue we need to erase the volume at /Volumes/macOS.
If you wish to continue type (Y) then press return: Y
Erasing disk: 0%... 10%... 20%... 30%... 100%
Copying to disk: 0%... 10%... 20%... 30%... 40%... 100%
Making disk bootable...
Install media now available at "/Volumes/Install macOS Big Sur"

注意最后一句提示

Install media now available at “/Volumes/Install macOS Big Sur”

写入完成后,挂载点名称已经变了,已经从前面的/Volumes/macOS变成了/Volumes/Install macOS Big Sur了。

推出磁盘

推出磁盘

hdiutil detach -force /Volumes/Install\ macOS\ Big\ Sur/

因为前面写入完成后,挂载点名称已经变了,所以要根据实际情况,自己先去/Volumes/目录下看看挂载点名称,再来推出。

推出后,输出如下

hdiutil detach -force /Volumes/Install\ macOS\ Big\ Sur/
"disk3" ejected.

与挂载磁盘同理,事实上推出磁盘可以直接右击桌面的磁盘盘符→推出的方式来推出,当然访达侧边栏的磁盘那点小倒三角也可能推出。

磁盘格式转换

写入完成后,就可以对它的格式进行转换

hdiutil convert /tmp/macOS.dmg -format UDTO -o ~/Downloads/macOS-Big-Sur-11.5.6

这个命令也可以用磁盘实用工具(有界面)来转换,可以不用命令。

运行完成后,输出如下

bruce > hdiutil convert /tmp/macOS.dmg -format UDTO -o ~/Downloads/macOS-Big-Sur-11.5.6
Reading Driver Descriptor Map (DDM : 0)…
Reading Apple (Apple_partition_map : 1)…
Reading  (Apple_Free : 2)…
Reading disk image (Apple_HFS : 3)…
..............................................................................
Elapsed Time: 36.728s
Speed: 352.5Mbytes/sec
Savings: 0.0%
created: /Users/bruce/Downloads/macOS-Big-Sur-11.5.6.cdr

convert 表示格式转换;

/tmp/macOS.dmg 是转换的对象,也就是前面创建的磁盘;

-format UDTO 指定格式为“UDTO”。man hdiutil中搜索“UDTO”,可以搜索到“UDTO – DVD/CD-R master for export”

convert image -format format -o outfile
                convert image to type format and write the result to outfile.

                As with create, the correct filename extension will be added
                only if it isn't part of the provided name.  Format is one of:

                      UDRW - UDIF read/write image
                      UDRO - UDIF read-only image
                      UDCO - UDIF ADC-compressed image
                      UDZO - UDIF zlib-compressed image
                      ULFO - UDIF lzfse-compressed image (OS X 10.11+ only)
                      ULMO - UDIF lzma-compressed image (macOS 10.15+ only)
                      UDBZ - UDIF bzip2-compressed image (Mac OS X 10.4+ only)
                      UDTO - DVD/CD-R master for export
                      UDSP - SPARSE (grows with content)
                      UDSB - SPARSEBUNDLE (grows with content; bundle-backed)
                      UFBI - UDIF entire image with MD5 checksum

DVD/CD-R master for export,DVD/CD-R master要一起解释,叫做DVD母盘或CD-R母盘,for export意思是“用于导出的”,整体解释就是:用于导出的DVD/CD-R母盘。这个“用于导出”的意思我也不是理解的很透彻,不需要管它。CD-R的R是Recordable,可录制的意思,因为有另一种叫CD-Rom(Read Only Memory),只读的,不可刻录的!反正,总体来说就是这种UDTO格式就是我们要的iso格式。

-o ~/Downloads/macOS-Big-Sur-11.5.6 o就是output,表示指定输出文件,它后面跟着的就是输出文件的路径,我是输出到了下载目录中,macOS-Big-Sur-11.5.6是文件名,注意,这个文件名不用指定后缀,因为指定了也没用,它的后缀一定是.cdr(就是前面说的CD-R),就算你加了后缀,它也不会把它当作后缀,而是会把它当作文件名,比如你如果写成macOS-Big-Sur-11.5.6.iso,它生成的文件名是macOS-Big-Sur-11.5.6.iso.cdr

一般来说,文件名有空格,可以用引号引起来,但这个-o指定的输出文件名不能用引号,否则会报错找不到文件,所以这个输出文件名不能用有空格。

修改磁盘后缀

cdr格式其实就相当于macOS版的iso,所以是可以直接改成iso的

mv ~/Downloads/macOS-Big-Sur-11.5.6.cdr ~/Downloads/macOS-Big-Sur-11.5.6.iso

当然这个命令也是不必要的,因为你完全可以在访达里手动修改后缀。

删除最初的磁盘

因为转换会生成新文件,所以要把原文件删掉

rm -f /tmp/macOS.dmg

当然这个操作也可以不用命令,而是自己去访达里删除,也就是用open /tmp/打开它所在的文件夹,然后找到macOS.dmg再把它删除。

使用iso镜像

得到macOS-Big-Sur-11.5.6.iso文件后,就可以在虚拟机里选中它来安装了。

但坑爹的是,parallels desktop竟然不能识别,而且它本身就自带把.app格式的系统转换为iso格式。如果有谁知道我哪一步做的有问题,可以评论告诉我!

参考:How to create a Bootable ISO image of macOS 10.13 High Sierra installer

打赏
订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

Mac实用技巧之:把macOS安装包转换成iso格式