macos 系统镜像iso 的制作

需求: 因为需要调试内核, VMware Funsion 需要iso 系统, 但是发现网上基本上没有相关系统镜像, 大部分是dmg 镜像, 所以只有自己制作

比如:这是appstore 的10.12.6的系统 https://itunes.apple.com/us/app/macos-sierra/id1127487414?mt=12
下载下来后自动会放到/Application/中

方式一

制作镜像: 我直接在下载macos 10.12.6 .dmg , 然后通过window 的iso 制作工具将其转换成macos 10.12.6 .iso 格式, 然后放到VMware Funsion 直接安装, 发现出现了错误:


image.png

这是怎么回事? 然后对比了一下我原来下载好其他版本的可安装的iso 镜像, 发现自己制作的iso里缺少很多文件, 原来直接将dmg转成iso是无法作为mac的启动盘的, 因为这样少了很多的引导程序

方式二

 根据上述的情况,  在网上找到了一篇帖子, 需要我们使用命令行去自己制作

1: 把下载好的dmg文件拷到mac上,或者直接在mac上下载, 不要使用什么百度网盘下载, 真的太慢了, 丫的限速

2:这里我直接使用AppStore 里的10.12.6 的版本, 下载好后直接会在/Application 中

image.png

3:打开终端: 按以下顺序输入命令,一共12条命令

1.1>>hdiutil attach /Applications/Install\ macOS\ Sierra.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app

        目的: 就是将我们下载系统[即在/Application中]关联到Volumes/目录下, 成为install_app

    ![image.png](https://upload-images.jianshu.io/upload_images/1974361-8cfb38947922f8ae.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1.2>> hdiutil create -o /tmp/Sierra.cdr -size 7316m -layout SPUD -fs HFS+J

        目的: 创建cdr 文件, 这个就是创建iso的前身, 所以放到临时目录下,因为到时会改成iso 并从临时目录下移除

     ![image.png](https://upload-images.jianshu.io/upload_images/1974361-c4f864ace8a7949e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1.3>>hdiutil attach /tmp/Sierra.cdr.dmg -noverify -nobrowse -mountpoint /Volumes/install_build

       目的: 将上面的临时文件关联到/Volumes/目录下,成为install_app

       ![image.png](https://upload-images.jianshu.io/upload_images/1974361-5e7354e42282928a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1.4>>asr restore -source /Volumes/install_app/BaseSystem.dmg -target /Volumes/install_build -noprompt -noverify -erase

   目的: 将install_app 中BaseSystem.dmg 转到/Volumes/install_build中

    ![image.png](https://upload-images.jianshu.io/upload_images/1974361-498a2a8b2d32b023.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1.5>>rm /Volumes/OS\ X\ Base\ System/System/Installation/Packages 

      目的: 删除Packages

1.6>>cp -rp /Volumes/install_app/Packages /Volumes/OS\ X\ Base\ System/System/Installation/

1.7>>cp -rp /Volumes/install_app/BaseSystem.chunklist /Volumes/OS\ X\ Base\ System/BaseSystem.chunklist

1.8>>cp -rp /Volumes/install_app/BaseSystem.dmg /Volumes/OS\ X\ Base\ System/BaseSystem.dmg

     上述3个命令都是将install_app 的东西放到OSX Base System 中, OSX Base System存放就是最后iso 镜像所有的内容

1.9>> hdiutil detach /Volumes/install_app

        目的: 解除关联install_app

        ![image.png](https://upload-images.jianshu.io/upload_images/1974361-3bade795a415a156.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1.10>> hdiutil detach /Volumes/OS\ X\ Base\ System/

        目的: 解除关联osx Base System

        ![image.png](https://upload-images.jianshu.io/upload_images/1974361-00ec14449f25816a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1.11>>hdiutil convert /tmp/Sierra.cdr.dmg -format UDTO -o /tmp/Sierra.iso

        将cdr.dmg临时文件转换成iso.cdr

        ![image.png](https://upload-images.jianshu.io/upload_images/1974361-25d7a56179d34351.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  1.12>> mv /tmp/Sierra.iso.cdr ~/Desktop/Sierra.iso

         放到桌面,改成iso 的后缀

OK,搞定,现在在mac的桌面上你就可以发现有一个Sierra.iso的文件了

最后的ios 中的内容:

image.png