CBL-Mariner使用体验

发布于 2022-02-15  765 次阅读


这个CBL-Mariner是微软自家做的发行版,大概是去年(2021年)的时候在GitHub上公开的。

当时微软没有提供现成的ISO安装镜像,想要体验的话必须自己编译。不过目前(2022年2月),已经有官方的ISO可供下载了。

那就整个虚拟机来看看微软做的发行版长啥样呗。

1.发行版介绍

Readme说CBL-Mariner是微软用于自家云基础设施以及边缘平台的轻量级发行版。

根据我的理解,CBL-Mariner应该和Photon OS类似,面向的使用环境主要是容器。都叫Mariner了,配个Kubernetes肯定没毛病(?)

所以把它当作常规的Linux服务器发行版把玩大概不能获得特别舒适的体验。

CBL-Mariner使用的包管理器是RedHat系常见的dnf以及Photon OS改的tdnf。顺带一提,发行版中的yum命令是链接到tdnf上的。

至于其他的特点嘛,还是先装个虚拟机边试边发现吧。

项目地址:https://github.com/microsoft/CBL-Mariner

安装镜像:https://aka.ms/mariner-1.0-x86_64-iso

2.折腾记录

2.1.安装系统

这次使用的虚拟化环境依旧是vSphere,ESXi版本是终于把之前几个大bug修复好的7.0U3c。虚拟硬件配置采用的都是默认值。

由于VMware的鼠标模拟问题,使用图形安装程序操作时鼠标漂移严重,所以我用的是终端安装程序。

终端安装的流程和其他Linux的安装流程类似,大致流程是:看一遍EULA->硬盘分区及加密->设定主机名->创建sudo账号。时区需要在安装完成后再自行修改。

安装速度很快,两三分钟就能装好。

硬盘分区时文件系统只有ext4(以及用于EFI的fat32和基本不可能用的ext3)可选,所以root目录就只能格式化成ext4。

2.2.设置网络

CBL-Mariner使用systemd-networkd服务对网络进行管理。/etc/systemd/network目录里面有个默认的DHCP配置文件。

测试环境的网络没有DHCP,因此要手动创建一个优先级高一点的.network配置文件,给网卡设置个静态地址。

ip link看一下虚拟机的网卡名称。这里显示的是eth0。(竟然不是惯例的ens192……)

知道了设备名称,那就可以创建配置文件了。按照个人习惯把优先级设置成20。

sudo vim /etc/systemd/network/20-eth0.network

i进入编辑模式,然后开始敲击键盘。

[Match]
Name=eth0

[Network]
Address=10.2.3.3/8
Gateway=10.254.254.254
DNS=10.254.254.254
DNS=223.5.5.5
DNS=223.6.6.6

编辑完成后按Esc退出编辑模式,输入:wq保存。

新建的配置文件默认权限是640,需要给其他用户加个读权限,让systemd-networkd服务正常读取。

sudo chmod 644 /etc/systemd/network/20-eth0.network

重启systemd-networkd,让新建的配置文件生效。

sudo systemctl restart systemd-networkd

这时用ip addr show eth0命令查看,就能看到网卡已经配上了设定好的静态地址了。

当前(2022年2月)的CBL-Mariner预装并且默认启动了OpenSSH服务端,网络通了就可以SSH连接到虚拟机上操作了。

2.3.修改时区

在安装系统时没法设置时区,那就只能装好后再改了。对于这个测试虚拟机来说反正改不改都没啥影响。

sudo timedatectl set-timezone Asia/Shanghai

改完立即生效,通过date命令可以看到时区已经改成了CST。

2.4.安装VMware Tools

Mariner源里面就有open-vm-tools的包,直接通过tdnf安装就行。

sudo tdnf makecache fast && sudo tdnf install open-vm-tools -y

安装完成后需要手动启动vmtoolsd服务并且将该服务设置为自启动。

sudo systemctl start vmtoolsd
sudo systemctl enable vmtoolsd

服务启动后,在vCenter中就能看到VMware Tools的状态变成“正在运行”了。

2.5.花式使用EPEL

Mariner源里面的包不是很多,想要装个screen都要自己编译。

有想到添加EPEL源,但是CBL-Mariner并不是与RHEL兼容的发行版。通过nodeps选项强行安装epel-release包后也不能正常使用。

虽然没法添加源,但是把EPEL中的RPM包下载到本地后安装是没问题的。

反正是测试环境,就这么凑合着玩玩吧。(生产环境肯定是不能这么操作的,强行使用发行版不支持的源出现问题就只能自行摸索解决办法了。)

首先把screen下载下来。

wget https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/s/screen-4.6.2-12.el8.x86_64.rpm

先尝试安装一下,看看需要什么依赖。

sudo rpm -ivh screen-4.6.2-12.el8.x86_64.rpm

安装时提示需要libcrypt和libutempter这2个依赖。前者可以用Mariner源中的libxcrypt代替,后者可以从RHEL及其兼容发行版的BaseOS源中找到。

总之先把依赖装上,然后再安装screen就能够正常装上了。

sudo tdnf install libxcrypt -y
wget https://dl.rockylinux.org/pub/rocky/8/BaseOS/x86_64/os/Packages/l/libutempter-1.1.6-14.el8.x86_64.rpm
sudo rpm -ivh libutempter-1.1.6-14.el8.x86_64.rpm
sudo rpm -ivh screen-4.6.2-12.el8.x86_64.rpm

步骤是复杂了一些,不过还是比编译安装快一点。

使用和上面一样的方式装了个neofetch(下载并安装catimg和neofetch这2个包即可),输出如图。

CBL-Mariner使用体验

3.个人吐槽

根据自己的想法用了下CBL-Mariner,感觉这个发行版确实不是用于传统桌面或者服务器环境的。它的轻量级特性挺适合用来跑容器,由于加载的服务不多,所以运行起来速度相对快一些,而且安全性也会稍微好些。

总之对于我这种业余用户来说,还是继续用那些主流的发行版吧(笑)。