So, I’ve been sitting on this one for a few days now, since I decided to let the sensationalist headlines pass by before I took a stab at it. Developer Christina B. has started – and released code for – an amazingly intriguing project: implementing Darwin/BSD on top of the Linux kernel. Just to make this absolutely clear: it’s not her intention to allow iOS applications to run on this new, hybrid system. Let me reiterate: it’s not her intention to allow iOS applications to run on this new, hybrid system. This, however, does not make this project any less interesting.
Magenta implements Darwin/BSD on top of the Linux kernel, and is binary compatible with iOs 5.0 – which doesn’t mean iOS applications can run on it (most of the higher-level frameworks have not been implemented), but that it uses the same binary format. So far, it includes the following libraries: CoreFoundation, libstdc++, libobjc, libc++abi, libicucore, and libncurses. As part of libSystem, the following libraries have also been implemented: libmath, libunwind, libsystem_blocks, and libC.
“All libraries are compiled for vanilla Darwin, so nothing is compiled for Linux. The only exception is libC (which resides inside the dynamic linker) as it serves as the main bridge between the userland and the kernel,” Christina B. explains, “The final goal is probably recreating the iPhone OS 1.0 stack. I think this is a pretty feasible goal, considering the fact that there are so many open source libs that can be used to replace the proprietary libs used by Apple.”
She is very clear about the ability to run iOS applications – it won’t be able to do so, no matter how many headlines you may read to the contrary. “Just think about how much work is required to have a 100% compatible implementation of UIKit or Celestial. HOWEVER, the CoreOS part should be 100% (or 99%) compatible. Just not the higher level OS,” she notes, “If you’re just interested in this because it will ‘run iOS apps’ please go away.”
The project is still in its very early stages, but I like the attitude its developer has towards the project. No grand promises or overly slick websites – just code. Definitely a project to follow.
Where is Puredarwin?
now this is news for osnews
The article mentions (repeated) what the project isn’t designed to do, but I was curious as to what the goal of the project was. I mean, why create a software stack compatible with iPhone 1.0? The project page has this to say:
“This is a very weird project. You may ask, why am I doing this? The answer is: no f*cking idea ”
I think coding for coding’s sake is awesome. That’s great. But I guess I’m surprised someone went to all this trouble without a goal in mind.
Ok, that’s probably the worlds’ best reason why to do anything. As such, I’ll cut her some slack. I personally dislike darwin/bsd userland, but admire the kernel.
Kernel of this project or of darwin/bsd? ;p Assuming the latter – isn’t it some weird mix of Mach and BSD, despite hybridization still with not too stellar performance? (or maybe this bit, that I recall, was just something about the archaic Mac file system)
Edited 2012-06-12 05:56 UTC
I admire the FreeBSD kernel, always have. I never around to looking at the Darwin kernel. Linux isn’t badly designed, IMHO, but it was the second one I really dug into.
Unstable ABI!!
http://omgcheesecake.net/index.php?/topic/2550-linus-rants-about-gn…
So what would you think about this guy: http://dabeaz.blogspot.com/2011/01/porting-py65-and-my-superboard-t… ? Emulator of 30 years old machine, “modem” for connecting sound card and Superboard, storing instances of Superboard (essentially MS Basic) on the net.
Sometimes people has useless ideas. But if they are porting several Python2 modules to Python3 in the process, let them have it. THEY ARE AWESOME. I’ll bet that ios project will provide at least some patches for the Linux kernel.
It’s all a bit beyond my level of understanding. Doesn’t Darwin already have a kernel (XNU/Mach + BSD bits & bobs)? So here we’re having a kernel on top of another kernel? Or is it just a BSD userland on top of a Linux kernel? Or are we talking about multiple userlands here? O_o?
Can someone explain this to me, preferably in grandma-friendly lingo?
I thought Drawing is a kernel (based on March+BSD).
That’s what I thought as well. I mean, that’s what uname says I have on my Mac.
But then I wanted to make sure before I posted, so I checked: http://en.wikipedia.org/wiki/Darwin_%28operating_system%29#…
…and Now I’m even more confuzed, obviously.
Why are you confused?
Darwin is the OS with XNU as kernel.
OS X is Darwin + more.
From my understanding, what she’s doing is implementing some of Darwin’s interfaces and capabilities on Linux. With that you have the kernel. The userland comes from Darwin/BSD.
I wonder if GNUstep’s libraries can be used to fill some gaps…
I think It’s more like Haiku, which is binary compatible with BeOS on top of NewOS kernel. It’s not the same, though
Binary compatible ≠using the same binary format. You need ABI compliance too.
Who needs BSD when you can have LSD!
This seems to be like the reverse of Debian/kFreeBSD, which is the Debian userland on top of the FreeBSD kernel.
This seems to be more than that. Debian/kFreeBSD is “just” Debian on top of kFreeBSD, without significant changes. For example, systemd cannot be used on Debian/kFreeBSD right now because kFreeBSD is missing some stuff that Linux has. A good analogy would be to port those things to kFreeBSD in order for systemd to work, for example. That’s why Magenta (at least for me) looks much harder to accomplish.
Edited 2012-06-11 23:30 UTC
It’s not her intention to allow iOS applications to run, but could it anyway?
If you implement it all I guess so.
If you steal the parts needed maybe? =P
Hmm. I was going to say “absolutely not” but it looks like that may be intended. Not sure.
I like this idea though! IMO one of the real problems with the GNU/Linux userland is lack of cohesiveness on the command line – it’s just a bunch of stuff thrown together, and not everything works with everything else. Mounting as user on the CLI is a mess, power management is a kludge, managing WPA connections is hugely inconvenient and unintuitive… Having a better integrated CLI environment, as with the BSDs (especially OpenBSD), would be a massive improvement.
OTOH, I have to ask, why not just make a Darwin/XNU distribution?
My guess would be for hardware compatibility. Darwin’s kernel is nice, but still has limited driver support. As far as I know, kexts designed for OS X (similar to loaded kernel modules on Linux but more powerful) can’t be loaded on straight Darwin due to their integration with a lot of the OS X API stack. By using the Linux kernel, you’d get more hardware compatibility problems out of the way and free up time to concentrate specifically on the userland. Just my suspician.
Green logotype
Word ‘Magenta’
…
Incredibly stupid.
Sorry, there is OS News, then there is OS News that has hokey news in it.
-Hack