PVE 装飞牛 fnOS 1.2:从虚拟机创建到数据盘配置

前面我已经在这台 ThinkPad T480 的 PVE 上陆续安装过 Debian、Arch Linux、Windows 11、FreeBSD,甚至 Windows XP。

这次继续折腾一个更适合长期放在 PVE 里的系统:飞牛 fnOS。

和前面那些桌面操作系统不同,fnOS 的定位是一套 NAS 系统。安装完成以后,日常使用基本都在浏览器和手机 App 里完成,因此它其实非常适合运行在 PVE 虚拟机中。

这次我的目标也很简单:

先不做物理硬盘直通,只用 PVE 虚拟磁盘搭一套完整的 fnOS 环境。

最终配置如下:

项目 配置
fnOS fnOS 1.2 Standard
PVE VM VM 120
VM 名称 pve-fnOS
CPU 2 Core,Type = host
内存 4GB
系统盘 64GB
数据盘 200GB
系统盘接口 SCSI
数据盘接口 SCSI
网卡 VirtIO
fnOS IP 192.168.100.20

这套配置并不追求"正式 NAS"的最终形态,而是优先满足:

  • 安装简单;

  • 不影响 PVE 现有存储;

  • 可以体验 fnOS 的存储、相册、影音、Docker 等功能;

  • 后续如果觉得确实好用,再考虑物理硬盘直通。


一、先说一下我的 PVE 环境

我的 PVE 装在一台 ThinkPad T480 上:

  • 16GB 内存;

  • 256GB NVMe;

  • 1TB 机械硬盘;

  • PVE 系统和部分 VM 放在 NVMe;

  • 机械盘作为 hdd-data,主要存放 ISO、虚拟机磁盘等大容量数据。

网络则稍微特殊一点。

PVE 本身通过 Wi-Fi 接入家里的局域网,而虚拟机使用一个独立的:

复制代码
192.168.100.0/24

内部网络,通过 PVE NAT 上网。

因此这次安装完成以后,fnOS 最终拿到的地址是:

复制代码
192.168.100.20

我的主力电脑已经配置了到这个网段的静态路由,所以可以直接通过浏览器访问它。

如果是普通的有线 PVE 环境,直接让 VM 桥接到家庭局域网即可,网络反而会更简单。


二、下载并上传 fnOS ISO

首先到飞牛官网下载 x86 版本的 fnOS 安装 ISO。

下载完成以后进入 PVE Web:

复制代码
Datacenter
  ↓
对应存储
  ↓
ISO Images
  ↓
Upload

我这里的 ISO 统一放在机械硬盘对应的 hdd-data 中。

上传完成以后,就可以创建虚拟机了。


三、创建 fnOS 虚拟机

点击 PVE 右上角:

复制代码
Create VM

我这次创建的是:

复制代码
VM ID:120
Name:pve-fnOS

VM ID 本身没有特别要求,使用 PVE 自动分配的号码即可。


1. OS

选择刚才上传的 fnOS ISO。

Guest OS 选择:

复制代码
Type:Linux
Version:Linux 7.x - 2.6 Kernel

这里的 Linux 7.x - 2.6 Kernel 只是 PVE 对 Guest OS 类型的一种分类,并不是说 fnOS 使用什么"Linux 7.x"。

保持默认即可。


2. System

System 页面我没有进行特殊修改。

大体保持:

复制代码
Graphic card:Default
Machine:Default
BIOS:SeaBIOS
SCSI Controller:VirtIO SCSI single

fnOS 是 NAS 系统,安装完成以后主要通过 Web 管理,因此这里完全没有必要像 Windows 11 那样折腾 TPM、UEFI 等配置。

显卡也保持默认即可。


四、创建 64GB 系统盘

系统盘我分配了:

复制代码
Bus/Device:SCSI
Disk size:64 GiB
Cache:Default
Discard:开启
IO thread:开启

如果虚拟盘底层位于 SSD/NVMe 上,也可以开启:

复制代码
SSD emulation

这里的 64GB 是整块虚拟硬盘容量。

安装 fnOS 时还会继续在这块硬盘里面创建系统分区、Swap 等,因此不要把"64GB 虚拟磁盘"和"64GB 系统分区"混为一谈。

另外,我这里一开始只添加系统盘,不添加 200GB 数据盘。

原因非常简单:

安装系统时只有一块盘,就完全不存在选错安装磁盘的问题。

等 fnOS 安装完成以后,再把数据盘挂进去即可。


五、CPU 和内存

CPU 我设置为:

复制代码
Sockets:1
Cores:2
Type:host

这里我比较建议把 CPU Type 改成:

复制代码
host

这样 Guest 可以直接使用宿主机 CPU 的大部分特性,也比较适合这种长期运行的 Linux VM。

内存设置:

复制代码
4096 MiB

也就是 4GB。

我没有开启 Ballooning,直接给 fnOS 固定 4GB 内存。

对于目前以体验 NAS、相册、影音和一些应用为主的环境,这个配置已经足够起步。

以后如果 Docker 服务越来越多,再增加 CPU 和内存也非常方便。


六、配置网络

网络设置:

复制代码
Bridge:vmbr0
Model:VirtIO
Firewall:关闭

VirtIO 是 Linux VM 下非常成熟的半虚拟化网卡方案,没有必要使用模拟的 Intel E1000 等网卡。

因为我的 vmbr0 是:

复制代码
192.168.100.0/24

所以 fnOS 安装完成以后也会工作在这个网段。

如果你的 PVE 直接通过有线网卡桥接到家庭 LAN,那么 fnOS 通常会直接从家里的路由器获得一个局域网 IP,使用起来会更加自然。


七、启动 fnOS 安装

虚拟机创建完成以后:

复制代码
VM 120
  ↓
Console
  ↓
Start Now

随后进入 fnOS 安装界面。

安装流程本身并不复杂。

选择刚才创建的 64GB 虚拟磁盘作为系统盘,然后按照安装程序提示继续。

因为当前 VM 只有这一块虚拟磁盘,所以基本没有选错硬盘的可能。


系统分区和 Swap

安装过程中需要配置系统分区和 Swap。

需要注意的是:

复制代码
64GB

是整个虚拟磁盘的容量,并不是一定要创建一个 64GB 的系统分区。

还需要给:

  • 引导相关分区;

  • Swap;

  • 其他系统空间

留出余量。

因此直接使用安装程序给出的合理默认值即可,没有必要刻意把系统分区拉满。

安装完成以后,fnOS 会重启。

这时可以在 PVE 中把安装 ISO 卸载掉:

复制代码
VM
  ↓
Hardware
  ↓
CD/DVD Drive

选择不再挂载 ISO。

同时确认启动顺序中系统盘优先于 CD-ROM。


八、初始化 fnOS

fnOS 正常启动以后,Console 会显示当前网络地址。

我的环境中最终使用:

复制代码
192.168.100.20

在电脑浏览器中访问这个地址,就可以进入 fnOS 的初始化界面。

按照提示配置:

复制代码
设备名称
超级管理员账号
密码

我的设备名称设置为:

复制代码
pve-fnOS

密码这里一定建议设置一个真正的强密码,尤其是以后如果准备开放远程访问。

初始化完成以后,就可以进入 fnOS 桌面了。

到这里,fnOS 系统本身已经安装完成。


九、再添加一块 200GB 数据盘

NAS 最重要的当然不是系统盘,而是数据盘。

关机以后回到 PVE:

复制代码
fnOS VM
  ↓
Hardware
  ↓
Add
  ↓
Hard Disk

添加:

复制代码
Bus/Device:SCSI
Storage:hdd-data
Disk size:200 GiB
Cache:Default
Discard:开启
IO thread:开启
SSD emulation:关闭

为什么这里关闭 SSD emulation?

因为我的:

复制代码
hdd-data

底层本身就是一块 1TB Hitachi 机械硬盘。

所以没有必要把这块虚拟磁盘伪装成 SSD。

最终虚拟机的磁盘结构就很清楚:

复制代码
PVE
│
├── 64GB System Disk
│      └── fnOS
│
└── 200GB Data Disk
       └── NAS Data

这也是我这次没有直接把整块物理 HDD 直通给 fnOS 的原因。

目前只是体验和实验阶段,使用一个 200GB 虚拟盘:

  • 不破坏 PVE 原有存储;

  • 不影响其他 VM;

  • 删除、迁移、备份都很方便;

  • 已经足够体验 fnOS 的主要功能。

如果以后真的把这套 fnOS 长期作为家庭 NAS 使用,再考虑整块 HDD 或 SATA Controller 直通更加合理。


十、在 fnOS 中创建存储空间

重新启动 fnOS。

进入:

复制代码
系统设置
  ↓
存储空间管理

此时应该可以看到刚刚添加的约 200GB 新硬盘。

接下来按照 fnOS 的提示创建存储空间即可。

我的这套环境只有一块虚拟数据盘,而且底层本身已经建立在 PVE 的存储系统之上,因此没有打算在这里研究复杂 RAID。

它的目标首先是:

给 fnOS 一个真正独立于系统盘的数据空间。

这样以后安装相册、影音、Docker 等应用时,就已经具备一套比较完整的 NAS 环境了。


十一、开启 SSH

安装完成以后,我还做了一个服务器系统几乎必做的配置:

打开 SSH。

fnOS 中进入:

复制代码
系统设置
  ↓
SSH
  ↓
开启 SSH

随后就可以从其他电脑:

复制代码
ssh 用户名@192.168.100.20

登录 fnOS。

有了 SSH,以后检查系统状态、网络、磁盘、服务会方便很多。

当然,对于正常的 NAS 日常使用,并不需要频繁 SSH 登录,大部分操作仍然应该在 fnOS 的 Web UI 中完成。


十二、更新软件

打开 SSH 以后,我对系统的软件包进行了检查和更新:

复制代码
sudo apt update
sudo apt upgrade

fnOS 底层是 Linux 系统,因此我们仍然可以看到熟悉的 APT 软件包管理方式。

不过这里需要强调一下:

fnOS 并不是一套普通的 Debian Desktop,而是一套经过大量定制的 NAS 系统。

因此我这次执行 apt upgrade 更多是实验环境下的实际测试。

如果以后长期运行 fnOS,我会优先使用 fnOS 自己提供的系统更新机制,而不是把它当普通 Debian 一样频繁手工做大规模软件包升级。


十三、QEMU Guest Agent 要不要装?

既然运行在 PVE 上,我还检查了一下:

复制代码
sudo apt install qemu-guest-agent

结果发现:

当前这套 fnOS 1.2 环境中已经安装了 QEMU Guest Agent。

也就是说,这一步实际上不需要额外安装。

可以检查:

复制代码
systemctl status qemu-guest-agent

然后在 PVE 中进入:

复制代码
VM
  ↓
Options
  ↓
QEMU Guest Agent

将它开启。

之后也可以在 PVE Host 上测试:

复制代码
qm agent 120 ping

如果能够正常返回,就说明 PVE 和 fnOS 之间的 Guest Agent 通道已经工作。

这对 NAS VM 还是比较有价值的。

PVE 可以通过它更好地获取:

  • Guest OS 信息;

  • IP 地址;

  • 正常关机状态;

  • 一些虚拟机内部信息。

所以 QEMU Guest Agent 建议开启。


十四、SPICE 就没必要折腾了

之前在 PVE 上安装 Debian、Arch Linux、Windows 11 时,我还专门研究过 SPICE。

原因是这些系统都有真正的桌面环境,SPICE 能带来:

  • 动态分辨率;

  • 剪贴板;

  • 音频;

  • remote-viewer;

  • 更好的桌面操作体验。

fnOS 就完全不是这种使用方式。

它真正的管理路径是:

复制代码
PVE Console
     ↓
只负责安装和应急维护

SSH
     ↓
命令行维护

Web / App
     ↓
真正的日常使用

所以这一次我完全没有折腾 SPICE。

PVE 自带的 noVNC Console 留着应急已经足够。

对于 NAS 系统来说,这反而更加干净。


十五、网络还有一点特殊之处

我的 PVE 并不是直接通过有线 Bridge 接入家庭局域网,而是:

复制代码
家庭 LAN
192.168.31.0/24
       │
      Wi-Fi
       │
      PVE
       │
      NAT
       │
vmbr0
192.168.100.0/24
       │
      fnOS
192.168.100.20

因此我的主力电脑配置一条静态路由以后,可以直接访问:

复制代码
192.168.100.20

但是家里的手机、电视、其他电脑默认并不知道:

复制代码
192.168.100.0/24

在哪里。

这个问题暂时不影响我安装和体验 fnOS。

后面如果开始真正研究:

  • 飞牛相册;

  • 手机 App;

  • 影音;

  • SMB;

  • Docker 应用;

我准备直接利用 PVE 的三层转发能力,按需做端口映射。

例如:

复制代码
家庭设备
   │
   │ PVE_IP:某个端口
   ▼
PVE
   │
   │ DNAT
   ▼
192.168.100.20:某个端口
   │
   ▼
fnOS

这样没有必要一下子把 fnOS 的所有服务全部暴露到家庭网络。

需要哪个服务,就开放哪个端口。

这部分等真正用到时再折腾,也可以单独再写。


十六、最终效果

到这里,我的 fnOS VM 已经形成了一套比较完整的基础环境:

复制代码
ThinkPad T480
│
├── PVE
│
├── fnOS 1.2
│    │
│    ├── 2 Core CPU
│    ├── 4GB RAM
│    ├── 64GB System Disk
│    ├── 200GB Data Disk
│    ├── VirtIO Network
│    ├── SSH
│    └── QEMU Guest Agent
│
└── Web 管理
     └── 192.168.100.20

相比前面在 PVE 上折腾 FreeBSD 图形桌面、QXL、Xorg 之类的问题,fnOS 的安装其实轻松得多。

原因也很简单:

NAS 天生就很适合虚拟化。

它并不需要复杂的虚拟显卡、桌面环境和远程桌面。

PVE 负责:

  • CPU;

  • 内存;

  • 网络;

  • 虚拟磁盘;

  • 虚拟机生命周期。

fnOS 则负责:

  • 存储;

  • 文件;

  • 相册;

  • 影音;

  • NAS 应用。

两者的边界非常清晰。


十七、以后完全可以把真实硬盘交给 fnOS

这次为了安装简单,我给 fnOS 添加的是一块:

复制代码
200GB PVE 虚拟磁盘

这很适合学习和体验:

  • 存储空间;

  • 文件共享;

  • 相册;

  • 影音;

  • 下载;

  • Docker;

  • 各种 fnOS 应用。

但如果以后真的打算长期使用 fnOS,这套架构完全可以进一步升级。

例如直接把一块真实机械硬盘交给 fnOS:

复制代码
Physical HDD
      ↓
     PVE
      ↓
硬盘 / 控制器直通
      ↓
    fnOS
      ↓
真实 NAS 数据盘

这其实并不是什么奇怪的玩法。

恰恰相反,PVE 跑 NAS VM,再把真实数据盘直通给 NAS,是家庭 All-in-One 主机里非常常见的一种架构。

PVE 负责虚拟化层:

复制代码
CPU
Memory
PCIe
Network
VM 生命周期

而 fnOS 负责:

复制代码
硬盘
存储池
共享目录
相册
影音
备份
下载
NAS 应用

两边职责非常清楚。

这样一来,PVE 就不只是一个"装几个系统玩的虚拟机平台",而逐渐变成整个家庭服务器的底座。


十八、fnOS 也不只是一个"文件服务器"

NAS 这个词很容易让人想到:

放几个硬盘,然后 SMB 存文件。

但现在的 NAS 实际上已经远远不止这些东西了。

最直接的一个用途就是:

下载机

家庭服务器一天 24 小时开着,本身就非常适合处理:

  • BT;

  • PT;

  • HTTP 下载;

  • 离线下载;

  • 自动追剧;

  • 下载后的媒体整理。

电脑没必要一直开着。

手机上丢一个任务,NAS 自己慢慢下载即可。

而且下载完成以后,文件本身就在 NAS 上:

复制代码
下载
  ↓
NAS 存储
  ↓
影视库
  ↓
电视 / 手机 / 平板播放

完全不需要再从 PC 往 NAS 搬一次。

这可能才是很多家庭 NAS 真正高频的用途之一。


相册与手机照片备份

另外一个很实际的用途就是照片。

现在手机照片、视频越来越多,如果完全依赖手机本地存储,很快就会遇到容量问题。

NAS 可以变成自己的家庭照片库:

复制代码
手机
  ↓
自动备份
  ↓
fnOS
  ↓
家庭照片库

以后换手机,照片依然在自己的硬盘上。

如果飞牛相册实际体验足够好,这很可能会成为我使用 fnOS 最重要的理由之一。


家庭影音中心

再往前一步就是影音。

下载机和 NAS 其实天然适合组合:

复制代码
下载
  ↓
整理
  ↓
刮削
  ↓
媒体库
  ↓
电视 / 手机 / 平板

一台机器可以同时承担:

  • 数据存储;

  • 下载;

  • 影视库;

  • 家庭媒体服务器。

这比"NAS 就是个共享文件夹"有意思得多。


十九、再往前一步:NAS 甚至可以和 AI 放在一起

现在还有一种越来越有意思的玩法:

给家庭服务器加 GPU。

以前 NAS 对 GPU 的需求并不大。

但现在情况开始变化。

GPU 可以用于:

  • 视频硬件转码;

  • 图片处理;

  • AI 相册;

  • 本地 OCR;

  • 语音识别;

  • Embedding;

  • RAG;

  • 本地大模型推理。

甚至真的有人把:

复制代码
NAS
+
GPU
+
LLM

塞进同一台家庭服务器。

例如:

复制代码
PVE
│
├── fnOS
│    └── HDD / SSD
│
└── AI Linux VM
     └── GPU Passthrough
          ↓
        Ollama
        vLLM
        Stable Diffusion
        Whisper
        Embedding

这时候甚至没必要要求 fnOS 自己承担所有 AI 工作。

PVE 的好处恰恰就是可以拆开。

fnOS 专心负责数据:

复制代码
照片
电影
文档
模型
数据集

另一台 Linux VM 专门负责 GPU:

复制代码
CUDA
Docker
vLLM
PyTorch
AI 服务

它们通过虚拟网络共享数据即可。

这其实和我前面搭 AI Infra 实验环境的思路已经开始连起来了。

一台服务器既可以是 NAS,也可以同时是一台本地 AI Server。


二十、PVE + fnOS 真正有意思的地方:All-in-One

如果继续发散,其实最终可以形成一台很典型的家庭 All-in-One 主机:

复制代码
                     PVE
                      │
      ┌───────────────┼───────────────┐
      │               │               │
    fnOS            OpenWrt         Linux VM
      │               │               │
     NAS             软路由            Docker
     相册             DNS              AI
     影音             VPN              开发环境
     下载             DHCP
      │
      │
  HDD / SSD

甚至还可以再加:

复制代码
Windows VM
Home Assistant
测试 K8S
各种 Linux

这就非常符合 PVE 的定位。

如果直接裸机装 fnOS:

复制代码
Hardware
   ↓
 fnOS

整台机器基本就成为 NAS。

但如果:

复制代码
Hardware
   ↓
 PVE
   ↓
 ┌──────────────┬──────────────┐
 fnOS          OpenWrt        Linux

那么同样一套硬件就可以承担很多完全不同的工作。

这也是为什么很多家庭服务器最后会走向:

PVE / ESXi / Unraid 之类的虚拟化底座 + NAS VM + 其他服务。

当然,All-in-One 也不是完全没有代价。

一台机器承担的工作越多:

  • 配置越复杂;

  • 故障影响范围越大;

  • 网络设计越重要;

  • 硬盘直通、GPU 直通也会增加维护成本。

尤其如果把软路由也放进去:

PVE 一旦重启,家里的网络可能也跟着断。

所以这是一种"资源利用率和可玩性很高"的方案,而不是唯一正确的方案。

但作为实验环境,它实在太适合折腾了。


写在最后

这次在 PVE 上安装 fnOS 1.2,真正让我感兴趣的其实并不只是:

"终于又装好了一个新系统。"

而是它让我这台 PVE T480 又多了一种完全不同的可能。

之前我在 PVE 上装:

复制代码
Debian
Arch Linux
Windows 11
FreeBSD
Windows XP

更多是在体验不同操作系统。

而 fnOS 不太一样。

它开始让这台 PVE 从:

虚拟机实验平台

慢慢有了一点:

家庭服务器

的味道。

目前它只是:

复制代码
2 Core
4GB RAM
64GB System Disk
200GB Virtual Data Disk

但以后完全可以进一步演化:

复制代码
真实 HDD
   ↓
fnOS NAS
   ↓
相册 / 影音 / 下载 / 文件

GPU
   ↓
Linux VM
   ↓
AI / LLM / CUDA

虚拟网卡
   ↓
OpenWrt
   ↓
家庭网络

其它 VM
   ↓
Linux / Windows / K8S

最后可能变成一台真正的:

NAS + 下载机 + 影音服务器 + AI Server + 软路由 + 实验室

All-in-One 主机。

当然,我现在还不会马上把这台 T480 改造成这么复杂。

这次先把 fnOS 最基础的环境搭起来。

下一步我更想实际体验一下:

  • 飞牛相册到底怎么样;

  • 手机照片自动备份是否好用;

  • 下载机怎么搭;

  • 飞牛影视体验如何;

  • SMB 文件共享;

  • Docker 应用生态;

  • PVE NAT 环境下手机和电视如何访问;

  • 如果给 fnOS 一块真实 HDD,会有什么变化。

如果这些东西确实好用,那么到时候就不仅仅是在 PVE 上:

"装过一次飞牛。"

而是真的可以考虑:

让飞牛长期住下来。

相关推荐
ynchyong19 小时前
海思MV310机顶盒 Debian9 NAS刷机终极教程
nas·机顶盒·mv310
东风微鸣1 天前
把威联通 NAS 接进 Prometheus 监控
nas·威联通
Mr_韩2 天前
子网路由实战:无需公网 IP,异地直接访问家庭内网全部设备
运维·网络·物联网·nas
承渊政道3 天前
自建服务越来越多怎么管理?Docker部署Flare,搭一个自己的数字入口
运维·docker·容器·内网穿透·cpolar·nas·flare
cpolar技术支持3 天前
喜欢的直播总要蹲点?用 bililive-go 在 NAS 后台自动录制直播并远程管理,再用 cpolar 让外地也能看回放
内网穿透·cpolar·nas·远程访问·自托管
java_logo4 天前
Docker 部署 Emby:轻松搭建家庭影音媒体服务器
服务器·docker·nas·emby·飞牛nas·群晖nas·轩辕镜像
cpolar技术支持10 天前
本地数据库客户端只能自己用?用 cpolar 安全访问 NAS 上的 PostgreSQL 管理台
postgresql·内网穿透·cpolar·nas·pgadmin
҉人间无事人14 天前
TrueNAS操作系统25.10.7安装使用详细说明、ZFS缓存解析
nas·truenas·nas系统安装·nas系统使用
不喝水就会渴14 天前
旧笔记本重生:一台吃灰小米 Air 的飞牛 NAS 搭建教程
笔记本电脑·nas·笔记本·飞牛