开发者社区> minlearn2016> 正文

在阿里云上装黑苹果(1):黑苹果基础

简介: 本文关键字:云mac当局域网第二mac用,本地盘与网盘组raid
+关注继续查看

本文关键字:云mac当局域网第二mac用,本地盘与网盘组raid

我们在很多地方谈到,苹果之所以好用,是因为mac产品家族间注重融合,比如ipad os与osx是完全不一样的系统,但它们可以交互,他们是生态层面,加以技术辅助的融合,并不是从0开始就纯粹技术融合的,比如共用完全一样的内核,etc..—— 不管如何,这也使得苹果的产品非常难于部分替代的方式去整体代替,除非整个弃用。

苹果在现代OS软硬件的各个层次都有自己的定制,小到硬件(nvme硬件,disk format,bootcamp, NVRAM。etc..)大到OS,软硬层次的融合性深定制,这是一种闭环竞争力。

所以有各种黑苹果技术出现,企图将x86的黑苹果装在普通PC上。这称为Hackintosh,最开始的黑苹果技术是修改系统文件 — 这属于破解和反工程,已经过时,后来发展到利用loader这条合法正途上来:最终要能使黑苹果目标完装官方无修发布的原生安装包。

何谓loader?最初的loader是grub这种bios向os的传手,仅是一个硬盘主分区上的bootstrape,用来boot OS,但是复杂化的grub2可以干很多其它事情,纯粹可以发展为一套软件。这样,bios作为固件和grub作为软件的界限就不是那么重要了。所以后来干脆统一了强化的grub作为标准,这就是EFI,可扩展固件接口 (EFI) 依然跟grub强化一样是一个介于操作系统与硬件平台固件的软件接口。只不过它更强大,这里有各种厂商写好的EFI,引导计算机的硬件逻辑。驱动(为什么这里要用驱动呢,这个驱动不是为了EFI用它是稍后注入到OS的,苹果有iokit接口供各种硬件接入,开源的黑驱动本质也是合法的白苹果驱动)等。注意它们实际是软件可以被置换重写,不是固件它们只是引导固件为OS所用,所以完全可以在这里欺骗OS。

我们在以前谈到黑群,它有一个pe层,loader和所有的驱动都放在那里,系统仅为数据和升级包。而苹果没有pe层决定引导的因素存在,黑苹果要做的工作要更底层一些,因为它对硬件也有诸多规范(安装完的黑苹果只能是macbook,mac mini,imac,etc..型号系列的硬件组合,以及五码同一),而苹果原生loader是闭源不可抠的或patch的,抠出来也不能转移的,转移了也不能用的,即使能用也是不合法的,即使合法且能用上,它也不是决定发行包最终能安装成功的唯一因素。

所以复杂的第三方efi loader技术完全可以在这里发挥作用,统一承担所有的功能更多作用,比如伪装苹果承认的硬件规范和五码合一负责欺骗硬件的工作及更进一步的引导安装工作(注意这里进一步这三字)。

甚至这种第三方loader发展到通用EFI伪装器的境界,它不仅能伪装苹果机,还可以伪装任何类型的硬件。你可以将这种强化了的loader想象成”虚拟的efi as loader”。因为它有配置文件可以对应任何硬件平台的硬件组合。除了引导和驱动,对于黑苹果需求它甚至可以提供很多专门工具如四叶草的F4提取原生硬件码。

—— 随着技术的发展,黑苹果的loader大致分为:变色龙引导,CLOVER四叶草引导,Ozmosis刷BIOS的方法安装(相对而言它使安装完的PC更象白苹果,不过它本质是clover应用的局限类型。)。截止到发稿日期,主流的安装方式是CLOVER四叶草引导。

以下都是摘录:

CLOVER的主要任务

SMBIOS(DMI)充满了模拟真正的Apple Macintosh的数据 - 运行macOS的要求。序列号是假的,但有效。

ACPI表 - 包含在PC的ROM中 - 通常不能正确编写并且可能包含错误,主要是因为制造商很懒惰:APIC表中的CPU核心数不正确,NMI数据丢失,表FACP中缺少重置寄存器,错误的电源配置文件,缺少SSDT表中的EIST数据,最好甚至不提DSDT表。Clover试图解决这些问题。

OS X试图通过所谓的EFI字符串从引导加载程序获取数据,描述视频,以太网或声卡等附加设备。Clover生成此类数据。

基于BIOS的计算机将在初始启动过程中在传统模式下使用USB,这在将控制权传递给操作系统时会成为问题。Clover将改变USB模式。

macOS使用称为NVRAM的特殊内存进行信息交换,该内存包含在RuntimeServices中(不存在于传统加载程序中)。Clover提供此类信息交换,支持正确的Firewire功能和使用“启动磁盘”首选项面板。此外,NVRAM用于注册iCloud和iMessage服务。

ConsoleControl协议是必需的,在DUET中不存在。

有必要通过DataHub协议填充EFI / Platform中的某些数据,该协议在DUET中不存在,并且不总是存在于UEFI中。此外,设置了极其重要的FSBFrequency值,有时是错误的或完全缺失的。

在工作之前必须正确初始化CPU,但由于主板通用以匹配大量不同的CPU,因此内部表不包含任何正确的CPU数据。Clover执行已安装CPU的完整检测,更正表和CPU本身。一个副作用是工作涡轮模式。

另一个小问题:DUET和EDK2源通用写入以匹配不同的硬件,但硬件依赖性本身依赖于常量。这意味着一个特定平台的编译过程。Clover旨在实现通用性并提供自动平台检测。

一些资源

一些黑苹果常用的软件或者驱动开发者的主页,希望大家能及时更新驱动和软件,驱动需要自己去对应驱动开发者的主页去更新。

RehabMan 维护了很多黑苹果驱动和相关补丁 https://bitbucket.org/RehabMan/

Vit9696 lilu和相关插件、applealc的主要开发或维护者 https://github.com/acidanthera

Clover团队更新 clover的主要发佈渠道 http://sourceforge.net/projects/cloverefiboot/

我们的工作

你可以去百度查找利用clover装机,打包集成clover的镜像,甚至进阶到高级kext制作等课题。

而我们要做的云主机上的黑苹果,除了正确的colover配置和virtio驱动的准备,都是必须的。还有更多工作要做。我们最终要实现一个云端的mac机,就跟本地局域网的mac mini作为第二mac一样,我们最终需要的是为上文《Dsm as deepin mate:将skynas打造成deepin的装机运维mateos》准备的timemachine盘,与本地一个盘/文件夹组同步,类raid作用或群晖的share sync。

这样的混合云方案兼顾本地业务和远程,比局域网的mac mini业务更偏向多一些建站和远程灾备。


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
谈身份管理之基础篇 - 保障云上安全,从[规范账号使用]开始
身份和密钥的管理,是企业上云的重中之重;每年国内外都有因为身份和密钥的管理不善,或泄露,或误操作导致严重的生产事故或者数据泄露。本期小编将重点聊聊云上身份的那些值得关注的事儿。
412 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
19305 0
云上快报 | 阿里云混合云全线产品强势入选Gartner【中国云基础设施和平台服务市场指南】
近日,国际权威IT研究与顾问咨询公司 Gartner 发布【Market Guide for Cloud Infrastructure and Platform Services,China】,阿里云混合云凭借安全、稳定、智能、开放的产品能力得到业内高度认可,全线产品强势入选【中国云基础设施和平台服务市场指南】,是政企客户数字化转型的首选云平台。
1309 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
28577 0
SAP(HANA+S/4)上云基础环境部署最佳实践
为提高客户服务水平及集团管理效率,客户选择了SAP解决方案。但是同时也对客户的IT基础设施提出了更多的要求。对此我们针对SAP上云基础设施选型、云原生产品、灾备方案设计,云上安全环境设计总结出了SAP最佳上云方案。本文展示真实案例中的HANA和S/4部署实践。
227 0
如何通过阿里云基础安全组件确认云上资产安全状态
前言 相信大家对于云监控已经是十分熟悉了,能够通过云监控快速确认云上资产的负载和使用情况。但是如何通过控制台快速确认云上资产的安全状态,可能对于大家而言相对会陌生一些。接下来给大家介绍下如何利用基础的云安全产品来确认云上资产的安全状态。
1876 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22296 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20415 0
+关注
minlearn2016
https://gitee.com/minlearn/minlearnprogramming/:minlearn的一云多端云OS/统一编程栈方案。
143
文章
162
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载