
1. 写在前面为什么要在“NAS”里塞一个“Linux 桌面”我大概是两年前开始接触飞牛 fnOS 的当时纯粹是想把手头几块闲置硬盘利用起来做一个家庭影音中心。说实话那时候我对“NAS”的理解还停留在“网络硬盘”这个层面——能存文件、能备份照片、能跑个下载任务就差不多了。直到有一天我需要在办公室外临时编译一个 Linux 项目手边又没有带笔记本才第一次认真考虑能不能让 NAS 不只是存储而是直接变成一台常开的“远程电脑”答案是能的。飞牛自带的虚拟机功能基于 QEMU/KVM 方案开发在 Web 管理界面里就能创建虚拟机、挂载 ISO 镜像、分配 CPU 和内存然后一步步安装 Ubuntu。整个过程和你用 VMware 或 VirtualBox 在本地跑虚拟机非常相似区别只是这套环境跑在 NAS 上7x24 小时在线随时能从浏览器或远程桌面连进来用。这篇博文就把我从“创建虚拟机”到“装好中文输入法、配置好桌面环境”的完整过程记录下来适合手里有飞牛设备、又想得到一个常开 Linux 桌面的人参考。我假设你的情况是已经有一台飞牛 NAS系统版本在 0.8.x 或更新BIOS 里虚拟化功能已经开启硬盘上还有至少 50GB 的空闲空间。如果你之前完全没接触过虚拟机也没关系我会把每一步的命令和点击位置都写清楚你照着做就行。2. 方案选型与部署前的关键决策2.1 为什么不用 Docker而是坚持用“虚拟机”我知道很多人在这一步会犹豫飞牛系统本身是基于 Debian 的 Linux直接开 Docker 跑一个桌面容器不是更轻量吗为什么非要用虚拟机“又重又慢”我的观点是需求和场景决定方案。如果你只需要跑一个命令行工具、部署一个网页服务Docker 当然合适资源占用低、镜像拉取也方便。但如果你想得到一个“能长期开着、可以随意 apt install、能调试/dev/video0 摄像头设备、甚至当主力开发机”的 Linux 桌面容器的隔离性反而会成为阻碍。容器和宿主机共享内核设备映射、网络模式、系统初始化流程都和真实系统有差异很多桌面级应用比如需要 systemd 完整环境、需要改内核模块在容器里会踩莫名其妙的坑。虚拟机的好处是隔离彻底、环境独立你在 Ubuntu 里把系统搞坏了删掉重建一台也就是几分钟的事对宿主机零影响。而且飞牛的虚拟机支持 VNC 显示安装桌面版 Ubuntu 的图形界面毫无压力。代价是一部分性能和内存开销不过对现代 x86 平台来说这个开销完全可接受。2.2 硬件配置建议CPU、内存、存储怎么分配飞牛的虚拟机调度资源是靠宿主机 CPU 和内存撑起来的所以你在分配时要量力而行。我自己的机器是一台 J4125 四核小主机16GB 内存日常跑飞牛系统本身占用大约 2GB剩下 14GB 都可以让给虚拟机和 Docker 容器。按照这个配置我给 Ubuntu 虚拟机分配了 4 核 CPU 和 8GB 内存日常使用非常流畅开浏览器、编译小项目都不卡。下表是我整理的参考配置你可以根据自己的硬件灵活调整用途最小配置推荐配置说明命令行/轻量使用2 核 / 2GB4 核 / 4GB适合跑脚本、SSH 操作桌面环境日常使用2 核 / 4GB4 核 / 8GB可以开浏览器、办公软件开发编译用4 核 / 8GB8 核 / 16GB建议使用 SSD 存储磁盘方面Ubuntu 桌面版最小安装后大约占用 8GB但系统更新、安装软件、缓存日志都会慢慢涨上去我建议至少分配 32GB如果你打算在里面装开发环境、放点数据那就直接给 64GB 或更多。飞牛默认支持磁盘动态分配和镜像回写空间用多少占多少不用担心一次性占满。这里有一个硬件层面的硬性条件CPU 必须开启虚拟化功能Intel VT-x 或 AMD-V。绝大多数 x86 主板默认是开启的但如果你的机器是从旧 MiniPC 魔改来的或者刷过其他 BIOS最好去 BIOS 设置里确认一下。我见过不止一个人在论坛里反馈“虚拟机安装 Ubuntu 蓝屏”最后发现就是 BIOS 里虚拟化开关没开白白折腾了半天。2.3 版本选择Ubuntu 桌面版还是服务器版如果你只想远程命令行操作选 server 版当然更省资源但标题既然写了“搭建 Linux 桌面环境”那我们就直接用桌面版desktop ISO。原因很简单desktop 版内置了 GNOME 桌面、桌面管理器、网络管理工具和一些基础办公软件安装完就能用图形界面VNC 连上去之后体验完整。版本号方面我推荐Ubuntu 24.04 LTS这是长期支持版本官方会维护五年软件源里的包也比较全。22.04 也可以用但 24.04 对桌面性能、Wayland 会话的优化更好而且飞牛的 virtio 驱动适配做得也顺。你只要去 Ubuntu 官网下载桌面版 ISO 镜像大概 5GB 左右下载完之后传到飞轮的“文件”里建一个 iso 目录统一管理就行。注意不要去下载非官方精简版纯净原版在虚拟机里兼容性最好。3. 实操过程创建虚拟机并安装 Ubuntu 桌面3.1 第一步把 Ubuntu ISO 镜像放进飞牛打开飞牛的 Web 管理界面在“文件管理”里找到你的存储池目录。我习惯在存储池根目录建一个“iso”文件夹专门放安装盘镜像。把下载好的 ubuntu-24.04.x-desktop-amd64.iso 上传到这个目录就行。上传速度取决于你的内网一般千兆局域网也就几十秒的事。上传完成后记得记一下镜像文件的完整路径后面创建虚拟机的时要选择这个 ISO。飞牛的文件路径一般是/vol1/1000/iso/xxx.iso这种形式你在文件管理界面里右键点镜像文件也能看到路径信息复制出来备用。3.2 第二步在飞牛虚拟机管理里创建新虚拟机在飞牛主界面左侧菜单找到“虚拟机”应用如果没有显示去“应用中心”里安装一下它属于系统内置应用不是 Docker 容器安装过程是独立的非常快。进入虚拟机页面后点击“创建虚拟机”按向导填写以下信息虚拟机名称建议写 ubuntu-desktop方便后续识别。系统类型选择 Linux。系统版本选择 Ubuntu如果列表里有 24.04 或 Generic Linux 均可。CPU 核数根据前面表格分配我填了 4。内存大小我填了 8192单位 MB即 8GB。启动 ISO选择刚才上传的 ubuntu-24.04.x-desktop-amd64.iso。存储空间给一个不小于 32GB 的数据盘接口类型默认即可一般会自动选 VirtIO。这里有一个容易忽略的选项是“网络模式”。飞牛虚拟机的网络有三种模式桥接模式、NAT 模式、隔离模式。如果你希望 Ubuntu 和局域网里其他设备处于同一网段、可以互相访问就选桥接模式如果你只需要 Ubuntu 能上网、能出网下载软件包NAT 模式也行。我个人建议选桥接模式这样后续从局域网其他电脑 SSH 连接 Ubuntu 更方便。3.3 第三步开机并进入 Ubuntu 安装流程点创建之后虚拟机列表里就会出现这台机器。选中它点击“启动”按钮然后再点击“VNC 远程连接”浏览器里会打开一个基于 noVNC 的图形终端此时你应该能看到 Ubuntu 的引导界面。引导界面会让你选择“Try or Install Ubuntu”你直接用默认的第一项回车。接下来是等待内核加载的过程J4125 这种低功耗 CPU 上可能需要两三分钟不要以为卡死了耐心等一下。进入安装界面后把语言选成中文简体。这里注意一个小细节你选的只是“界面语言”键盘布局保持默认的英语即可中文键盘布局在后面的输入法配置里再调整会更舒服。接下来 Ubuntu 会自动检测网络连接、磁盘分区模式如果你是用整块虚拟磁盘安装直接选“清除整个磁盘并安装 Ubuntu”就行这是全新磁盘不会有任何数据风险。后面就是设置用户名、主机名和密码建议用户名不要用大写字母以免个别软件兼容问题。安装过程大概 10 到 20 分钟视硬盘性能而定。装完后界面会提示重启你在虚拟机管理界面里把“启动 ISO”选项移除或者改成“无”然后重启虚拟机就能进入真正的 Ubuntu 桌面了。3.4 第四步进入桌面后的基础设施配置第一次进入桌面系统可能还会跑一遍语言更新和软件源初始化等它安静下来再操作。我个人习惯先做三件事第一确认网络和系统更新sudo apt update sudo apt upgrade -y这一步把系统包和内核都升到最新避免后面装软件时遇到依赖冲突。第二安装一些基础工具比如 curl、vim、git、net-tools用命令行执行比图形界面一个个点快得多。第三把 SSH 服务打开方便以后不用每次开浏览器 VNC 就能操作sudo apt install openssh-server -y sudo systemctl enable --now ssh配置完这三项之后这台 Ubuntu 桌面才算是“能正常使用”的状态。接下来要处理的就是本地化和输入法的问题这个单独放到下一节讲。4. 桌面环境优化中文输入法和核心软件配置4.1 中文输入法为什么我推荐 fcitx5 而不是默认的 ibus装完 Ubuntu 桌面后默认输入法框架是 ibus自带中文智能拼音。听起来很省事但实际用下来我发现几个问题第一在部分 GTK 应用里输入法切入中文时会卡顿第二某些跨平台应用比如 Electron 家族的 VS Code、Telegram对 ibus 支持不理想输入框里能打字但不显示候选词或者候选框跑到屏幕角落里。相比之下fcitx5 对 Wayland 会话和无边框窗口的兼容性好很多候选框定位准确皮肤也好看照顾到了我的强迫症。所以在飞牛虚拟机上我直接装 fcitx5。执行sudo apt install fcitx5 fcitx5-chinese-addons -y装完之后打开“设置 - 系统 - 区域与语言“把输入法框架从 ibus 切换成 fcitx5 需要一个小操作Ubuntu 24.04 上一般直接用 im-config 命令做切换im-config -n fcitx5然后注销、重新登录桌面。此时屏幕右上角应该会出现一个键盘小图标右键点击进入“配置”添加拼音输入法即可。默认键位是 CtrlSpace 切换中英文熟悉之后很顺手。如果你用的是 22.04 LTS安装方式还多个步骤但过程本质一样核心就是把 fcitx5 设为默认输入法框架然后通过它的配置工具添加拼音。4.2 安装增强工具virtio 驱动与剪贴板共享飞牛的虚拟机板型是基于 QEMU 的所以磁盘网卡大概率都走了 virtio 虚拟设备。好处是性能高、CPU 开销小但这也意味着虚拟机里缺少一些和宿主机互动的“增强服务”。如果你需要剪贴板共享宿主机复制文本Ubuntu 里直接粘贴目前最简单的方式是安装一款支持 Remote Desktop Protocol 或 VNC 协议的远程工具来访问桌面比如我在局域网里用 Remmina 去连 Ubuntu 自带的 Vino 或者 xrdp。具体来说如果你更习惯用 Windows 自带的远程桌面mstsc来连这台 Ubuntu 桌面可以安装 xrdpsudo apt install xrdp -y sudo systemctl enable --now xrdp但这里有个大坑你如果用的是默认 GNOME 桌面xrdp 连上去之后经常只能看到灰色背景壁纸没有任务栏因为 GNOME 桌面在新版 Ubuntu 里默认走 Wayland 会话而 xrdp 走的是 Xorg二者冲突。解决方法是给桌面单独创建一个 Xorg 会话我在实践中最稳妥的做法是另外安装一个轻量桌面环境 Xfce4然后让 xrdp 默认加载它sudo apt install xfce4 xfce4-goodies -y echo xfce4-session ~/.xsession重启 xrdp 服务后再用远程桌面连接应该就能看到完整的 Xfce 界面了流畅度甚至比 GNOME 还高一些。这个方法我强烈推荐给你毕竟每次都开网页 VNC 总归不够高效尤其输入命令时还容易误触快捷键。4.3 安装常用开发工具与多媒体组件既然搭了 Linux 桌面你得让它能干活。我按自己的使用场景把常用软件分成了三类类别工具安装方式开发VS Code、Python、Gitapt 或 snap 安装办公WPS/LibreOffice、Chrome官网 deb 或 apt影音VLC、GIMP、音频工具apt 安装在飞牛虚拟机上我实测下来 VS Code 用微软官方源安装很顺畅执行wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor packages.microsoft.gpg sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ echo deb [archamd64] https://packages.microsoft.com/repos/code stable main | sudo tee /etc/apt/sources.list.d/vscode.list sudo apt update sudo apt install code -y如果你不想折腾源也可以直接去官网下载 .deb 包双击安装效果一样。Python 在 Ubuntu 24.04 自带 3.12不需要自己装但要把 pip 装好sudo apt install python3-pip -y多媒体方面VLC 一个命令就能装上看片解码都省心。到这里桌面环境已经具备日常使用价值了。5. 常见问题排查与避坑实录5.1 虚拟机安装 Ubuntu 时蓝屏或启动崩溃这不是 Windows 专属的毛病Ubuntu 也可能遇到。排除硬件虚拟化开关没开之外最常碰到的情况是 ISO 镜像损坏或下载不完整。我建议校验一下镜像的 MD5 值和官网公布的比对一致再用。另外飞牛虚拟机创建时如果选了“系统类型 Linux”但没选具体发行版可能导致 UEFI 启动方式不匹配这个建议回到虚拟机的编辑选项里确认启动固件是 UEFI 还是传统 BIOSUbuntu 24.04 默认支持 UEFI飞牛也建议用 UEFI 模式。如果还是蓝屏尝试换一个安装镜像源比如用国内镜像站下载 Ubuntu ISO速度更快而且文件完整性也有保障。5.2 虚拟机内网络无法获取 IP这是飞牛虚拟机和 Ubuntu 搭配时最高频的问题。我一次在桥接模式下创建完虚拟机进入 Ubuntu 后发现网卡没有拿到内网 IP排查步骤是在 Ubuntu 终端里执行ip link确认网卡是否存在常见名称是 enp1s0。执行sudo dhclient enp1s0手动获取 IP如果能拿到说明网卡驱动正常问题出在网络管理器配置上。如果手动获取仍失败检查飞牛虚拟机网络模式是不是选成了 NATNAT 模式下虚拟机的网段通常和宿主机不同但一般也能上网只是无法被局域网其他设备直接访问。最后的解决方案是回到飞牛虚拟机设置把网络模式改为桥接并指定桥接到的物理网卡。这里注意飞牛可能有多个网口你绑定的是哪一个虚拟机对应也桥到那一个不要选错。5.3 桌面卡顿、鼠标延迟明显如果用的是 J4125、N5105 这类低功耗 CPU 的小主机跑 GNOME 桌面确实有一定压力尤其浏览网页或者切换窗口时会出现鼠标漂移的滞后感。我实测后认为这种情况下最有效的优化不是升级内存而是把桌面会话从 Wayland 切到 Xorg因为 Xorg 在 VNC 和 RDP 场景下渲染开销更小反应更快。在登录界面点击用户名后右下角有个齿轮图标选择“Ubuntu on Xorg”登录即可。如果还想更轻便一点直接把默认桌面换成 Xfce 或 LXQt卸载不需要的 GNOME 应用。毕竟这是一台跑在家用 NAS 上的虚拟机目标是稳定流畅不是比拼特效。5.4 磁盘空间与备份的问题虚拟机磁盘占空间这件事被很多人低估了。虽然飞牛在分配磁盘时是动态占用的但 Ubuntu 内部删除大文件后宿主机上的镜像文件并不会自动缩小时间一长你会发现 NAS 剩余空间越来越小。我的建议是定期清理 Docker 镜像缓存和 Ubuntu 的 apt 缓存或者干脆在飞牛后台定时进行存储空间的快照回收。如果你重视数据可以在飞牛里给这台虚拟机开启定期快照功能出问题直接回滚比任何手动备份都省心。6. 扩展玩法探索让桌面环境持续发挥价值6.1 从“图形桌面”变成“家庭开发机”虚拟机装好 Ubuntu 桌面并不代表它只能用来做图形操作。我在实际使用中把这款虚拟机定位成了“家庭开发机”通过桥接网络它拥有一张局域网内的独立 IP我可以在办公室用 SSH 连进去跑测试脚本也可以在卧室直接用浏览器 VNC 打开整个桌面浏览网页。相比树莓派它的性能更强相比纯云服务器它没有月租成本还拥有一块几十 GB 甚至更大的本地磁盘。如果有需要你把它当作一个 Linux 学习练习场也不错。随便折腾装软件、改配置、搭服务挂了就从快照恢复学习成本比实体电脑低得多。6.2 结合飞牛应用中心Docker 与虚拟机共存飞牛应用中心已经有不少 Docker 应用比如 Gitea、青龙面板等其实这些服务和这台 Ubuntu 虚拟机能形成很好的互补。虚拟机里跑重量级 IDE、做编译、跑图形程序Docker 容器里跑轻量级应用、自动化脚本。两者共享一台 NAS 的硬件资源各司其职。我在虚拟机里装了 VS Code 并开放了 SSH开发完的代码直接 git push 到飞牛上跑的 Gitea 仓库整个过程都在内网速度飞快。6.3 待继续打磨的方向这套方案里有一些细节我还在不断优化。比如显示器分辨率的问题VNC 默认分辨率只有 1024x768可以在 Ubuntu 显示设置里调高但每次 VNC 重连后偶尔会重置我目前是通过 xrandr 脚本固定分辨率来解决的。又比如音频输出虚拟机里的声音从飞牛宿主机的 HDMI 口出来偶尔会断续经我测试买一个 USB 声卡插在宿主机上再透传给虚拟机音质就非常稳定了。这些打磨方向弹性很大取决于你拿这台 Linux 桌面做什么。如果只是日常浏览、写写文档默认配置已经够用如果把它当主力工作台建议你花一点点时间把远程桌面和分辨率脚本配置好体验会再上一个台阶。我自己最常用的是那套“VNC 观感 SSH 操作”的组合图形界面用于视觉确认命令行用于效率操作在飞牛虚拟机上跑了一整个季度稳定性非常让我满意。