七叶笔记 » golang编程 » 真与开源“化敌为友”:微软连自己的 Linux 发行版都有了

真与开源“化敌为友”:微软连自己的 Linux 发行版都有了

与早期相比,近几年微软对开源的态度可谓是“天差地别”。

文章转载:乐字节

曾经的微软,几乎视开源为“仇敌”:

  • 微软前 CEO 史蒂夫·鲍尔默在采访时表示,开源是微软的头号劲敌;
  • 微软前首席软件设计师雷·奥兹也曾说,开源对微软公的商业模式具有潜在的杀伤力;
  • 发布过 Windows 和 Linux 之间的对比广告,夸自家 Windows 省时省心的同时,拉踩 Linux 的维护需要巨大成本。

如今,微软拥抱开源的举措却比比皆是:

  • 推出 WSL 并升级至 WSL 2(Windows Subsyste for Linux),使用户能在 Windows 10 上运行原生 Linux 二进制可执行文件;
  • 发布了面向 Linux 版的 Edge Chromium 浏览器;
  • 发布了开源的 Visual Studio Code 编辑器。

这还不止,微软甚至连自己的 Linux 发行版都有了:近日,微软发布了其内部 Linux 发行版CBL-Mariner 1.0(Common Base Linux),并已开源至 GitHub()。

WSL 2 团队创建,用于微软内部工作

微软 Azure 团队成员 Juan Manuel Rey 在博客上分享了 CBL-Mariner 的细节概要。

首先需要明确的一点是,CBL-Mariner 与 Ubuntu 或 Fedora 那样的通用 Linux 发行版不同,它仅是一款微软用于云基础架构和边缘产品和服务的内部 Linux 发行版。虽已开源,但并没有提供 CBL-Mariner 的 ISO 镜像。

据介绍,CBL-Mariner 由 WSL 2 的同一团队创建,旨在为微软的云基础架构和边缘产品和服务提供统一的平台,简化 Linux 系统维护,增强与 Linux 保持同步更新的能力,同时也是微软对 SONiC、Azure Sphere OS 和 WSL 等各种有关 Linux 技术不断增加投资的一种方式。

CBL-Mariner 的设计理念是,用一组小型通用核心包就可以满足第一方云和边缘服务的普遍需求,同时允许各个团队在通用核心上分层附加包,为他们的工作负载生成图像。

关于将 CBL-Mariner 这个内部 Linux 发行版开源的举动,微软表示这是“对开源和回馈 Linux 社区承诺的一部分”,因而开发者可前往其 GitHub 地址 GitHub – microsoft/CBL-Mariner: Linux OS for Azure 1P services and edge appliances 自行安装体验。

如何安装 CBL-Mariner ?

Juan Manuel Rey 在其博客上展示了 CBL-Mariner 的安装过程。不过正如上文所说,微软并没有提供 CBL-Mariner 的 ISO 镜像,因此在安装 CBL-Mariner 时,开发者可通过Ubuntu 或其他 Linux 发行版构建自己的镜像,以下是通过 Ubuntu 的方式:

首先,确保构建 ISO 镜像所需的先决条件:

sudo apt install make tar wget curl rpm qemu-utils golang-go genisoimage python2-minimal bison gawk

然后,从 CBL-Mariner GitHub 存储库获取代码:

git clone

随后,进入 CBL-Mariner/toolkit 目录并创建安装 ISO 镜像。

cd CBL-Mariner/toolkitsudo make iso REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/full.json

在这之后,就可以在 ../out/images/full/ 目录中找到 ISO 文件,名称为 full-1.0.20210712.2155.iso。

创建好系统镜像后,开发者可在 VirtualBox、VMWare、Boxes 等虚拟机上安装测试。以下举例在 VirtualBox 虚拟机中的安装步骤(最低硬件配置为 1 个 CPU、2GB RAM 和 16GB 存储空间):

安装前会提供文本或图形模式的选择,由于 Juan Manuel Rey 好奇 CBL-Mariner 是否真的基于 Fedora 的 Anaconda ,因此他选择了图形模式。

安装方式也有两种,仅下载单个软件包的 Core和下载整个系统镜像的 Full。据 Juan Manuel Rey 表示,这两种安装方式都很快,Core 大约需要 29 秒,Full 大约需要 76 秒。在此过程中,它会询问用户、分区等典型参数。

分区配置如下:

最后,输入主机名、用户名和密码,点击“安装”按钮即可。需要注意的是,此用户将具有 root/sudo 权限。

参考了 Fedora 或 Photon-OS

虽然 CBL-Mariner 是作为微软内部 Linux 发行版诞生的,但不可否认,它的确较为出色。CBL-Mariner 会提供一组典型的基本软件包,以充当创建容器填充、主机环境和在云基础设施和边缘设备上运行服务的通用基础。而在 CBL-Mariner 基础之上还可以添加额外的包,用来创建更复杂和专业的解决方案,同时系统的基础保持不变,即简化了维护和升级过程,而 CBL-Mariner 的软件包系统也是基于 RPM 的。

此外,据 Juan Manuel Rey 体验下来,CBL-Mariner 与 Fedora 和 Photon-OS 等其他 Linux 发行版很相似,这一点在 CBL-Mariner 的 GitHub 存储库的致谢部分上就有体现,团队应该使用了 Photon OS 和 Fedora 的 SPEC 文件作为参考。

安全方面,考虑到大多数操作系统都以安全为重点,CBL-Mariner 遵循默认安全原则。CBL-Mariner 带有强化内核、签名更新、ASLR、基于编译器的强化和防篡改日志等众多功能。当出现安全漏洞时,利用通用的 RPM 包管理器系统,CBL-Mariner 会提供最新的安全补丁和修复程序,以实现快速周转时间的目的。

文章转载:乐字节

相关文章