前言:
玩了这么多年的NAS,市面上常见的系统,基本都用过一段时间,这些系统 无论黑的,还是白的,都有一些限制,所以没有办法只有自己打造适合自己需求的系统才是最好的。
在我尝试基于一些常见发行版的系统之后,最终我选择了Ubuntu作为我心中比较理想的基础系统,然后在这个基础上搭建自己需要的功能,在这里我把搭建遇到的问题和方法记录下来方便我,或者其他有一样想法的小伙伴使用。
选了好久的版本,最终选择了Ubuntu22.04桌面版,在这个基础上,需要搭建docker(容器),kvm(虚拟机),LXC(容器),以及根据当前硬件部署nVidia Tesla P40的VGPU搭配虚拟安装例如Parsec等远程串流软件做自己的私有云游戏。
在组件选择上我选择了cockpit 来管理服务器,docker选择使用官方的compose插件,lxc就是纯命令使用了,毕竟没多少需要记的如果忘记了可以用-help 来看帮助文档。
没有动手能力,对Linux不了解或者不了解nas能给自己带来什么的,就不用往下看了可以直接关闭本页面了。
教程:
基础系统,安装过程就不在这里写了,网上很多关于ubuntu的安装教程。
[ri-accordions title=”更换内核”]
Ubuntu的官方内核缺少ACS拆分,在有些机器上需要拆分设备方便直通,所以这里我们需要更换内核,这里我使用的内核是xanmod。
这个内核有很多的特性,比如队列算法,BBRV3等等当然ACS也包含,但是这里我们安装的版本是5X版本的内核,因为6的内核有些软件不太兼容,当然这个不兼容会随着时间被优化,这里只是文章发布日期。
###添加key wget -qO - https://dl.xanmod.org/archive.key | sudo gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg ###添加源 echo 'deb [signed-by=/usr/share/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org releases main' | sudo tee /etc/apt/sources.list.d/xanmod-release.list ###更新 apt-get update -y ###源查找需要的内核 apt-cache search linux-xanmod ###安装我们需要的内核和headers apt-get install linux-headers-5.15.95-xanmod1 linux-image-5.15.95-xanmod1 ###安装内核后我们需要卸载掉其他内核只保留我们的需要的内核 ###使用dpkg命令查询系统安装的内核 dpkg -l | grep linux-image ###卸载内核 apt-get remove --purge 内核版本 ###这里需要有个空格加上上一个命令查询的到的内核版本 ###卸载Headers 过程与卸载内核一样 用dpkg查询内核 用apt命令卸载就可以了,不在重复赘述 ###重启系统查看是否生效 reboot ###查看当前内核版本 uname -r注意!如果内核没有我们想要的版本,说明在线源没有了,可以去https://xanmod.org/获取旧版本归档
到此内核更换成功!
[/ri-accordions]
[ri-accordions title=”安装ZFS”]
ZFS安装因为ubuntu22的源给的版本不是很老旧,如果采用编译后期升级可能会偏麻烦,所以这里就直接用源安装了。
apt-get install zfsutils-linux zfs-dkms -y
这里因为我们更换了内核,如果不添加dkms会导致zfs内核mod无法正常被安装。
[/ri-accordions]
[ri-accordions title=”安装 virt-manager”]
virt-manager 主要的功能是用来创建虚拟机,修改虚拟机配置。
这里也是用源来安装,相对简单 22.04版本的源给的版本也不是很低所以直接拿来用了,如果要是手动编译,emmm那个组件会让人崩溃的。
apt-get install virt-manager -y
安装完成后重启一下系统,否则有一些组件启动不正常。
virsh version
能看到上面的内容就表示完成了。
[/ri-accordions]
[ri-accordions title=”增加网桥 netplan”]
在ubuntu22.04的版本,网络配置使用的是netplan,后期lxc的网桥需要们手动创建一个,为装lxc提前做一个准备。
使用命令获取到你的网卡名字
ip addr
进入netplan的配置文件路径
cd /etc/netplan
查看当前路径的文件
ls -la
备份当前配置文件
cp -rv ./01-network-manager-all.yaml ./01-network-manager-all.yaml.bak
清空01-network-manager-all.yaml文件内容
echo "" > ./01-network-manager-all.yaml
!注意红色的内容请替换成你的文件名字!
修改01-network-manager-all.yaml文件
nano ./01-network-manager-all.yaml
把下面的内容,红色区域按照你内部网络进行修改。
network: version: 2 renderer: NetworkManager ethernets: enp65s0: dhcp4: no bridges: br0: dhcp4: no addresses: [192.168.1.3/24] nameservers: addresses: [192.168.1.25] interfaces: [enp65s0] routes: - to: 0.0.0.0/0 via: 192.168.1.1 metric: 100
如果不想使用静态地址,可以在把br0下面的dhcp4 后面的no 改为yes然后删除dhcp4下面的所有内容。
生效配置
netplan apply
如果是静态配置,在输入netplan apply后网络就会断开,请用新的静态地址访问,如果是dhcp自动获取 输入netplan apply之后需要去路由器后台重新查看新的ip地址。
[/ri-accordions]
[ri-accordions title=”安装cockpit” show=”0″]
Ubuntu22.04.03的源提供的cockpit 版本是264,如果需要zfs插件就不要再高了,因为zfs插件太长时间没有维护,版本高了之后zfs插件有页面显示的问题,所以这里用源安装,如果有特殊需求可以去GitHub编译安装自己最新的版本。
apt-get install cockpit cockpit-machines
这里cockpit-machines是kvm 虚拟机的管理工具,源版本的也偏老,如果需要新版本也可以去GitHub搜索cockpit-machines找到最新版本的编译安装。
cockpit还有很多插件,这里我贴一个app商店页面(勉强算得上是)搭建根据自己需求扩展cockpit的功能。
Applications — Cockpit Project (cockpit-project.org)
ubuntu22的源是264的版本没有这个限制,22以后的源cockpit是285的版本,默认是禁止root登录的,如果不喜欢可以关闭掉
. /etc/os-release sudo apt install -t ${VERSION_CODENAME}-backports cockpit
默认情况下,/etc/cockpit/disallowed-users默认禁用root登录,因此,如果您想允许root登录,则需要从该文件中删除root或者注释
[/ri-accordions]
[ri-accordions title=”安装docker”]
在安装docker之前,可以更换中科大的源,更换完成后在安装docker,速度能快一些,如果内网有良好的国际网络,我个人还是更建议使用官方源。
curl -sSL https://get.docker.com | sh
这个是官方脚本,脚本内包含docker compose所以安装完成后 就可以直接用了,至于使用文档,可以访问docs.docker.com 学习。
[/ri-accordions]
[ri-accordions title=”安装lxc并初始化”]
lxc 和docker 一样 都是容器,但是玩的人不多,相比docker熟知度在大众面前偏弱,但是不否认LXC 也是很好用的,这里是通过snap 安装lxd至于lxc和lxd啥关系,大家可以百度查询,我这里就部瞎逼逼了。
snap install lxd
安装完成后,使用命令初始化lxd
lxd init
因为写教程的时候我的lxd 已经初始化过,所以图片没有保留下来,图片等以后有机会在补把。
[/ri-accordions]
[ri-accordions title=”配置iptables”]
这部分内容主要是解决lxc 和 docker网络互相冲突的问题,如果不解决,就会导致lxc 容器无法通过bridge获取到ip。
apt-get install iptables -y
安装iptables之后输入命令增加规则。
iptables -I DOCKER-USER -i br0 -o br0 -j ACCEPT
这里注意br0的位置如果是你按照我的教程创建的网桥那么就直接复制粘贴,如果bridge的名字不是br0 你需要自行修改命令。
apt install iptables-persistent -y
iptables-persistent是一个开机重新载入iptables规则的工具,因为我们写入的规则重启后就消失了,所以我们需要使用iptables-persistent来开机重新载入。
安装的时候会提示时候保存V4 和V6规则,直接全部YES即可,如果没有V6需求你可以选NO
[/ri-accordions]
结尾:
以上的功能,只是我在使用的时候搭建的过程,当然有些功能大家用不到,就可以不安装,对需要的功能进行安装就可以了,教程只是个玩法的引导,但是随着版本更新,软件更新,可能会出现些许变化,教程也是有时效性,如果有问题可以来qq群咱们一起交流。
请登录后查看评论内容