Linux Fill
Linux Fill

Linux Fill

Microsoft’s “CBL-Mariner” Linux distro installation and overview

Microsoft is taking a deep dive into the Linux operating system world. This exploration has led to the development of CBL-Mariner, a new open-source Linux distro. Here is our overview and installation process

t is not every day that you hear of one operating system having a vested interest in another operating system’s domain. In this case, Microsoft is taking a deep dive into the Linux operating system world. This exploration has led to the development of CBL-Mariner,  a Linux operating system distribution operating under the umbrella of Microsoft.  The release of this distro is under the MIT license (open-source).

CBL-Mariner is a Github-hosted repository. An official statement from Microsoft describes this Linux distribution as Microsoft’s edge products and services and cloud infrastructure-oriented internal Linux distribution.   Two primary objectives propelled the development of this Linux distribution. First, its design catered to providing a consistent platform for Microsoft’s growing number of devices and services.

Secondly, the open-source nature of Linux distributions has made it not only a reputable platform but also a growing one. Therefore, this Microsoft-owned distro is the perfect opportunity to keep tabs on what is happening in the Linux world through their growing updates.

The first report that dismissed CBL-Mariner as a secret and brought it into the limelight took place in November 2020. CBL-Mariner had become confirmed hot news early this month when the Microsoft engineering team released an easy-to-follow installation guide regarding this Linux distribution. All that you need is a little Linux confidence to conquer the easy installation steps confidently.

We can confidently conclude that the Linux operating system footprints are dynamic enough to be considered worthy allies by other major operating systems like the ones under Microsoft.

A closer look at CBL-Mariner

The abbreviation “CBL” in CBL-Mariner translates to “Common Base Linux”. Microsoft’s Linux System Group is responsible for its creation or development. The same development team worked on Windows Subsystem’s Linux kernel dedicated to WSL 2 (Linux version 2). The primary developmental objective behind CBL-Mariner is for Microsoft’s engineering teams to adapt it to an internal Linux distribution functionality.

Achieving this objective paves the way for the creation of Microsoft’s edge products and services in addition to cloud infrastructure development. The existence of CBL-Mariner under a Github repo grants it an open-source badge. However, accessing this public repo does not grant a user an ISO file or an image like when dealing with other Microsoft products.

The instructions attached to the repo will guide anyone into creating their own builds from scratch, especially if you are under an Ubuntu Linux distribution like 18.04 or later. The same Github page that hosts CBL-Mariner also avails a series of needed prerequisites like Golang, RPM tools, ISO build tools, and Docker.

The approach or build process for creating the needed ISO file is direct. You will need to rely on pre-compiled RPM packages. You can access them from CBL-Mariner’s package repo. The option of creating an ISO file for CBL-Mariner also depends on the targeted installation platform. For example, if you use a platform like the vSphere 7  homelab, you will take the following command-line approach to create your CBL-Mariner ISO file.

git clone
cd CBL-Mariner/toolkit
sudo make iso REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/full.json

CBL-Mariner installation process

Depending on your current environment, you could choose to create some new VMs and set their associated guest operating systems to Linux (64 bit) versions 5.x or later. These configuration settings comfortably apply to a vSphere lab environment. As for the hardware requirement, a 16 GB disk storage, 2 GB RAM, and 1 vCPU should suffice. These requirements comfortable create an ideal environment for installing and testing CBL-Mariner.

Once you create and boot into the CBL-Mariner ISO file or image,  a text-oriented or graphical-oriented interface or mode will guide you through the needed installation process and its attached options. It would be best to always go with the graphic mode unless you are not a newbie to the Linux command line.

As for the installation type, you will have to choose between Core and Full installation. Whichever choice you make, both installation types are reasonably fast. Core installation averages at 29 seconds, while full installation averages at 76 seconds.

The CBL-Mariner installation process is interactive. Along the way, you will need to provide some typical parameters like partitioning and user associated with the system.

CBL-Mariner Overview

The feel you will get, or one you should expect from your interaction with CBL-Mariner, is very similar to those under Linux distros like Photon-OS and Fedora. This stride is no coincidence. The team behind CBL-Mariner even gives credits to Fedora and Photon-OS in the Github repo’s acknowledgment section.  These Linux distros SPEC files created valid references and starting points for the development of CBL-Mariner.

As expected in any other modern Linux distribution, CBL-Mariner has also borrowed “systemd” as its system manager. Therefore, accessing your CBL-Mariner installation is also viable through the system console. It is easy if your operating system environment has an SSH daemon installed. If not, you can use the “tdnf” package manager to install it through your primary console to access the Mariner VM.

sudo tdnf install -y openssh-server
sudo systemctl enable --now sshd.service

CBL-Mariner package and update system

The package system under CBL-Mariner is RPM-based. As for the package update system, both tdnf and dnf are viable package managers. The tdnf or tiny dnf package manager has its basis on dnf with a direct derivative link from VMware’s Photon OS.

RPM-OSTree is the approach used by CBL-Mariner to accomplish atomic servicing and rollback as supported image-based system update mechanisms. Also, this approach is directly linked with OSTree on top of being an open-source tool. It is effective in managing versioned, immutable, and bootable filesystem trees.

The developmental objective behind the existence of rpm-ostree sorted to create a client-server architecture. Thus, the associated Linux hosts would remain updated and be synchronized to access and install the latest packages releases.

Two configured system package repositories, “update” and “base,” are available on this operating system through the following console command.

How to Correctly Shut Down Your Raspberry Pi

What can happen if you Don’t shut if down correctly or you lose power?

One thing you never want to do : There are many reasons why pulling the power cord while your operating system is still running is not a good idea.

Firstly, by pulling the power cord out early or if you loose power, you heighten the risk of your SD card becoming corrupt.

Secondly, anything that is running will not make a graceful exit and save. This forced exit may cause data loss depending on what your Raspberry Pi was doing at the time.

There are more issues that can arise from removing the power cord without first shutting down the operating system, but I am sure you get the point. Incorrectly shutting down the Pi can cause issues.

Luckily shutting down the Raspberry Pi is extremely easy, just see below for all the steps on how to do it correctly.


sudo shutdown -h now

It will do the following process to ensure the operating system shutdowns gracefully.

  1. It will send SIGTERM to all the running processes, so they can save and exit gracefully.
  2. After an interval, it sends SIGKILL, so that any remaining processes will be halted.
  3. Lastly, it will unmount all the file systems.
  4. The screen will now show System Halted.
  5. You can now remove the power cord with minimal risk to your Raspberry Pi and the operating system.
  6. To start the Raspberry Pi simply plug back in the USB power cord.

Leave a Reply

Your email address will not be published. Required fields are marked *