Microsoft is not the company that it used to be. Steve Ballmer, the then CEO, said in June of 2001 that “Linux is a cancer” [1]. Microsoft tried for years to thwart the open source model and attacked Linux head-on. However, Microsoft mellowed over the years and eventually admitted they were wrong. These days they embrace Linux. Microsoft’s current CEO, Satya Nadella even campaigned that [quote] “Microsoft Loves Linux” in 2015 [2].
Then the Windows Subsystem for Linux WSL was released back in 2016, making it possible to run bash and other Linux stuff on your Windows PC, even going as far as allowing you to run a cut-down version of Ubuntu in a terminal on your Windows desktop. Three years ago, Microsoft made the somewhat surprise acquisition of Github, the popular code hosting and development site. They then went on to port it’s now hugely popular development environment, Visual Studio Code to Linux. In 2019, the Redmond rascal upped the WSL ante with WSL2 and included the Linux kernel right into Windows itself, and then…. a few days ago, Microsoft went all in… They released their own version of Linux. Yes, that’s right, Microsoft made their own FREAKING Linux distro! The oddly titled, CBL-Mariner was released with little fanfare, but it could have huge ramifications for Microsoft, You and/or the Open Source Community. But will these ramifications be positive, or negative?
“CBL-Mariner is an internal Linux distribution for Microsoft’s cloud infrastructure and edge products and services.”, and it continues “CBL-Mariner is being shared publicly as part of Microsoft’s commitment to Open Source and to contribute back to the Linux community.”.
The readme file, available on GitHub [3].
So firstly, what’s with the name? Well, CBL stands for ‘Common Base Linux’, and Mariner, is the codename they are going with for this 1.0 release. Kinda like how ‘Cobalt’ is the codename for the upcoming Windows 11 release.
Now, whilst CBL is available for download immediately from Github, you’ll be hard pressed to find something that constitutes a linux-distro like download. Most of us are well versed with going to websites like ubuntu.com and downloading an .iso image, but no such image is available on the Mariner github site. Instead, at the moment, you need to download a fair few gigs worth of stuff and then run a lengthy build process. In the end, if you follow the steps right, you’ll get an .iso image which you can then boot the installer from.
Under the hood, CBL-Mariner seems to be a hodge-podge of the Red Hat based Fedora Linux distribution, as it uses Red Hat’s popular RPM packages, however it notably also borrows from VMWare’s PhotonOS [4]. PhotonOS introduced the TDNF installer, which is the ‘tiny’ version of Red Hat’s DNF package manager, the replacement for YUM. TDNF is written in C and doesn’t have Python dependencies [5], which makes it more lightweight than DNF in Fedora. Software packages for Mariner can be generated from SPEC files and source files as well.
Microsoft CBL is designed from a minimalist, cloud-ready perspective, and can be deployed as a container or a VM. This makes it sit as a contender to the likes of RedHat’s Fedora CoreOS, RancherOS and Ubuntu Core. It consumes very limited disk and memory resources. Microsoft went on to say that “The lightweight characteristics of CBL-Mariner also provides faster boot times and a minimal attack surface”. Checking the requirements, I found that it is indeed lightweight. 1 CPU, 0.5GB of RAM, and 8GB of disk is sufficient to get it running rudimentary workloads. Now, when I say CBL-Mariner is minimalist, I’m not talking Slackware or Arch with i3wm here, I’m talking zero graphical user interface. In fact, the 2000-odd package software repository for Mariner doesn’t include any graphical applications or X server. That’s totally deliberate, just like the other container/cloud server Linux distros I mentioned a moment ago.
From what can be gleaned, Microsoft is serious about the security of it’s minimalist distro, out of the box, it features tamper-resistant logs, a hardened kernel, address space layout randomization (ASLR), compiler-based hardening, and signed updates.
So what the hell is this all about? Why are Microsoft getting into making distros, especially when there are already plenty of distros out there?
Well, a few reasons:
- It’s probably likely that CBL will replace Ubuntu as the default distro with Windows Subsystem for Linux in the future. That’s not necessarily a bad thing, it’ll mean it’s tightly coupled with Windows, so it will provide all of the necessary services that a developer might want right out of the box.
- The Internet of Things: IOT is the future, so everyone keeps saying. Microsoft are riding this wave of internet integration in a big way, all you need to do is log into Azure to see lots of tutorials about how to use Azure to power your latest IOT product or project. The reality is though, IOT devices, from things like sensors in your fridge, to your toddler’s cot monitor are small, cheap, low-power, low-memory devices. Windows Server in every incarnation, is too big and heavy an operating system to realistically power these devices. It makes perfect sense to have a minimal Linux distro running on these devices, and 99.9% of them already do. Microsoft are betting that isn’t going to change, so this is a perfect way for Microsoft to still have a little control of this market.
- Cloud Services: By far and away, the main reason Microsoft will be making their own Linux distro, is to provide a Microsoft spin for lightweight cloud services. AWS have their own Amazon Linux, which can operate as a minimalist distribution. Rather than having full-fat distributions with all the bells and whistles, when all you need is the kernel and a few choice tools to get an application running, a minimalist distribution is ideal. Especially if you want it to run in a container in the cloud.
There are the naysayers out there, those that still reckon that Microsoft are the enemy, and wish to crush open source and Linux at every pass, and that their current strategy is to bring death to Linux by crushing it with kindness, however, Microsoft’s been making steady contributions to the Linux world since at least 2015, and there hasn’t been anything done particularly to hurt Linux.
Could this hurt Linux? I highly doubt it. Microsoft are rolling-their own distro because it suits Microsoft’s own product roadmap, this is true, but a super-secure, minimalist distro that’s funded by big pockets, if anything, will normalise Linux a bit more, just in the way that WSL did when it brought bash to Windows. We now have developers across the world making cross-platform, open source software and they are able to do it on a Windows PC. Microsoft opened Linux up to a whole new generation of developers (and by extension, consumers), by taking these actions. So surely that can’t be a bad thing.
Recently, Bryan Lunduke said in his ‘Linux Sucks 2021’ video, that the ‘End of Linux is nigh’, [6] and whilst he does make a point that Google’s new operating system (Fuschia), which is being released for IoT devices such as the Nest this year, will over time, draw an audience away from Linux. Just because a few companies are doing their own thing, Linux isn’t going anywhere fast, especially if companies like Microsoft are doubling down on it and going to such efforts as to port software to it, and now roll their own distributions of it!
So what are your thoughts? Are Microsoft out to rid the cancer that is Linux from within Redmond? Or are they spreading their love of Linux across the world in many tiny Linux instances?!
[1] https://www.theregister.co.uk/2001/06/02/ballmer_linux_is_a_cancer/
[2] https://cloudblogs.microsoft.com/windowsserver/2015/05/06/microsoft-loves-linux/
[3] https://github.com/microsoft/CBL-Mariner
[4] https://vmware.github.io/photon/
[5] https://vmware.github.io/photon/assets/files/html/3.0/photon_admin/tdnf.html