前言:

玩了这么多年的NAS,市面上常见的系统,基本都用过一段时间,这些系统 无论黑的,还是白的,都有一些限制,所以没有办法只有自己打造适合自己需求的系统才是最好的。

在我尝试基于一些常见发行版的系统之后,最终我选择了Ubuntu作为我心中比较理想的基础系统,然后在这个基础上搭建自己需要的功能,在这里我把搭建遇到的问题和方法记录下来方便我,或者其他有一样想法的小伙伴使用。

选了好久的版本,最终选择了Ubuntu22.04桌面版,在这个基础上,需要搭建docker(容器),kvm(虚拟机),LXC(容器),以及根据当前硬件部署nVidia Tesla P40的VGPU搭配虚拟安装例如Parsec等远程串流软件做自己的私有云游戏。

在组件选择上我选择了cockpit 来管理服务器,docker选择使用官方的compose插件,lxc就是纯命令使用了,毕竟没多少需要记的如果忘记了可以用-help 来看帮助文档。

没有动手能力,对Linux不了解或者不了解nas能给自己带来什么的,就不用往下看了可以直接关闭本页面了。

教程:

基础系统,安装过程就不在这里写了,网上很多关于ubuntu的安装教程。

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/获取旧版本归档

到此内核更换成功!

ZFS安装因为ubuntu22的源给的版本不是很老旧,如果采用编译后期升级可能会偏麻烦,所以这里就直接用源安装了。

apt-get install zfsutils-linux zfs-dkms -y

这里因为我们更换了内核,如果不添加dkms会导致zfs内核mod无法正常被安装。

virt-manager 主要的功能是用来创建虚拟机,修改虚拟机配置。

这里也是用源来安装,相对简单 22.04版本的源给的版本也不是很低所以直接拿来用了,如果要是手动编译,emmm那个组件会让人崩溃的。

apt-get install virt-manager -y

安装完成后重启一下系统,否则有一些组件启动不正常。

virsh version

能看到上面的内容就表示完成了。

在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地址。

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或者注释

在安装docker之前,可以更换中科大的源,更换完成后在安装docker,速度能快一些,如果内网有良好的国际网络,我个人还是更建议使用官方源。

curl -sSL https://get.docker.com | sh

这个是官方脚本,脚本内包含docker compose所以安装完成后 就可以直接用了,至于使用文档,可以访问docs.docker.com 学习。

lxc 和docker 一样 都是容器,但是玩的人不多,相比docker熟知度在大众面前偏弱,但是不否认LXC 也是很好用的,这里是通过snap 安装lxd至于lxc和lxd啥关系,大家可以百度查询,我这里就部瞎逼逼了。

snap install lxd

安装完成后,使用命令初始化lxd

lxd init

因为写教程的时候我的lxd 已经初始化过,所以图片没有保留下来,图片等以后有机会在补把。

这部分内容主要是解决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

结尾:

以上的功能,只是我在使用的时候搭建的过程,当然有些功能大家用不到,就可以不安装,对需要的功能进行安装就可以了,教程只是个玩法的引导,但是随着版本更新,软件更新,可能会出现些许变化,教程也是有时效性,如果有问题可以来qq群咱们一起交流。

发表回复

后才能评论

评论(5)