News‎ > ‎

New PureDarwin 1.3 beta release

posted Dec 15, 2012, 8:54 AM by probono   [ updated Dec 16, 2012, 6:14 AM ]
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:


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

Please come to IRC (#puredarwin at, where I'm 'dtm') to discuss your findings and to give rafirafi your thanks!

Release notes

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 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 BSD:
From Zenith432 / VMware:
From Stuart Crook:
purefoundation : Cf
From opencflite:
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.
From cauldrondevelopement:
osxbom : for now just lsbom, a reimplementation of the utility of the same name. Here for using with macport binary package.
From hnak:
AppleIntelE1000.kext : driver for the e1000 netwok family cards ( ), 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 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.

Graphics :
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 :

Security :
there is no opensource CSP, perhaps it's possible to use openssl...

XCode dependency :
It means porting every project to use a Makefile...

Running with VirtualBox

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
VBoxManage startvm PD

# ... use it ...

rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist 
rm /Library/Preferences/SystemConfiguration/
# Should give me a new NetworkInterfaces.plist 
# and should get an IP address via DHCP from VirtualBox
sudo /usr/sbin/sshd

sudo ipconfig set en0 BOOTP
sudo ipconfig set en0 DHCP
# Crashes if ich9 is set instead of piix3

VBoxManage controlvm PD poweroff