2015年4月19日更新:
两年之后,对该领域的兴趣似乎仍然很小。但是,Hackintosh社区仍然非常活跃,这意味着仍然可以维护少数能够启动xnu(变色龙和fork)的开源非Apple引导程序之一,并且可以引导Yosemite。也有在QEMU中启动OS X Yosemite的成功案例。此外,感谢一个靠winocm处理的(现在为Apple雇用的)开发人员,我们有了xnu内核的ARM端口。她是我所知道的最活跃的开发人员。
Amit Singh的Mac OS X Internals即将推出续集。我通常不愿提及人们的个人网页;但是,包含所有信息的博客服务器似乎有点不可靠,因此请参见ameaijou的 Twitter页面上的信息框。
我已经设法构建了Apple的开发工具链(一个自主机,但是“ Darwin SDK” 也已移植到Linux上)。我相信,达尔文操作系统可能仍可以从头开始构建-我们可能缺少的只是一些开源Kexts。观看此空间,如果您知道如何激发兴趣,请告诉我!:)
这个问题的简短答案:
技术上:是
实际上:否*
关于二进制作弊:可能但不合法(未经测试)
带有针对通用硬件的Binary Cheat:如上所述(未经测试)
*除非您在苹果公司工作(*清除加利福尼亚州的喉咙*)
更长的答案:
这将是相当长的。我建议喝咖啡。如果您没有时间/兴趣来阅读全部内容,则可以跳至“总结”。
实际可行(否):
可悲的是,Apple撤消了太多达尔文必需的KEXT和二进制文件的源代码,以致无法纯粹从源代码编译达尔文OS。从技术上讲,它仍然是可能的(您可以自己编写源代码以对其进行适当地修补),但是我根本没有时间,技能或意愿来做到这一点(我怀疑众筹社区会非常感兴趣)。
毫不奇怪,关键的转折点是Darwin 10的发布,该版本将xnu带入x86_64-land。在此之前,大多数必需的资源都在附近,但是仅x86。随着时间的流逝,Apple的“开放源代码”的含义似乎已转变为“仅在Apple硬件上开放源代码”,因为Apple的KEXT现在基本上是特定于硬件的,因此即使您可以进行所有操作并运行(请参阅下文),您仍然只能使用Apple硬件。
技术上可行(是):
但是,一切并没有丢失。LFS指南确实派上用场,并且可以肯定地进行所有必要的设置,而无需实际构建Darwin OS。此外,所提供的步骤为您提供了几乎完整的前进路线图,减去了内核,KEXT和引导加载程序。不过,我确实设法解决了引导程序问题(至少对于Apple硬件而言)。
如果您有兴趣,这里是您必须做的完整概述:
- 擦除驱动器(内部或外部–无关紧要)上的分区(最好为8 GB或更大),并将其格式化为Mac OS扩展(日志式)(HFS +)。
确保它具有GUID分区表(GPT),并且在执行操作时具有EFI分区。最简单的方法是通过Apple的磁盘实用程序,但是您可以根据需要在命令行上进行操作(其他地方有关于如何执行此操作的教程)。重要的一点是,当您运行时distil list diskNsM
,以下信息应正确:
分区类型:Apple_HFS
可以安装操作系统:是
只读媒体:否
只读卷:否
现在遵循LFS指南(进行改编)。
将(显然使用实际的安装点)插入并DFS=/Volumes/DarwinOS
.bashrc
.bash_profile
设置用户目录(在chown
最后将其设置为0:0):
sudo mkdir -v "$DFS"/usr
输入root
:
sudo su -
进入sources目录并设置sticky位:
mkdir -v "$DFS"/sources # Make sure you still have $DFS defined; if not, redefine it.
chmod -v a+wt "$DFS"/sources
创建工具目录并对其建立符号链接,以便稍后将其轻松添加至$ PATH(root
顺便说一下):
mkdir -v "$DFS"/tools
ln -sv "$DFS"/tools /
logout # Leave root
下载所需的所有软件包的源。当然,这是您遇到困难的地方。所有必要的要素都没有。(顺便说一句,我还是更喜欢GNU binutils
。)
假设您实际上可以下载所有需要的文件,让我们继续。
为DFS创建一个特权用户(由LFS建议):
sudo dscl . -create /Users/lfs
sudo dscl . -create /Users/lfs UserShell /bin/bash
sudo dscl . -create /Users/lfs RealName "LFS DFS"
sudo dscl . -create /Users/lfs UniqueID "2070" # whatever you like
sudo dscl . -create /Users/lfs PrimaryGroupID 20 # Default 'staff'
sudo dscl . -create /Users/lfs NFSHomeDirectory /Users/lfs
sudo dscl . -passwd /Users/lfs dfs # Again to taste.
请注意,您必须在Mac上手动设置新用户的homedir:
sudo mkdir /Users/lfs
sudo chown -R lfs:staff /Users/lfs/
现在,授予新用户访问源和工具的权限
sudo chown -v lfs $DFS/tools
sudo chown -v lfs $DFS/sources
登录:
su - lfs
Password: dfs
运行以下命令以清理环境(从LFS):
cat > ~/.bash_profile << "EOF"
echo "Entering clean environment…"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
现在运行以下命令(如果不确定,请参阅LFS):
cat > ~/.bashrc << "EOF"
set +h
umask 022
DFS=/Volumes/*DarwinOS* # As previously
LC_ALL=POSIX
LFS_TGT=$(uname -m)-dfs-darwin1242 # Look inside gcc/configure for possibilities!
PATH=/tools/bin:/bin:/usr/bin # Note symlink from before
export LFS LC_ALL LFS_TGT PATH
echo ".bashrc script complete. Environment is ready."
EOF
GCC /configure
非常灵活。尝试使用grep *-
模式,或者只是运行gcc -v
以查看主机的配置方式并将其复制。
- 现在注销lfs用户并重新登录。您现在应该拥有一个干净的环境。
- 从现在开始,一切都在lfs用户内部进行。您会注意到,我只是将一半的“ LFS”符号转换为“ DFS”符号有点懒惰。抱歉,您明白了。
现在转到假设部分。
从这里开始,很好的将是标准的LFS过程:提取源代码,构建,安装,测试,删除源代码。请注意,binutils,GCC和Glibc的2遍仍然是必需的,但是您还必须有一份有效的副本libc++.1.dylib
–您也需要在2遍中进行。您可以查看LLVM项目的libcxx页面以获取更多详细信息。编译后,您可以将其放入/usr/lib
。您需要编译并安装xnu内核(网络上有一些有关此操作的教程),然后安装KEXT。即使所有必需的KEXT都可用,您仍然需要手工将它们放入.kext包中。同样,这里有关于如何在命令行上手工制作KEXT的教程。
最后一点是使系统可启动。为此,您将运行以下命令:
"$DFS/usr/sbin/bless" --folder "$MOUNT/System/Library/CoreServices" --bootefi --verbose
实际上,要祝福的位置并没有真正改变。该文件夹只是Apple标准的。
无论如何,假设内核和KEXT位于正确的位置,您已经在适当的位置保存了,等等的副本dyld
,launchd
并且boot.efi
工作正常,则系统应该可以正常工作并可以启动!
请注意,如果您真的想运行launchd
,可以运行一个仿冒程序 -只是运行bash提示的脚本-这就是PureDarwin Nano所做的。
同样,如果需要,请务必自行编写KEXT和二进制文件-从技术上讲,这是可能的。完成后就给我打电话。
关于二进制作弊:可能但不合法(未经测试)
那么,为什么您不可以只从Mountain Lion中抓取二进制文件,KEXT和必需的文件,来保佑音量并继续前进呢?好吧,你可能可以。但是您还需要许可证才能执行此操作。另外,如果您执行此操作,则基本上已经复制了Mountain Lion。这不是重点吗?
带有针对通用硬件的Binary Cheat:如上所述(未经测试)
这几乎是 OSx86项目。再次,您几乎立即遇到了法律问题。毫无疑问,这最后两种方法绝对是可能的-您可以在通用硬件上运行Mountain Lion就是事实的证明-但其全部目的是能够从源代码合法地编译自己的Darwin OS。
边注
您可能已经注意到,我故意避免使用32位。在每个主要操作系统都提供64位操作系统的世界中,编译32位操作系统没有多大意义。苹果公司没有实际提供达尔文的磁盘映像(直到达尔文9)在这里。他们在我的Windows机器上完美工作。
结束语
我想最终,人们不会为达尔文购买Mac,而是为Aqua购买Mac。结果,对达尔文作为独立的开放源代码产品的支持逐渐下降到了对开放源代码社区真正的象征意义。另一个具有讽刺意味的事实是,要了解很多内容,您必须直接进入OSx86项目,该项目并未得到严格的批准(说白了)。即使那样,周围也没有很多信息。PureDarwin是一个很好的起点,Jonathan Levin的书是xnu的宝贵参考。
这是非常有教育意义的一年,我几乎很高兴知道如何做到这一点。我将不得不在某个阶段停止工作,现在是时候了。作为对苹果的最后徒劳的喊话,当您发行Mavericks时,要求只再发行一个达尔文版本是否太多?