veröffentlicht um 22.11.2012 23:16 von Ferdinand Klinzer
Hi everyone. Due completely to the work of rafirafi, there is a new beta release of PureDarwin which is available for testing. This has yet to be completely verified or replicated (rebuilt from source code, and free licenses verified) by anyone else, but it does boot in qemu and in other virtual machines.
Rafirafi has rewritten the remaining binary roots of Darwin 9, including a completely new platform expert called GenericPlatform. He says that there is complete network support including DNS, via his ported E1000 and pcnet32 drivers. It has the latest MacPorts and OpenDirectory. The user's password is 'darwin' and 'sudo' is activated. The documentation for this build is located in the default home directory, which you'll see upon booting. The image is in the form of a qemu qcow2 image, which can be used or converted by various virtual machines.
Here it is for download:
Just kidding. Here is a fast download from Google at 1139081216 bytes:
Here's the same file which I recompressed at 1036042200 bytes for those who need fewer bytes, but which should also be fast:
Edit: fast mirrors at http://sourceforge.net/projects/puredarwin/files/2012/Puredarwin-darwin_9.8-version_9L30.qcow2.xz/download
I am using the following command for qemu 1.2.0, installed via MacPorts, on a Mac OS 10.8.0 host.
qemu-system-i386 -m 1024 -cpu core2duo -vga std -net user -net nic -hda puredarwin_1.3.0.qcow2
You'll arrive at an X11 display with a terminal window. The user's password is 'darwin', which you'll need for enabling DHCP networking.
sudo ipconfig set en1 BOOTP
See the default user's home directory for the source code patches. Use 'port sync' instead of 'port selfupdate', because MacPorts has to be patched in order to function, but you can still install the latest packages anyway. Some MacPorts packages (such as python27) require further patches, which are documented on trac.macports.org.
Please come to IRC (#puredarwin at irc.freenode.net, where I'm 'dtm') to discuss your findings and to give rafirafi your thanks!
Date : 25/09/2012
Author : rafirafi
About this build :
platform : leopard 9L30
only i386 architecture
How to use:
There is an user created "puredarwin" with passworg "darwin", "root" have password "rootroot"
Network is tested as working in virtualbox and linux with kvm modules patch available on puredarwin.org site, from here you can connect with ssh.
Example of a complete command line :
kvm -m 512 -cpu host,family=6,model=15 -device VGA,bus=pci.0,addr=0x02 -device rtl8139,mac=54:52:03:04:05:02,vlan=0,bus=pci.0,addr=0x04 -net users,vlan=0 -machine pc,accel=kvm -name ***PD-XMAS-9L30pd1*** -hda /opt/PD-Xmas-9L30pd1.qcow2
Edit: See below for running in VirtualBox.
What it is :
This is an attempt to have a puredarwin without binaries.
made with the information publicly available about the puredarwin project with the maximum of features and developer tools I have been abble to include.
What news / puredarwin Xmas :
- based on 10.5.8 source
- use the last opensource platform expert, only i386
Shipped but not built :
openjdk and antlr : here in case someone want to built openjdk
Packages not coming from 9L30 apple source with puredarwin patches:
From rafirafi :
ClockRTC.kext : Read the date from rtc and provide it to the platform expert
VMQemuVGA.kext : a framebuffer for the qemu default vga, should be compatible with any card supporting the VBE standard.
PCNet : an experimental driver for the pcnet32 network card, only version Am79C970A supported.
From darwin 8:
AppleAPIC.kext with 8259 support : made standalone in Apple8259PIC.kext
AppleI386GenericPlatform.kext : hook to ClockRTC added. Add the kernel boot option "platform=PCx86" for compatibility or Apple ACPI platform will be loaded.
DarwinTools : provide sw_vers and SystemVersion.plist
CFNetwork : not so much tested
From Zenith432 / VMware:
From Stuart Crook:
pam_sessioncreate.so : Cf http://marc.info/?l=launchd-dev&m=123732227520735
CF : missing function, essentially Stuart Crook code.
From voodooprojects :
chameleon : last version building with darwin 9, svn version 2045, need 400M of memory min. to boot.
From macports :
a macports fresh install of the last version is here (compiled zithout objc and foundation support)
a keep a Xorg installed for convenience, if you dont zant it erase /usr/X* directory and modify .profile file.
osxbom : for now just lsbom, a reimplementation of the utility of the same name. Here for using with macport binary package.
AppleIntelE1000.kext : driver for the e1000 netwok family cards (http://osx86drivers.sourceforge.net ), slightly corrected to work with puredarwin.
subversion-1.3.2 is in /Users/puredarwin.
A part of jre from openjdk is here with antlr 2.7.3.
Components not working / lacking :
PureFoundation : there are (...) features not implemented, tested.
Security framework : there is no free CSP, so a lot of features are not ok.
CFNetwork : not really tested, perhaps it's ok.
CF: the patches are mainly stubs, but it should be possible to implement the features without too much difficulties.
ddistnoted: not here. you can get the binary from puredarwin site or ask the author for the source.
Kerberos : depends on plutil. A python module for plist exist so somebody can make a plutil substitute.
Features with less problems:
Login throught pam:
this is achieve by creating/recreating the pam_sessioncreate.so module foolowing the Stuart mail from:
Multi-users : you can use the script from puredarwin site
The dtrace patch interfers which dyld buily, so I patched ld64 but dtrace functionnalities were not tested after this patch.
Features with less problem:
You can see a message at boot:
"InterfaceNamer: no network interfaces"
=> it just means the interface is not built-in, so not used to generqte uuid platform.
Only a framebuffer for qemu/virtualbox is here, it's based on VBE features only iirc, so nothing hardware specific.
There is a driver made by zenith432 VMWare Svga II which should provide support for vmware.
What's been done :
A lot of patches.
But there is a lot of patch to build only i386.
What I think could be solve :
CF - purefoundation :
The patch available for CF pf6 is not ok, and some feature were backported from CF-550 or opencflite.
There is no reconstructed headers/headers based on the doc, so they couldn't be included. But compilation against purefoundation in puredarwin is fine and show you immediatly what symbols are lacking...
The purefoundation r30 needs minor corrections to built in darwinbuild and have all the symbol defined (link to libffi...), notably the Foundation headers can be self-contained easily.
Python and Tcl needs additionnal patches to build completly in darwinbuild.
X : re-enable XDarwin feature.
What will be very difficult to solve :
there is no opensource CSP, perhaps it's possible to use openssl...
XCode dependency :
It means porting every project to use a Makefile...
To run this on a Ubuntu i386 (32-bit) box with VirtualBox, do
sudo apt-get -y install qemu-utils
xz -v -d -k Puredarwin-darwin_9.8-version_9L30.qcow2.xz
qemu-img convert -O vdi /Puredarwin-darwin_9.8-version_9L30.qcow2 Puredarwin-darwin_9.8-version_9L30.vdi
VBoxManage createvm -name PD -ostype MacOS -basefolder . -register
VBoxManage modifyvm PD --cpus 1
VBoxManage modifyvm PD --pae on
VBoxManage modifyvm PD --acpi on --ioapic on
VBoxManage modifyvm PD --memory 512
VBoxManage modifyvm PD --usb off
VBoxManage modifyvm PD --chipset piix3 # ich9 is only for their UEFI implementation
VBoxManage modifyvm PD --firmware bios
VBoxManage storagectl PD --name "IDE Controller" --add ide --controller ICH6 --bootable on
VBoxManage storageattach PD --storagectl "IDE Controller" --port 0 --type hdd --device 0 --medium Puredarwin-darwin_9.8-version_9L30.vdi
VBoxManage modifyvm PD --natpf1 "guestssh,tcp,,2222,,22" # ssh 127.0.0.1:2222
VBoxManage startvm PD
# ... use it ...
# Should give me a new NetworkInterfaces.plist
# and should get an IP address via DHCP from VirtualBox
sudo ipconfig set en0 BOOTP
sudo ipconfig set en0 DHCP
# Crashes if ich9 is set instead of piix3
VBoxManage controlvm PD poweroff
Rafirafi launched the pcnet32-driver-for-puredarwin project to produce a kext driver for the PCnet Ethernet network card for PureDarwin/Darwin 9. This is a driver for the "PCnet/PCI II 79C970A" card found in QEMU and VirtualBox for a PureDarwin install.
Grab it while it is hot:
Reader Rafirafi sent us source code for a new kext, ClockRTC, and patches that make it possible to use Apple8259PIC-6, AppleI386GenericPlatform-5, AppleI386PCI-6 with PureDarwin on generic hardware (only tested on QEMU). He thinks this will be useful for people who are interested in running Darwin without proprietary kexts. Note, however, that this is not a full ACPI platform kext and it will likely only work on QEMU.
GenericPlatform-1 is available on the Downloads page.
This situation is changing now:
Guillaume Verdeau has released patches to get X.Org running on PureDarwin.
He writes: "Hope it can help you and others. It's now hard for me to find time to improve XDarwin so I give it to you!"
Guillaume notes that there are some things that still need to be worked on, such as acceleration and the keyboard. To be able to build on PureDarwin you will need the old XDarwin keyboard routines that use NXKeymappings.
Sources are available on the PureDarwin download page (still waiting to be integrated into the build scripts in the repository - volunteers?).
A PureDarwin 9 server is up and running (in private, for now - see below).
We have created a custom PureDarwin 9 ISO with the scripts and tools from our repository as described here, installed networking, OpenSSH, Apache, MacPorts, Netatalk, configured Bonjour, even installed TightVNC for graphical applications... set up SpeedStep to save some power... all runing nicely.
Thanks for everyone who has contributed toward making PureDarwin this viable.
At the moment we are looking for a co-location and hardware sponsor so that we can run a PureDarwin 9 server system 24/7 and make available its services publicly.
An updated version of PureDarwin nano has been posted. PureDarwin nano is a minimal version of the Darwin 9 OS that boots into a working bash. PureDarwinNano_20091226.tar.bz2 contains a virtual machine for use with VMware (be sure to assign at least 350 MB RAM). It also contains an ISO that can be used on Intel hardware. You can download it here.
The PureDarwin project is continuing to work on a more complete release of PureDarwin.
It is now possible to add networking to the PureDarwinXmas VMWare image (and possibly any other Darwin installation). See the Network page for full details.
PureFoundation is an attempt to create an open-source, binary compatible substitute for Apple's closed-source Foundation framework. The foundation framework is an essential piece of Mac OS X and has lately also become a dependency of some Darwin projects.
PureFoundation developer Stuart Crook descibes his new project as follows: In many ways it is similar to GNUStep Base (and may even share some of its code one day), but it differs in that it makes use of Apple's own Objective-C 2.0 runtime and AutoZone Garbage Collector (a nice side effect of which is binary compatibility with Mac OS X.) The main purpose of PureFoundation is to get portions of Darwin up and running with as little patching of the original code as possible. Sometimes just having a framework in place called "Foundation" and identifying itself with the correct version strings is enough to spur recalcitrant apps into life. Many functions will be implemented by bridging to Apple's CF-Lite. Many more will be provided thanks to GNUStep. However, it is unlikely PureFoundation will every replicate all aspects of Apple's Foundation, and the project will certainly never stray into AppKit and beyond.
It is hoped that PureFoundation can be used to solve issues like DarwinBuild ticket #49.
For more information on PureFoundation, please see its homepage at
"(...) Most of you will know that the underlying core set of components of Mac OS X and the iPhone operating system are released under the Apple Public Source License, an FSF-approved open source license. Few of you, however, will have actually used Darwin in any other form than Mac OS X or the iPhone OS. Despite numerous projects attempting so, Darwin has never gained any significant traction apart from Apple's own interest. The PureDarwin project tries to rise from the ashes of the OpenDarwin project, and has just released a Christmas developer preview. (...)"
"(...) Being a developer preview, functionality is limited. Most obvious is the lack of networking and user accounts, both of which appear to rely heavily on closed source portions of OS X. However, given the mess that the Darwin code was in as released by Apple — many individual projects would simply not compile, and many of those which did were beset by dependency problems to the point where they were unusable — it is hard to overstate what an amazing job the team has done getting to this stage. The Darwin kernel now boots and launches an X session — the choice of the NeXT-like WindowMaker window manager is a nice touch, although apparently won’t be the future default — from where the few bundled X applications can be run. It’s still early days yet, but there’s every reason to feel enthusiastic about the future of the PureDarwin project."
"(...) The PureDarwin project announces the immediate availability of “PureDarwin Xmas”, a developer preview of the upcoming operating system based on Apple’s Darwin 9 sources and other Open Source projects such as X11. At the same time, the PureDarwin project would like to invite the community to discuss, participate and contribute. (...)"
"Le projet PureDarwin a annoncé la sortie de PureDarwin Xmas, une version développement de ce que sera le futur système d'exploitation basé sur les sources de Darwin 9 et d'autres projets open-source comme X11. Pour l'instant, le projet PureDarwin invite la communauté à discuter, participer et contribuer autour de ce projet. (...)
"(...) Die Xmas getaufte Developer Preview von PureDarwin steht als vorkonfigurierte virtuelle Maschine (VM) für VMware Fusion 2.0 unter MacOS X zum Download zur Verfügung. Der Quellcode findet sich in einem Subversion-Repository. Mit der Veröffentlichung ruft das PureDarwin-Team auch Interessierte zur Mithilfe auf, um die Entwicklung zu beschleunigen. Apples Open-Source-Unix Darwin ist die Basis von MacOS X. Das Open-Source-Gemeinschaftsprojekt PureDarwin hat es sich zur Aufgabe gemacht, Darwin nutzbarer zu machen und besser zu dokumentieren. Eines der Ziele ist es, ein bootbare ISO-Image von Darwin 9.x zur Verfügung zu stellen, das dem Unterbau von MacOS X 10.5.x ("Leopard") ohne dessen Desktop entspricht. Von einigen wird PureDarwin als indirekter Nachfolger des gescheiterten OpenDarwin gesehen. (...)"
The Open Source community around Darwin is picking up momentum big way: Today, the Xnu-Dev project has released a set of patches for the XNU kernel that powers Mac OS X and other Darwin-based operating systems. The patches greatly broaden hardware support of the XNU kernel, allowing it to run on Pentium M, Pentium 4, Turion 64, Athlon 64 and Phenom. Like the XNU kernel itself, the patches are released under the Apple Public Source License (APSL), which makes them suitable for inclusion in Darwin-based distributions like the one the PureDarwin project is working on.
Darwin is the Open Source foundation of Mac OS X. Voodoo Labs is a group of contributors who work on the source of the XNU kernel, the core of Darwin. PureDarwin is a project to make Darwin more usable by providing installation media, documentation and add-on software.
For more information on the XNU kernel patches, see