按照 飞牛--OpenWrt-Windows-Ubuntu 的顺序安装4个虚拟机。
1. 安装飞牛
由于要将5块机械硬盘Raid5直通飞牛,提供给整个系统作为存储池,所以先安装飞牛。
1.1 安装
飞牛虚拟机的具体安装过程很简单,不再赘述。下面贴出虚拟机配置:
boot: order=scsi0
cores: 4
cpu: host
cpuunits: 2048
hostpci0: 0000:00:02.0
ide2: none,media=cdrom
memory: 8192
meta: creation-qemu=10.1.2,ctime=1769233815
name: fn
net0: virtio=BC:24:11:E6:30:EA,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: l26
sata0: /dev/disk/by-id/ata-ST6000NM0115-1YZ110_ZADAAKTD,backup=0,size=5860522584K
sata1: /dev/disk/by-id/ata-C400-MTFDDAK128MAM_0000000014190EA161C5,size=125034840K
sata2: /dev/disk/by-id/ata-WDC_WD60EJRX-89MP9Y1_WD-WX31D88FVSYP,backup=0,size=5860522584K
sata3: /dev/disk/by-id/ata-ST6000NM0115-1YZ110_ZADA9MDJ,backup=0,size=5860522584K
sata4: /dev/disk/by-id/ata-ST6000NM0065-1RM11C_ZA100031,backup=0,size=5860766016K
sata5: /dev/disk/by-id/ata-ST6000NM0115-1YZ110_ZADAAZ1W,backup=0,size=5860522584K
scsi0: local-lvm:vm-100-disk-0,iothread=1,size=32G
scsihw: virtio-scsi-single
smbios1: uuid=63dca4cb-ad4d-41a7-a1db-f3b6d5389b31
sockets: 1
tags: fn;vm
vga: virtio
vmgenid: 15e4d4a5-432f-4493-912d-1d1bd5f760c0
CPU 分配4核,host模式。
内存 分配8G,基本够用。
硬盘直通 120G SSD 2.5寸 用来建立存储空间1;直通 5块6T 3.5寸机械组建Raid5 用来建立存储空间2。这部分在下面详细介绍。
直通核显给飞牛。下面详细介绍。
1.2 硬盘直通
查看并记录下来要直通的硬盘 ID。
ls -l /dev/disk/by-id/ | grep ata
lrwxrwxrwx 1 root root 9 Jan 28 06:00 ata-C400-MTFDDAK128MAM_0000000014190EA161C5 -> ../../sdb
lrwxrwxrwx 1 root root 10 Jan 28 06:00 ata-C400-MTFDDAK128MAM_0000000014190EA161C5-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 9 Jan 28 06:00 ata-LITEON_CV5-8Q256_002732100HH4 -> ../../sdg
lrwxrwxrwx 1 root root 10 Jan 28 06:00 ata-LITEON_CV5-8Q256_002732100HH4-part1 -> ../../sdg1
lrwxrwxrwx 1 root root 9 Jan 28 06:00 ata-ST6000NM0065-1RM11C_ZA100031 -> ../../sdd
lrwxrwxrwx 1 root root 10 Jan 28 06:00 ata-ST6000NM0065-1RM11C_ZA100031-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 9 Jan 28 06:00 ata-ST6000NM0115-1YZ110_ZADA9MDJ -> ../../sdc
lrwxrwxrwx 1 root root 10 Jan 28 06:00 ata-ST6000NM0115-1YZ110_ZADA9MDJ-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 9 Jan 28 06:00 ata-ST6000NM0115-1YZ110_ZADAAKTD -> ../../sdf
lrwxrwxrwx 1 root root 10 Jan 28 06:00 ata-ST6000NM0115-1YZ110_ZADAAKTD-part1 -> ../../sdf1
lrwxrwxrwx 1 root root 9 Jan 28 06:00 ata-ST6000NM0115-1YZ110_ZADAAZ1W -> ../../sde
lrwxrwxrwx 1 root root 10 Jan 28 06:00 ata-ST6000NM0115-1YZ110_ZADAAZ1W-part1 -> ../../sde1
lrwxrwxrwx 1 root root 9 Jan 28 06:00 ata-WDC_WD60EJRX-89MP9Y1_WD-WX31D88FVSYP -> ../../sda
lrwxrwxrwx 1 root root 10 Jan 28 06:00 ata-WDC_WD60EJRX-89MP9Y1_WD-WX31D88FVSYP-part1 -> ../../sda1
其中以 ata 开头的即为要直通的6块sata硬盘(注意 sdg 是已经挂载的 USB 外接硬盘不直通),记录下来对应 ID,开始直通操作:
qm set 100 -sata0 /dev/disk/by-id/ata-ST6000NM0115-1YZ110_ZADAAKTD
qm set 100 -sata1 /dev/disk/by-id/ata-C400-MTFDDAK128MAM_0000000014190EA161C5
qm set 100 -sata2 /dev/disk/by-id/ata-WDC_WD60EJRX-89MP9Y1_WD-WX31D88FVSYP
qm set 100 -sata3 /dev/disk/by-id/ata-ST6000NM0115-1YZ110_ZADA9MDJ
qm set 100 -sata4 /dev/disk/by-id/ata-ST6000NM0065-1RM11C_ZA100031
qm set 100 -sata5 /dev/disk/by-id/ata-ST6000NM0115-1YZ110_ZADAAZ1W
如取消直通:
qm set 100 -sata0 none
下面就可以在飞牛中建立存储空间了,如图:

1.3 核显直通
之前用 PVE-Tools 脚本开启核显直通有点问题,最后还是看网上教程手动完成。
1.3.1 修改 grub 启动加载参数
vi /etc/default/grub
找到 GRUB_CMDLINE_LINUX_DEFAULT 项,在默认的 quiet 后添加参数如下:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
更新 grub 配置生效
update-grub
1.3.2 添加模块
vi /etc/modules
在文件末尾添加如下内容:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
kvmgt
1.3.3 添加 pve 启动驱动加载黑名单
vi /etc/modprobe.d/pve-blacklist.conf
在文件末尾添加如下内容:
blacklist i915
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
options vfio_iommu_type1 allow_unsafe_interrupts=1
1.3.4 更新内核
update-initramfs -k all -u
全部完成后重启 pve。
1.3.5 修改飞牛配置
在 pve 界面选择 fn>硬件,双击显示,将显卡由默认改为 VirtIO-GPU

添加 PCI 设备

添加原始设备,在设备列表中找到显卡,这里的 UHD Graphics 630 即为 i5-9500T的核显。

重启飞牛虚拟机。打开飞牛即可看到核显已经直通。

2. 安装 OpenWrt
我选择的是 openwrt-25.12.0-rc2-x86-64-generic-ext4-combined-efi_1.img,大部分常用插件已经安装,软件包更新为 apk 模式。
2.1 创建虚拟机
不使用CD介质。

删除默认磁盘

CPU 给1核,内存 1G 即可。其他默认。
不要马上启动虚拟机,将 OpenWrt 镜像转换为虚拟硬盘。
cd /mnt/udisk/template/iso # 已提前将 OpenWrt 镜像上传至 udisk
qm importdisk <vmid> ./openwrt.iso udisk # vmid 为虚拟机ID,openwrt.iso 为上传的镜像文件名,udisk 表示将虚拟磁盘存放在 udisk
完成后在 pve 界面选择 openwrt 虚拟机 > 硬件,可以看到一个未使用硬盘,双击添加到虚拟机。
控制台启动虚拟机进入 openwrt 。
2.2 设置 root 密码
passwd root
2.3 设置 lan 口 ip
vi /etc/config/network
找到 config interface 'lan' 块,将 ipaddr 设置为想要设置的地址,如:
list ipaddr '192.168.1.102/24'
重启虚拟机。
浏览器中输入 ip 地址打开 OpenWrt,用 root 和刚才设置的密码登录。
2.4 配置旁路由
选择 网络>接口,编辑 lan 口。
常规设置里再次设置好 ipv4 地址和网关:

因为打算设置为旁路由,所以要在DHCP服务器里勾选 忽略此接口。

保存 > 保存并应用。旁路由设置完毕。
2.5 更新系统
给 openwrt 换源:
系统 > 软件包 > 配置 APK,将下面的 /etc/apk/repositories.d/distfeeds.list 内容清空,粘贴下面内容:
https://mirrors.pku.edu.cn/openwrt/releases/25.12.0-rc2/packages/x86_64/base/packages.adb
https://mirrors.pku.edu.cn/openwrt/releases/25.12.0-rc2/packages/x86_64/luci/packages.adb
https://mirrors.pku.edu.cn/openwrt/releases/25.12.0-rc2/packages/x86_64/packages/packages.adb
https://mirrors.pku.edu.cn/openwrt/releases/25.12.0-rc2/packages/x86_64/routing/packages.adb
https://mirrors.pku.edu.cn/openwrt/releases/25.12.0-rc2/packages/x86_64/telephony/packages.adb
https://opkg.cooluc.com/openwrt-25.12/x86_64/packages.adb
https://core3.cooluc.com/x86_64/6.18.4~74ab83c752e112bb2a2e047704cb5ea2-r1/packages.adb
保存,点击 更新列表(也可在 控制台键入 apk update )
在控制台键入以下命令更新系统软件包:
apk upgrade
最后贴出我的 openwrt 虚拟机配置:
boot: order=scsi0
cores: 1
cpu: x86-64-v2-AES
memory: 1024
meta: creation-qemu=10.1.2,ctime=1769353412
name: openwrt
net0: virtio=BC:24:11:52:9F:A1,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
scsi0: udisk:104/vm-104-disk-0.raw,iothread=1,size=1023704576
scsihw: virtio-scsi-single
smbios1: uuid=f050a1f1-31bf-4692-a499-5ddae4397c37
sockets: 1
tags: opt;vm
vmgenid: 7ad477d7-4772-4d78-8fa6-4bc33ccf6e78
3. 安装 Windows 10
Tiny10 是由大神NTDEV基于 Windows 10 LTSC 制作的一版 Windows10 精简系统。Tiny10 安装完成后,C盘占用9.4GB,内存占用1.7GB,系统非常清爽流畅。系统默认英文,可以通过设置添加中文语言包。
3.1 下载安装镜像
这里下载 Tiny10 的安装镜像 tiny10_x64_23h2.iso ,到这里下载最新的驱动镜像 virtio-win-0.1.285.iso ,都上传到 udisk。
3.2 创建虚拟机
虚拟机创建过程很简单,注意要挂载 virtio 驱动镜像,机型选 q35,cpu 选 host,其他默认即可。

3.3 安装 Tiny10
启动虚拟机,安装 windows 中到选择分区时需要浏览 virtio驱动镜像加载虚拟磁盘驱动,位置为 \vioscsi\w10\amd64
3.4 添加中文包
安装完 tiny10 后,右键开始菜单->Settings(设置)->Time&Language(时间和语言)->Language(语言)->Add a Language(添加语言),然后搜索china或zh都会看到中文简体,然后点击添加安装即可。
3.5 开启远程桌面
右键开始菜单->设置->系统->远程桌面->启动远程桌面。

3.6 激活系统
右键开始菜单->Windows PowerShell,在终端中键入:
irm https://get.activated.win | iex
根据提示激活 Windows。
最后贴出 win10 虚拟机配置(分配 CPU 4 核 host,内存分配 16G):
boot: order=scsi0;ide2;ide0
cores: 4
cpu: host
ide2: none,media=cdrom
machine: pc-q35-10.1
memory: 16384
meta: creation-qemu=10.1.2,ctime=1769324037
name: win10
net0: virtio=BC:24:11:83:BC:E6,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: win10
scsi0: udisk:101/vm-101-disk-0.qcow2,iothread=1,size=64G
scsihw: virtio-scsi-single
smbios1: uuid=bf8d722e-1782-419c-9ac9-2ece8abd8697
sockets: 1
tags: vm;win
vmgenid: a2bcd7b2-51af-411f-8361-12ddfff8610e
4. 安装 xubuntu
创建 xubuntu 虚拟机与飞牛类似,这里分配 CPU 2 核、内存4G。
启动虚拟机安装 xubuntu,这里选择最小化安装,其他默认。
安装后进行几个优化:
4.1 换源
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)
4.2 配置SSH
见 进阶篇 配置SSH。
4.3 开启远程桌面
安装 xrdp
apt update
apt install xrdp
配置 xrdp
echo xfce4-session > ~/.xsession
adduser xrdp ssl-cert # 解决权限错误
systemctl enable xrdp
systemctl restart xrdp
# 检查端口监听(默认3389)
netstat -tunlp | grep 3389
如出现闪退
vim /etc/xrdp/xrdp.ini
# 在[Globals]段添加:
ssl_protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
root 登录失败
sed -i 's/^auth required pam_succeed_if.so user != root quiet success/#&/' /etc/pam.d/gdm-password