1. 项目思路与需求拆解
1.1 为什么要在飞牛 NAS 里跑一个 Linux 桌面
先说说我为什么要干这件事。我手上这台飞牛 NAS(fnOS)平时主要干两件事:一是存文件、跑 Docker 容器,二是挂 PT、做家庭影音中心。但时间一长就发现一个问题——NAS 上跑的大多数服务都是无界面的后台程序,想调试脚本、写个 Python 爬虫、或者临时开个浏览器处理点东西,都得另开一台电脑。那如果我出差在外,手头只有笔记本,又不想把 NAS 里的数据拷来拷去,能不能直接在 NAS 上开一个随时能访问的 Linux 桌面环境?
答案就是虚拟机。飞牛自带的虚拟机功能基于 QEMU/KVM 实现,可以直接在 NAS 的 Web 管理界面里创建、启动、关机和管理虚拟机,不需要额外装 VMware 或者 VirtualBox。而 Ubuntu 作为最流行的桌面发行版之一,恰好是这种用法的绝佳选择。
这篇博文就是完整的实操记录,从下载镜像到创建虚拟机、从安装系统到配置中文输入法和桌面优化,再到显卡驱动和视频播放这些细节点,我都把步骤和踩坑过程写出来了。适合两类人参考:一个是飞牛用户想扩展 NAS 玩法、把 NAS 变成一台常驻 Linux 机器的,另一个是想在虚拟机里体验 Ubuntu 桌面、但不想搞双重系统或者不想买新电脑的。
需要提前说明的是,我这里用的是飞牛 fnOS 当前较新的版本,虚拟机管理界面可能在你的版本里略有差异,但核心步骤和逻辑是通用的。
1.2 方案选型:虚拟机、Docker 还是物理机
在动手之前,我得先对比一下在 NAS 上跑 Linux 桌面的几种路径,因为很多人会问:为什么不直接 Docker 装一个 ubuntu 镜像?
Docker 确实可以跑 Ubuntu,但 Docker 容器默认没有桌面环境、没有完整的系统服务,你需要在容器里自己装 X server、桌面面板、VNC 服务,而且容器重启后配置容易丢、设备直通困难,显卡加速和音频基本别想。简单类比一下:Docker 像是一个“标准间”,只给你一张床和一个插座,而虚拟机像是一整套“精装公寓”,从地基到水电都是你自己的,想怎么折腾都行。
物理机方案呢?比如把 Ubuntu 直接装在一块硬盘上、插到 NAS 的 SATA 口。这样做性能最强,但问题是飞牛本身需要占用系统盘,而且你无法在 Web 界面里方便地开关系统、无法做快照回滚,万一系统崩了还得拆机接显示器。对大多数家用场景来说,虚拟机是收益和成本最平衡的选项。
选型层面我最终确定:飞牛虚拟化 + Ubuntu 24.04 LTS + QXL 显示驱动 + VNC 远程桌面。理由有三点:
- 飞牛的虚拟机管理界面是图形化的,不用敲 qemu 命令行,对新手友好。
- Ubuntu 24.04 LTS 是长期支持版本,踩坑频率明显低于 24.10 这类短期版本。
- VNC 内嵌在飞牛的虚拟机控制台里,只要你浏览器能访问飞牛后台,就能打开 Ubuntu 桌面,无需额外装客户端。
如果你只是想要一个命令行 Linux 做开发调试,那其实不用装桌面,选“最小安装”就行,省资源、跑得快。但既然标题说了“搭建 Linux 桌面环境”,那我们的重点就是完整桌面体验。
2. 搭建前的准备工作
2.1 镜像下载与校验
Ubuntu 的官方镜像站是 ubuntu.com/download,但国内访问速度时好时坏,我推荐两个镜像源:清华 TUNA 镜像(mirrors.tuna.tsinghua.edu.cn)和阿里云镜像(mirrors.aliyun.com)。注意选的是 ISO 文件而不是 torrent,虽然两者都行,但 ISO 直链对浏览器下载更友好。
文件名形如ubuntu-24.04.1-desktop-amd64.iso,这个带 desktop 的才是桌面版,server 版没有图形界面。大小通常在 5GB 左右,下载完一定要校验 SHA256 哈希值,避免镜像文件损坏导致安装中途报错。下载完把 ISO 传到飞牛的存储池里,建议单独建一个ISO文件夹,方便管理。
校验哈希的方法:在 Ubuntu/Linux 下用sha256sum命令,Windows 下用certutil -hashfile,macOS 下用shasum -a 256。对比结果和官网公布的值是否一致。
2.2 飞牛虚拟机的存储与内存规划
飞牛虚拟机需要为每个实例分配虚拟磁盘、CPU 和内存。这里是最考验取舍的地方,因为 NAS 的硬件资源是有限的。
我自己这台 NAS 是 J4125 处理器、16GB 内存、4 块硬盘组 RAID5 存储池。J4125 是四核四线程的低功耗处理器,性能相当于入门级桌面 CPU,跑 Linux 桌面够用,但你别指望它能流畅 4K 视频剪辑。如果你的 NAS 是 J3160、N5095 这类,建议只分配 2 核和 4GB 内存给虚拟机,否则宿主机的 Docker 服务可能被拖垮。
资源分配给一个基本参考值:
| 场景 | vCPU | 内存 | 磁盘 |
|---|---|---|---|
| 轻量桌面 + 浏览器 + 文档 | 2 核 | 4 GB | 32 GB |
| 桌面 + 代码编译 + 轻量开发 | 4 核 | 8 GB | 64 GB |
| 桌面 + 本地 AI 推理(极小规模) | 4 核 | 12 GB | 128 GB |
我实际分配的是 4 核、8GB 内存、64GB 虚拟磁盘。分配虚拟磁盘时有个小技巧:飞牛默认会创建“精简置备”的虚拟磁盘,也就是说只有在虚拟机真正写入数据时才会占用 NAS 的物理空间,所以即使你选了 64GB,实际可能只占 7GB 左右,不用担心一开始就吃掉大量存储。
但注意“精简置备”有个坑:虚拟磁盘性能在大量随机读写时会有一定下降,因为每次分配新块都要走文件系统层。所以对性能敏感的场景,比如数据库或编译目录,最好在虚拟机里把数据放到独立的第二块虚拟磁盘上,用“厚置备”模式。桌面系统本身对这个不敏感,不用太纠结。
2.3 创建虚拟机的关键参数设置
打开飞牛后台,在“虚拟机”模块点击“新建虚拟机”。填名字,比如ubuntu-desktop,引导方式选择 UEFI。这里有个容易忽略的点:现在 Ubuntu 桌面版默认启用了 Secure Boot,如果引导方式选的是传统 BIOS(Legacy),安装后启动会卡在 GRUB 界面,表现为黑屏只有一个光标闪烁。所以选 UEFI 是省事的选择。
虚拟化引擎至少勾选“硬件虚拟化”和“KVM”,这是性能的关键。如果没有勾选 KVM,虚拟机的 CPU 性能会惨不忍睹,装系统时每一步都像幻灯片。你可以这样理解:KVM 是让虚拟机直接使用物理 CPU 的指令集,而不是模拟 CPU 逐条解释指令,前者快很多。
图形模型建议选择 QXL,因为它是 QEMU 自带的虚拟显卡,支持最大 4K 分辨率、支持双屏拼接,而且不像 VGA 模式那样只有 800x600 的分辨率。等系统装好后界面粗糙,多半是忘了安装 QXL 驱动,后面会细说。
启动顺序和声卡保持默认即可,声卡用 ich9-intel-hda,笔记本扬声器没有独立声卡也不用担心,因为默认走网络 VNC 音频是静音的,想要出声音需要在 Ubuntu 里配置 audio over VNC,这个属于进阶操作,我这次不讲。
3. 安装 Ubuntu 桌面系统的完整过程
3.1 从虚拟光驱启动并进入安装界面
在飞牛虚拟机列表里启动刚才创建的虚拟机,然后点击“控制台”按钮,浏览器会弹出一个 VNC 窗口,这就是你操作 Ubuntu 的窗口。首次启动会卡在“Booting from Hard Disk...”或者直接黑屏,因为虚拟机的启动顺序默认是先硬盘后光驱,而硬盘是空的。
解决方法有两种:一是创建虚拟机时把启动顺序调成“光驱优先”,二是在虚拟机的 BIOS 配置里临时进入启动菜单(通常是按 F12 或 Esc)。飞牛的虚拟机设置里直接有“启动顺序”选项,把CD-ROM拖到最上面保存,然后重启虚拟机,就能看到 Ubuntu 的 GRUB 启动菜单了。
Ubuntu 启动菜单出来后,默认选“Try or Install Ubuntu”回车。这里有一个我踩过的坑:如果你用上下方向键选择“Ubuntu (safe graphics)”,虽然对老旧显卡兼容更好,但安装完成后的桌面效果会缺少硬件加速之外的优化。所以没有特殊问题的话,用默认第一项就行。
进入 Ubuntu 桌面后,你会看到“Welcome”窗口。左侧可以选择语言,右侧有“Try Ubuntu”和“Install Ubuntu”两个按钮。直接点击“Install Ubuntu”。
3.2 分区设置:手动分区其实很简单
Ubuntu 的安装向导会问安装类型,默认是“清除整个磁盘并安装 Ubuntu”,对虚拟磁盘直接选这个没问题。但如果你想把 64GB 虚拟磁盘分成更科学的结构,可以选择“手动分区”。
我这里强烈建议手动分区,理由不是性能,而是灵活性。比如你把/home单独分区,以后想重装系统时,个人文件和配置可以保留在/home分区里,不会因为系统盘格式化而丢失。
手动分区可以这样规划:
| 挂载点 | 大小 | 文件系统 | 类型 |
|---|---|---|---|
| /boot/efi | 512 MB | FAT32 | 必须,用于 UEFI 启动 |
| / | 40 GB | ext4 | 根目录,系统和安装的软件都在这里 |
| /home | 剩余空间 | ext4 | 个人数据,建议尽量大 |
给一个小建议:交换空间(swap)在虚拟机场景下可以不加,或者只加 2GB。因为如果你在图形界面里发现自己内存不够用了,可以直接在飞牛里把虚拟机的内存调大,而不需要像物理机那样有限制。这种情况下的 swap 文件反而会浪费磁盘空间。
分区完成后,安装向导会提示“你确定要将这些更改写入磁盘吗”,检查一遍挂载点和大小,确认无误后点“继续”。
3.3 安装过程中的用户名与软件源选择
安装向导会让你设置用户名和密码。如果你打算长期使用这台 Ubuntu,建议用户名用小写英文,密码设成强密码但自己记得住,避免大小写折腾。这个用户名会在你的家目录里创建/home/用户名目录,很多配置文件都跟家目录挂钩,后期改用户名比较麻烦,最好一次想好。
接下来安装向导会问“你需要在安装时下载更新吗”。在虚拟机的网络环境里,这一步看情况——如果你的网络快,可以勾选“安装时下载更新”;如果网速一般或者还想再装个输入法再配置,可以先不勾选,安装完成后手动执行apt update。另外“安装第三方软件”那一步建议勾选,因为 Ubuntu 默认没包含 MP3 解码器、Flash 等非开源软件,不勾的话后期播放视频遇到 mkv 格式会各种缺解码器。
关键的一步:安装向导里的“软件源”选择。如果你使用默认的 Ubuntu 官方源,在中国网络环境下通常很慢、经常超时。我建议在安装完成后立即切换为阿里云镜像源,步骤如下:
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list sudo apt update如果安装向导本身允许你提前配置软件源,那就直接选“China”区域对应的镜像源。注意 24.04 采用新的ubuntu.sources文件格式,原来的sources.list已废弃,所以要修改的文件名不一样,后面在常见问题里我再具体说明。
3.4 安装完成后的首次启动与网络检查
安装完成后,安装向导会提示“立即重启”或“继续测试”,重启后虚拟机会自动从硬盘引导启动。如果重启后黑屏或者卡在 GRUB,多按几次 ESC 键试试进入 GRUB 菜单,选择第一项正常启动。
进入桌面后,先做三件基础配置:
打开终端(Ctrl + Alt + T),运行
ip a查看 IP 地址。飞牛虚拟机默认走 NAT 网络,所以 Ubuntu 会获得一个 192.168.122.x 或类似网段的地址,这是飞牛虚拟网桥分配的。运行
ping baidu.com检查网络连通性。如果 ping 不通,先看飞牛虚拟机的网络模式是不是选的“NAT”,而不是“桥接”。NAT 模式是虚拟机通过飞牛宿主机的 IP 上网,桥接模式是虚拟机直接和局域网在同一网段、拥有独立 IP。运行
df -h查看磁盘挂载情况,确认/和/home的容量和预期一致。
到这里,Ubuntu 系统本身已经跑起来了,但这只是“能用”的阶段,离“好用”还差几步。接下来我们进入桌面环境的细节配置,这才是博文最值得看的干货部分。
4. 桌面环境优化与实用配置
4.1 中文输入法配置的正确姿势
中文输入法是很多新用户的痛点,尤其在 Ubuntu 里,默认只有 IBus 框架,而 IBus 自带的智能拼音输入法比较“素”,词库弱、联想差。我个人的经验是直接装 Fcitx5 + 中州韵(Rime),或者 Fcitx5 + 搜狗输入法 Linux 版。
我推荐 Fcitx5 + 搜狗输入法,因为词库和云输入更符合国人习惯。安装方法:
sudo apt install fcitx5 fcitx5-config-qt fcitx5-frontend-gtk3 fcitx5-frontend-qt5然后去搜狗官方下载 .deb 安装包(支持 amd64),用sudo dpkg -i sogoupinyin_xxx.deb安装,如果报依赖错误,执行sudo apt -f install修复。
装完之后,最关键的一步是切换输入法框架。Ubuntu 默认的输入法环境变量是 IBus,你需要把系统默认输入法改成 Fcitx5。编辑或创建文件~/.xprofile:
export XMODIFIERS=@im=fcitx5 export GTK_IM_MODULE=fcitx5 export QT_IM_MODULE=fcitx5保存后重启虚拟机,在设置里找到“区域与语言”,添加“汉语(中国)”,输入源选择“Fcitx5”对应的拼音。此时按 Ctrl + Space 就能切换中英文输入了。
需要特别提醒的是:如果你不设置上述环境变量,Fcitx5 在 GTK 程序里根本不会被调用,你会出现“明明装了输入法但打不出中文”的诡异现象。这个问题网上有大把人卡住,就是环境变量没配对。
4.2 显卡驱动与显示分辨率
飞牛虚拟机的 QXL 显卡在 Ubuntu 24.04 里默认驱动能识别,但分辨率默认可能只有 1024x768,这显然不适合桌面使用。如果分辨率很高但整个桌面看起来缩放不正常,多半是显示比例和虚拟屏幕尺寸不匹配,飞牛控制台可以先点“自适应窗口”按钮。
如果你发现分辨率选项里没有 1920x1080 或更高,很可能是 QXL 驱动没装好。检查方法:
lsmod | grep qxl如果有输出说明驱动已加载,没有的话执行:
sudo apt install xserver-xorg-video-qxl装了驱动以后,在“设置 - 显示器”里应该能看到更多分辨率选项。还有一个技巧:如果飞牛虚拟机控制台的窗口大小和分辨率不匹配,可以在 Ubuntu 设置里把分辨率调到和窗口一致的选项,或者用控制台的“缩放”功能。
这里有朋友可能会问“要不要装 NVIDIA 驱动”或者“要不要直通显卡”。对飞牛 NAS 这种家用场景,我明确回答:不用。QXL 是虚拟显卡,性能和物理显卡当然没法比,但它应付桌面浏览、终端操作、看视频绰绰有余。显卡直通(GPU passthrough)通常需要主板支持 IOMMU,折腾成本极高,而且 J4125 这类 CPU 的核显直通还会导致 NAS 宿主机的显示输出异常。真的需要硬件加速的场景,应该在物理机上跑 Linux,而不是 NAS 虚拟机里硬凑。
4.3 播放视频与音频问题
Linux 桌面下播放视频,最常遇到的问题就是“有声音无图像”或“花屏”,或者“有图像无声”。先说结论:在 QXL 虚拟显卡下,软件解码是王道。也就是在播放器里关闭硬解,改用 CPU 解码。
Ubuntu 自带的浏览器(Firefox)播放在线视频时,如果出现绿屏或花屏,可以先强制 Firefox 使用软件渲染:
在 about:config 里搜索 gfx.webrender.software,设置为 true系统本地视频播放,推荐安装 VLC:
sudo apt install vlcVLC 在“工具 - 偏好设置 - 输入/编解码器”里,把“硬件加速解码”改成“软件解码”。J4125 的软解能力强悍,1080P 视频毫无压力,4K 虽然能播但 CPU 占用会比较高,不建议作为主力播放器。
音频方面,虚拟机的声卡默认输出到 VNC,但 VNC 音频在飞牛的网页控制台里默认不转发,所以你大概率会听到视频“静音”。要解决这个问题有两条路:一是用 PulseAudio 的 TCP 转发,把音频通过网络传回飞牛宿主机播放;二是更实用——直接在飞牛宿主机里用 Docker 跑一个 DLNA 媒体服务器,比如 Jellyfin,虚拟机里的 Ubuntu 只负责管理和下载,实际播放走局域网内的电视或手机。我实际操作中发现后者利用率高得多,Linux 桌面播放视频更多是临时看个片、剪个短视频,不必追求影院效果。
跳过音频这块有个小细节:如果你确实想在 Ubuntu 虚拟机里出声,可以在飞牛虚拟机的设置里给虚拟机添加一块 USB 音频设备,但宿主机的 USB 声卡必须通过 USB 直通机制才能到达虚拟机,配置稍复杂,如果不是刚需,建议跳过。
4.4 常用开发环境与必要软件
既然是在 NAS 上跑 Linux 桌面,通常目的就是做开发或者挂机跑脚本,所以必要的开发环境得配好。
Python 是必须的:
sudo apt install python3 python3-pip python3-venv注意 Ubuntu 24.04 默认的 Python 是 3.12,直接用pip装包时如果遇到“externally-managed-environment”的报错,说明系统有 PEP 668 保护机制,你需要在虚拟环境里装包:
python3 -m venv myenv source myenv/bin/activate pip install requestsNode.js 可以用 apt 装,但版本可能偏老,我建议用 nvm 安装最新 LTS:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash nvm install --ltsGCC 编译器,这是初学者最容易踩坑的点。标题热搜里有人问“ubuntu 安装 gcc 失败”,通常是没装 build-essential 依赖,只单独执行apt install gcc装的是最快的 CPU 编译器裸体,缺少 make、libc-dev 等配套包,编译任何东西都会报错。正确做法是:
sudo apt install build-essential如果是国产平台比如龙芯、ARM 板子,还需要额外安装对应的交叉编译工具链,这里先按 x86_64 讲。
文本编辑器,我推荐 VS Code,从微软官网下载 .deb 包,安装后配合 Fcitx5 输入法写代码舒服得很。VS Code 设置在 QXL 虚拟显卡下,可以启动参数加--disable-gpu,省得界面渲染卡顿。
5. 常见问题与排查技巧实录
5.1 虚拟机启动蓝屏或黑屏
“虚拟机安装 Linux 蓝屏”这个说法其实不准确,因为 Windows 才会蓝屏,Linux 崩溃一般是黑屏、花屏或者卡在启动加载界面。在飞牛里遇到 Ubuntu 虚拟机黑屏,90% 的情况是引导方式错误。
我在 2.3 节说过,Ubuntu 桌面版需要 UEFI 引导。如果你创建虚拟机时选的“传统 BIOS”,那么启动时会卡在 GRUB 之前。解决方法:删除虚拟机(保留磁盘),用 UEFI 重建一台,再把旧虚拟磁盘挂载为新数据盘;或者更简单——新创建一个 UEFI 虚拟机,重新安装系统,反正家目录数据可以通过挂载旧磁盘找回。
另一个黑屏原因是 VNC 窗口没刷新。飞牛控制台偶尔会卡在“Waiting for display”状态,这时候先在飞牛虚拟机列表里确认虚拟机的“运行状态”是否正常,然后刷新浏览器页面、重新打开控制台。如果还是黑屏,检查虚拟机的“显示协议”是否设置成了 VNC,有些版本默认是 Spice,需要浏览器插件支持,普通浏览器打不开。
5.2 安装软件时 apt 报错
Ubuntu 里 apt 报错最经典的三种:
| 报错特征 | 原因 | 解决方案 |
|---|---|---|
Could not resolve archive.ubuntu.com | DNS 解析失败或网络不通 | 检查虚拟网卡配置,ping 8.8.8.8测试 |
Package has unmet dependencies | 依赖冲突 | sudo apt --fix-broken install |
Temporary failure resolving | DNS 服务器不稳定 | 在 Ubuntu 设置里手动加 223.5.5.5 和 114.114.114.114 |
关于软件源,必须强调 Ubuntu 24.04 的源文件路径已经从/etc/apt/sources.list改成了/etc/apt/sources.list.d/ubuntu.sources。如果你照着网上老教程去改sources.list,改完实际上根本没生效。正确做法是直接编辑/etc/apt/sources.list.d/ubuntu.sources文件,把其中的http://archive.ubuntu.com/ubuntu/替换为http://mirrors.aliyun.com/。
5.3 虚拟机性能低下、卡顿明显
如果你装完 Ubuntu 桌面后感觉鼠标拖动窗口都卡,先别急着骂飞牛,按下面顺序排查:
- 在飞牛虚拟机设置里确认“CPU”分配大于等于 2 核、“内存”大于等于 4GB。如果宿主机本身资源紧张,调大虚拟机内存是立竿见影的办法。
- 确认虚拟化引擎勾选了 KVM。可以在 Ubuntu 里执行
systemd-detect-virt,如果输出是kvm,说明 KVM 生效;如果输出是qemu,说明走的纯软件模拟,性能会差好几倍。 - 桌面特效设置。在 Ubuntu 的“设置 - 无障碍”里把“减少动画”打开,或者在“设置 - 显示”里把“窗口动画”关闭。QXL 下动画渲染费 CPU,关掉后流畅度提升一大截。
还有一个我被问到很多次的场景:J3160 或者 J4105 这种低功耗平台跑 Ubuntu 桌面,内存 4GB 到底行不行?我的实测结论是“能跑,但浏览器开多了会卡”。低配平台的正确用法是:安装 Ubuntu 时选择“最小安装”,不装 LibreOffice 和游戏,只用 Firefox + VS Code + 终端,这样 4GB 内存下能维持一个能用的桌面体验。
5.4 虚拟机磁盘空间不够
64GB 的虚拟磁盘,如果又装开发环境又存下载文件,很快会占满。怎么延长它的寿命?我的经验:
- 把 Docker 的镜像目录和数据目录放到 NAS 物理存储上,通过飞牛里的“共享文件夹”挂载到虚拟机里,Linux 用 NFS 或者 Samba 挂载都行。
sudo mkdir /mnt/nas sudo mount -t cifs //192.168.1.100/downloads /mnt/nas -o username=yourname,password=yourpass- 定期清理 apt 缓存:
sudo apt autoremove sudo apt autoclean- 关注日志文件增长,因为 Ubuntu 的 journal 日志默认不限制大小,可以设置只保留最近 7 天的日志:
sudo journalctl --vacuum-time=7d5.5 宿主机与虚拟机的文件互传
在 NAS 上跑 Linux 桌面的价值很大程度上在于和宿主机共享数据。飞牛本身有“共享文件夹”,Ubuntu 如果用的是 NAT 网络,访问的是宿主机虚拟网段的 IP,而不是 NAS 的局域网 IP。所以 NFS 挂载时需要小心 IP 地址:
- 飞牛宿主机 IP 通常是你局域网里的固定 IP,比如 192.168.1.100;
- 在 Ubuntu 里挂载时,第一跳网关就是宿主机地址,可以用
ip route查看默认网关。
如果是桥接网络,Ubuntu 的 IP 和飞牛在同一网段,直接访问共享路径即可。这里有个小坑:飞牛的共享文件夹默认只有 smb 协议,需要在“共享文件夹”设置里同时开启 NFS 服务,否则 Linux 无法直接用mount -t nfs,只能用 cifs(SMB)协议。
6. 进阶玩法与扩展思路
6.1 把 Ubuntu 虚拟机变成开发代理和下载器
既然 Ubuntu 桌面跑起来了,完全可以把它当成一台常驻的“个人云电脑”。远程访问有两种方式:
一是飞牛控制台自带 VNC,但 VNC 在浏览器里体验一般,而且不支持声音,只适合管理和临时操作。二是安装 SSH 服务,在 Ubuntu 桌面里启用远程桌面协议,用 Windows 自带的“远程桌面连接”或 macOS 的 Microsoft Remote Desktop 客户端连接。飞牛的 Ubuntu 虚拟机如果用的是桥接网络,直接输 IP 就能远程;如果是 NAT 网络,需要配端口转发。
我实际用的就是“SSH + VS Code Remote”组合。SSH 到 Ubuntu 虚拟机以后,用 VS Code 的 Remote-SSH 插件直接编辑远程文件、运行终端,这种方式比 VNC 桌面流畅得多,也不需要图形资源。这也是我推荐在上面装 VS Code 的原因——变量不只在于本地编辑,还给了你一条轻量化的远程通道。
6.2 挂载 NAS 存储到虚拟机的桌面目录
在 Ubuntu 里把飞牛 NAS 的存储挂载到桌面,方便直接读写。我采用的方案是 Samba 挂载:
sudo mkdir -p /mnt/nas sudo chown $USER:$USER /mnt/nas # 编辑 /etc/fstab 实现开机自动挂载 //192.168.1.100/media /mnt/nas cifs username=你的飞牛账号,password=你的密码,uid=1000,gid=1000,iocharset=utf8 0 0注意uid和gid要设置成你 Ubuntu 用户的 ID(查看方法:id -u和id -g),否则会出现在 Ubuntu 里能挂载但文件所有者是 root、无法写入的尴尬情况。
6.3 快照功能与回滚
飞牛虚拟机面板里支持创建快照,这是比物理机方案好太多的地方。系统装好、配置全部调通的那一瞬间,请务必立刻拍一个快照。之后如果安装软件把系统搞挂、误删文件、病毒发作,都能一键回滚到健康状态。
我的经验是:每完成一个重要配置(比如输入法配好、开发环境装好)就拍一个快照,日常使用每周拍一个,但别保留太多快照,每个快照会占用 NAS 的存储空间。日常维护中,如果你确认某段时间内改动都满意,就删掉老快照,只留最近两三个,保持“可用状态可回滚”即可。
6.4 部署 Docker 容器管理与青龙面板
飞牛 NAS 经常被用来跑青龙面板(自动任务平台)这类工具。你可以直接在 Ubuntu 虚拟机里安装 Docker,跑青龙面板、Frp、Home Assistant 等容器,这样容器和桌面环境混在一台机器上,管理起来比宿主机直接跑容器更清爽。因为 Ubuntu 虚拟机相当于你的“开发沙箱”,系统搞坏了随时回滚,不会影响飞牛宿主机的稳定性。
在 Ubuntu 里装 Docker:
curl -fsSL https://get.docker.com | bash sudo usermod -aG docker $USER装完以后可以跑青龙面板:
docker run -d \ --name qinglong \ --restart unless-stopped \ -p 5700:5700 \ -v /opt/ql/config:/ql/config \ -v /opt/ql/log:/ql/log \ whyour/qinglong:latest注意:飞牛宿主机本身也支持 Docker,如果你需要青龙面板挂机任务,宿主机直接跑更省资源。虚拟机的意义在于开发和调试场景下的隔离性,两类用途要区分开。
7. 写在最后的实操体会
这套方案我用了大概四五个月,从最初只是想在 NAS 上开个 Linux 终端,到后来在上面跑 Jellyfin 定时转码脚本、写 Python 爬虫、管理下载任务,再到偶尔在浏览器里刷个网页、看个视频。坦白讲,飞牛虚拟机 + Ubuntu 桌面的体验上限不是看 NAS 的配置,而是看你的使用预期:它永远无法替代主力台式机的性能,但作为一台 7x24 小时开机、随时能从浏览器进入的常驻 Linux 机器,实用性远超我的预期。
过程中最有价值的经验,一是把系统配置的每一步都记录下来、及时拍快照,二是不要试图在虚拟机里干所有事,桌面和宿主机的分工要明确:宿主负责存储、容器、媒体播放,虚拟机负责开发、脚本、测试、下载管理。如果你只是想要一个随时能用的 Linux 环境,不用折腾太多图形特效,直接照我上面的配置跑起来就够用了。
最后再分享一个小技巧:如果你发现 Ubuntu 桌面启动速度越来越慢,检查一下开机自启服务,把不需要的服务全部禁用,然后点击飞牛虚拟机的“强制重启”选项做一次干净的重启。很多时候慢不是硬件不行,而是积累的临时文件和自启程序拖了后腿。我的这台 J4125 在清理之后,从控制台打开到进入 Ubuntu 桌面大概只需 30 秒,这个速度对于 NAS 虚拟机来说已经完全可用了。