Why Doesn't Apple Use The Linux Kernel For Mac
Well, a few days ago, I was reading, and two things struck me. First, the following sentence: Not only is iOS based on Unix, but Android and MeeGo and even Bada are based on Linux as are QNX and WebOS. Right doesn’t belong there. Technically, linux is only the kernel, not the entire OS. And with QNX, exactly the kernel is the thing that is rather unique. It is a real-time microkernel, which has nothing to do with the linux kernel.
Sure, from the outside the OS as a whole looks similar to linux, but then again, so do all Unix-like OSes. I also see that with regards to MacOS a lot. People seem to think that it is based on linux. Which it isn’t. MacOS has its own kernel, called XNU. The rest of the OS is also not entirely like a linux distribution. Namely, where linux distributions generally are based on the FSF GNU software distribution for the ‘world’, MacOS stems from Darwin, which in turn is based on BSD, and only certain parts are taken from the GNU world (such as the GNU Compiler Suite).
The differences are very small, the software mostly looks the same from the outside, but the origins of Darwin and BSD are different, as is the licensing (obviously). I find it a bit strange that linux seems to have become equivalent to any Unix-like OS, in the minds of a lot of people. As for the second thing The argument is made that Unix/linux is very modular in nature, and that’s why it scales well from low-end/embedded hardware to high-end. Okay I agree with that in part, but I think ‘modular’ isn’t the right word. I think it’s more a side-effect of the fact that the source code is available, so everyone can mix-and-match their own kernel and distribution, stripping it from extra overhead (pretty much the opposite of what the author claims).
Then the argument is made that this is not possible with Windows. This I do not agree with. While Microsoft does not really pursue this (although they do have embedded versions of Windows, eg for thin clients), I don’t see why you couldn’t do the same with Windows as you can do with linux, if you have access to the source code.
Namely, if we take a regular linux desktop distribution, such as Ubuntu, it’s going to take quite a powerful machine to run it properly out-of-the-box. The system requirements are pretty much identical to Windows 7. If you go back into the past, when linux still ran on 386/486 machines then you’ll see that the UI was a lot simpler, and the functionality was a lot more limited as well. However, since the main APIs such as the POSIX system libraries and the X Window System have always been used, even such old/stripped down distributions of linux will be able to run most applications with little or no modifications.
Why Doesn't Apple Use The Linux Kernel For Mac Mac
The same also goes for Windows. Windows NT started out in the early 90s, at about the same time as the early linux kernels.
Windows NT originally also ran on 386/486 machines, and system requirements were quite similar to linux at the time. And like with linux, most of the Windows API was already present in those early versions of NT (and a lot of it even before that, with the 16-bit DOS-based versions of Windows). I would say that most applications probably really don’t need any more than the original NT 3.51 or NT 4.0 API. It already contains everything you need for a UI, networking, file access, and all that.
So I think it’s very much possible to strip down Windows while still being able to run most applications I think however that this may be more theoretical for Windows than for linux, because the Windows ecosystem is different. Many applications will be more dependent on newer OS features, although they could technically be implemented easily without them.
Obvious examples would be things such as.NET, (new versions of) DirectX or Internet Explorer. Zx81 emulator for mac os. These aren’t available on older versions of Windows, and will be difficult to run on low-end systems even if Microsoft would make them available. But back in the NT4.0 days we also had pretty much all the same applications as we have today, just simpler and older versions of them, and back then they ran fine on a 486 or Pentium system. So it’s not like the Windows OS and the API itself is inherently very resource-demanding. And in a way, the embedded versions of Windows also exemplify that. They implement a large part of the Windows API, but instead of just taking the existing Windows kernel and codebase, Microsoft has made a separate lightweight implementation of the OS. I don’t think they HAD to do that (Windows NT started on machines less powerful than your average phone today, and NT was deliberately developed on non-x86 machines, to ensure portability.
As such, NT was also available on a variety of architectures, including x86, Alpha, MIPS, PowerPC and Itanium), they probably just thought it was the better way. Beeep – WRONG!
The original Mac OS was a custom, proprietary OS that had nothing to do with either Unix or Linux. The current Mac OS has a.kernel. that is derived.in part. from BSD Unix, but also from NeXT and other sources. Mac OS is layered on Darwin which uses the XNU kernel, and guess what XNU stands for?
“X is not Unix”, that’s what. It’s Unix-compatible, POSIX-compliant, and has the standard Unix command-line tools, but none of that makes it Unix.
The Mac UI has absolutely nothing to do with either Linux or Unix.
Note it looks like it's for developing drivers to run on embedded ARM devices in silicon validation. I'm at least as uninformed as anybody here, but that has lots of non-earth-shaking interpretations. If you have, say, a farm of little ARM-driven devices that you use as test harnesses for chips or other hardware, it isn't necessarily cheaper to port whatever variation of xnu to this particular hardware than to use an existing port of Linux and hire some folks who can help with the low level I/O bits. There might even be Linux in your world because, e.g. An acquired company built something on it that hasn't been worth porting. Or any of a ton of other possibilities.
Having an OS doesn't mean you have to use (variations of) it for everything, especially if the new use you're thinking about is far from your usual. My response was just to counter the common misapprehension that macOS itself is built on a FreeBSD userland. It's NetBSD, and devices like the AirPort Extreme/Time Capsule use NetBSD directly.
And, back when the iTunes Store was a WebObjects service, it was hosted on Xserves running a weird reverse-Darwin (i.e. A Darwin-shimmed userland atop a NetBSD kernel, because macOS itself wasn't yet performant enough to be a good server but they still needed WebObjects to run.) These days, Apple's datacenters are running all sorts of things, including Darwin, Linux, Solaris, and AIX1. But the 'Darwin' part is still essentially NetBSD, not FreeBSD.
My response was just to counter the common misapprehension that macOS itself is built on a FreeBSD userland. I don't think most people say that macOS is built on top of a FreeBSD userland. Most people rightly point out that there is a lot of FreeBSD code inside the macOS code base specifically the XNU kernel1. But the 'Darwin' part is still essentially NetBSD, not FreeBSD.
That's incorrect while there is NetBSD code in MacOS. Dismissing the FreeBSD code, the Mach code, the code Apple wrote and saying that Darwin is essentially NetBSD is extremely disingenuous2.
I believe Linux (the kernel) has one of the most productive, QA production lines out there. If Apple were to adopt the 'Linux way', we may indeed see a change. On the other hand, it may work against us, having Apple involved in Linux things. I'm not sold either way - but I sit here, re-installing MacOS on two Macbook Pro's, both of which absolutely refuse to make a usable/safe disk image out of their own disks. This is such a frustrating conundrum, it feels like Solaris in the 90's.
Why Doesn't Apple Use The Linux Kernel For Mac
I can only hope something changes at Apple, or else I'm just going to wipe MacOS and put Linux on these machines. That is quite a watershed, imho.
Why Doesn't Apple Use The Linux Kernel For Mac Windows 10
Yes, I've done it and Disk Utility doesn't think there's anything wrong. But yet, I've tried over and over to make a disk image - of different disks, even - and every single time I get the error 'no usable disk image found'. At this point, after having scoured the web for clues, I can only conclude: this is a bug in MacOS. I'm now trying to do a full update to the latest release, and see if it works beyond that point - but if it doesn't, the good ol' tarball approach is all I've got left. I think Apple has some QA issues.