Skip to content

无图形界面 Debian 用 KVM 安装飞牛 fnOS 完整指南

适用场景:宿主机是纯命令行的 Debian 服务器,没有图形界面,通过 VNC 远程完成虚拟机安装。飞牛作为 NAS 系统,需要桥接网络实现局域网内独立访问。

环境说明

  • 宿主机:Debian 12(无桌面环境)
  • 物理网卡enp1s0(你的可能不同,先用 ip a 确认)
  • 目标:创建飞牛虚拟机,桥接网络,两块数据盘

一、检测虚拟化支持

bash
# 检查 CPU 是否支持虚拟化(Intel 看 vmx,AMD 看 svm)
grep -E "vmx|svm" /proc/cpuinfo

# 查看虚拟化类型
lscpu | grep -i virtualization

# 检查 KVM 模块是否加载
lsmod | grep kvm

如果有输出,说明软硬件都支持,可以继续。

二、安装 KVM 核心组件

bash
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst libosinfo-bin

# 启动 libvirtd 并设置开机自启
sudo systemctl enable --now libvirtd

# 验证安装
sudo virsh list --all

三、配置桥接网络(br0)

飞牛需要桥接网络才能被局域网内其他设备直接访问。这里用最传统的 /etc/network/interfaces 方式,不依赖 NetworkManager。

3.1 确认物理网卡名称

bash
ip a

找到实际物理网卡名,本例假设为 enp1s0

3.2 备份原配置

bash
sudo cp /etc/network/interfaces /etc/network/interfaces.backup

3.3 编辑配置文件

bash
sudo nano /etc/network/interfaces

替换为以下内容(根据你的网络类型选择):

情形 A:DHCP 自动获取 IP(大多数家庭网络)

ini
# 回环接口
auto lo
iface lo inet loopback

# 物理网卡设为手动模式
auto enp1s0
iface enp1s0 inet manual

# 网桥配置(DHCP)
auto br0
iface br0 inet dhcp
    bridge_ports enp1s0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

情形 B:静态 IP(服务器常用)

ini
auto lo
iface lo inet loopback

auto enp1s0
iface enp1s0 inet manual

auto br0
iface br0 inet static
    address 192.168.1.100        # 换成你的 IP
    netmask 255.255.255.0
    gateway 192.168.1.1          # 换成你的网关
    dns-nameservers 8.8.8.8 114.114.114.114
    bridge_ports enp1s0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

3.4 网桥参数说明

| 参数 | 作用 | | | - | | bridge_stp off | 关闭生成树协议,避免 30 秒阻塞延迟 | | bridge_fd 0 | 转发延迟设为 0,接口启用即转发数据 | | bridge_maxwait 0 | 取消启动等待,加快系统启动速度 |

这三个参数让网桥"零延迟"启动,家庭环境完全适用。

3.5 重启网络使配置生效

bash
sudo systemctl restart networking

提示:此步骤会导致网络短暂中断几秒,SSH 连接可能断开,稍后重新连接即可。

3.6 验证桥接是否成功

bash
ip a show br0      # 应该能看到 br0 拿到了 IP
bridge link        # 应该能看到 enp1s0 是 br0 的从属接口

3.7 放行桥接流量(如有防火墙)

bash
sudo nft add rule ip filter FORWARD iifname "br0" accept
sudo nft add rule ip filter FORWARD oifname "br0" accept

如果没有使用 nftables 防火墙,可以跳过此步。

四、下载飞牛镜像并创建虚拟机

4.1 下载系统镜像

bash
# 前往 fnnas.com 获取最新下载链接
wget -O ~/fnos.iso https://fnnas.com/download/fnos/latest/fnos.iso

4.2 创建存储目录

bash
sudo mkdir -p /mnt/data/vm
sudo chown -R qemu:qemu /mnt/data/vm

4.3 创建虚拟机(系统盘 + 两块数据盘)

以下命令一条搞定,系统盘 64GB,数据盘 100GB 和 200GB:

bash
sudo virt-install \
  --name fnos \
  --memory 4096 \
  --vcpus 2 \
  --os-variant debian11 \
  --cdrom ~/fnos.iso \
  --network bridge=br0 \
  --graphics vnc,listen=0.0.0.0,port=5900 \
  --noautoconsole \
  --disk path=/mnt/data/vm/fnos.qcow2,size=64,format=qcow2 \
  --disk path=/mnt/data/vm/fnos-data1.qcow2,size=100,format=qcow2 \
  --disk path=/mnt/data/vm/fnos-data2.qcow2,size=200,format=qcow2

参数说明

参数说明
--name fnos虚拟机名称
--memory 4096内存 4GB
--vcpus 22 核 CPU
--os-variant debian11使用 Debian 11 硬件模板(兼容性最好)
--cdrom ~/fnos.iso挂载安装镜像
--network bridge=br0桥接网络,独立 IP
--graphics vnc...开启 VNC 远程桌面,端口 5900
--disk path=...,size=...创建虚拟磁盘,三块盘依次是系统盘、数据盘1、数据盘2

关于 --os-variant debian11:飞牛基于 Debian 12,但你的 KVM 模板库可能只到 Debian 11,使用 debian11 模板完全兼容,对系统运行无任何影响。

五、通过 VNC 远程完成系统安装

5.1 确认虚拟机状态

bash
sudo virsh list --all | grep fnos

状态为 running 即正常。

5.2 用 VNC 客户端连接

在你的另一台电脑上打开 VNC Viewer(或 Windows 远程桌面),连接:

<你的Debian服务器IP>:5900

5.3 按提示完成安装

  • 选择语言、时区
  • 磁盘分区:建议选择第一块盘(vda)作为系统盘
  • 设置管理员账号密码
  • 等待安装完成

5.4 安装完成后的处理

安装完成后系统提示重启,直接关闭 VNC 窗口,回到宿主机命令行:

bash
# 强制关机
sudo virsh destroy fnos

# 查看当前磁盘列表
sudo virsh domblklist fnos

输出中如果 sda 显示为 -(无挂载镜像),说明光盘已自动弹出,无需额外操作。

如果 sda 仍显示 ISO 路径,执行:

bash
sudo virsh change-media fnos sda --eject

报错 No disk found whose source path or target is hdc?说明光驱设备名不是 hdc,用 virsh domblklist fnos 确认实际名称后替换。

5.5 重新启动虚拟机

bash
sudo virsh start fnos

六、访问飞牛 NAS 进行初始化

6.1 获取虚拟机 IP

bash
# 方法一:用 virsh 查询
sudo virsh domifaddr fnos

# 方法二:去路由器后台查看新增设备

6.2 浏览器访问

打开浏览器输入:

http://<飞牛IP>:8000

按页面指引完成首次初始化设置。

6.3 初始化存储空间

登录飞牛后台后,在 存储管理 中可以看到三块磁盘:

  • vda:系统盘(不要动它)
  • vdb:数据盘1(100GB)
  • vdc:数据盘2(200GB)

格式化并创建存储空间,即可开始使用。

七、常用 virsh 管理命令速查

虚拟机生命周期

命令作用
sudo virsh list --all查看所有虚拟机状态
sudo virsh start fnos启动
sudo virsh shutdown fnos正常关机
sudo virsh destroy fnos强制断电(卡死时用)
sudo virsh autostart fnos设置开机自启
sudo virsh autostart --disable fnos取消自启

信息查看

| 命令 | 作用 | | - | | | sudo virsh dominfo fnos | 查看详细信息 | | sudo virsh domifaddr fnos | 查看 IP 地址 | | sudo virsh domblklist fnos | 查看磁盘列表 | | sudo virsh domstats fnos | 性能统计 |

配置编辑

命令作用
sudo virsh edit fnos编辑 XML 配置
sudo virsh dumpxml fnos > backup.xml导出备份

磁盘管理

| 命令 | 作用 | | | -- | | qemu-img create -f qcow2 /path/disk.qcow2 100G | 创建新磁盘文件 | | sudo virsh attach-disk fnos /path/disk.qcow2 vdd --persistent | 热添加磁盘 | | sudo virsh blockresize fnos vdb 200G | 在线扩容磁盘 |

八、排错锦囊

虚拟机无法启动

bash
# 查看错误日志
sudo journalctl -xeu libvirtd | tail -50
sudo tail -50 /var/log/libvirt/qemu/fnos.log

桥接网络不通

bash
# 确认 br0 拿到 IP
ip a show br0

# 确认桥接成员
bridge link

# 手动给虚拟机重新分配网络
sudo virsh destroy fnos
sudo virsh start fnos

宿主机重启后虚拟机不自动运行

bash
# 设置开机自启
sudo virsh autostart fnos

# 确认状态
sudo virsh dominfo fnos | grep Autostart

VNC 连接不上

bash
# 确认 VNC 端口监听
sudo ss -tlnp | grep 5900

# 检查防火墙
sudo ufw status  # 如果用了 ufw
sudo nft list ruleset  # 如果用了 nftables

九、可选:宿主机文件共享给飞牛

如果想把宿主机上的文件共享给飞牛使用,推荐用 Virtiofs(性能最好):

bash
# 编辑虚拟机配置
sudo virsh edit fnos

<domain> 标签内添加:

xml
<memoryBacking>
  <access mode="shared"/>
</memoryBacking>

<devices>
  ...
  <filesystem type="mount" accessmode="passthrough">
    <driver type="virtiofs"/>
    <source dir="/home/user/shared"/>
    <target dir="hostshare"/>
  </filesystem>
</devices>

保存后重启虚拟机,在飞牛里挂载:

bash
sudo mount -t virtiofs hostshare /mnt/host-share

注意:飞牛相册、影视等套件仅支持 SMB/NFS 远程挂载路径,如需给套件使用,建议在宿主机搭建 Samba 服务,然后在飞牛后台通过远程挂载连接。

Released under the MIT License.