这个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个包即可),输出如图。
3.个人吐槽
根据自己的想法用了下CBL-Mariner,感觉这个发行版确实不是用于传统桌面或者服务器环境的。它的轻量级特性挺适合用来跑容器,由于加载的服务不多,所以运行起来速度相对快一些,而且安全性也会稍微好些。
总之对于我这种业余用户来说,还是继续用那些主流的发行版吧(笑)。
0 Comments