← 返回博客
2026-08-15 · 技术

无头模式:桌面⇄计算一键切换

Linxira 的定位是「桌面超算」:同一台机器,平时是桌面工作站,需要时是纯计算节点。无头模式(headless)就是这两个身份之间的开关——通过 systemd 标准目标切换把桌面关掉,桌面零占用、内存全给计算。本文讲清楚它为什么存在、原理是什么、怎么用,以及它和「换桌面」的区别。

为什么需要

一台滚动更新的工作站往往同时承担两种角色:日常桌面使用,以及训练、容器、远程计算等重负载任务。前者的代价是桌面环境常驻内存——KDE Plasma、显示管理器、后台服务,加上各种随会话启动的程序,加起来是几 GB 的占用;对内存紧张的计算任务来说,这几 GB 就是实实在在的损失。

传统做法是装两台机器,或者给服务器单独装一个无桌面的系统。但对 Linxira 的用户来说,桌面与计算共用一台机器的场景太常见了:白天写代码、跑实验,晚上挂一个长训练任务,第二天早上还要回到图形界面继续工作。这种情况下,最理想的是同一套系统、同一个安装,随时可以切换身份,而不是维护两套环境。

无头模式就是为此设计的:一条命令关掉桌面,把内存全部让给计算;再一条命令恢复桌面,回到日常使用。

从资源账本看这件事会更清楚:一套完整的 KDE Plasma 会话由显示服务器、窗口管理器、系统托盘、文件管理器、桌面搜索索引以及随会话启动的各种小程序组成,常驻占用通常在 1-2 GB 量级。对 8 GB 内存的机器,这是四分之一;对 16 GB 的机器,也是实打实的 10% 以上。训练任务、容器工作负载恰恰是最在意内存上限的负载——把这几 GB 还给它们,往往就是「能跑」与「跑不动」的区别。

另一种常见方案是给机器装两套系统或者用虚拟机隔离,但那是「另一台机器」的思路,要维护两份环境、两套更新。无头模式走的是「同一台机器」的思路:不复制环境,只在需要时切换状态。

谁最需要它?在内存紧张的笔记本或迷你工作站上跑通宵训练的研究者;离开前挂起容器化构建或测试管道的开发者;任何希望同一台机器中午是普通桌面、午夜是专职计算节点的人。对这些人来说,替代方案——第二台机器、虚拟机、或单独的无桌面安装——付出的时间与维护成本都远高于这里的「一条命令切换」。

原理

无头模式的实现非常克制:它是 systemd 标准的目标切换(target switch),不是自定义脚本,也不是换一套系统。开启后桌面环境与显示管理器不再运行,桌面组件零占用,内存全部释放给计算任务;系统工具、容器、驱动检测等能力完整保留。

这里有一个需要澄清的常见误解:无头模式不是换桌面。「桌面 / 无桌面」二选一是安装时在「桌面环境」一步做出的选择(KDE Plasma 或服务器无桌面);无头模式是安装在任意一种方式之后的临时开关——无论你装的是桌面版还是服务器版,系统都内置这个切换能力。它不改动你的安装形态,只临时改变当前运行状态。

server 模式本身也值得一提:选择服务器模式安装后,系统不包含桌面环境与显示管理器,启动后进入纯终端环境(tty 登录),与 Arch Linux 的基础安装一致,内存全部留给计算任务。但服务器模式不锁定任何选择——装完系统后,你可以像在 Arch 上一样自行安装任何桌面环境。无头模式则是桌面版用户在需要时临时进入纯计算状态的手段。

「systemd 标准目标切换」具体意味着什么?systemd 用 target 组织系统状态(例如 graphical.target 对应图形界面、multi-user.target 对应纯多用户终端)。无头模式切换就是在这两个标准 target 之间切换——这不是 Linxira 发明的机制,而是 systemd 原生的能力,因此它可预测、可审计、可被任何熟悉 systemd 的工具理解。切换后,图形会话相关的服务停止运行,SSH、容器、系统服务等继续工作,机器仍然是一台完整的 Linux 系统,只是没有图形界面。

「无头」到底还剩什么,也值得精确说明:即使是服务器模式的基线,也保留了少量通用工具——浏览器、终端工具、容器等;真正缺席的只有桌面组件(Plasma、SDDM、文件管理器等),它们要等你在安装时选择 KDE Plasma 或自行安装才出现。换句话说,「无头」的意思是「没有图形会话」,不是「精简到不能用的系统」——机器始终是一台功能完整的 Linux 工作站,只是没有桌面来消耗内存。

使用

三个命令,全部通过 linxira-config 提供:

linxira-config headless on now    # 立即关闭桌面(需确认)
linxira-config headless off now   # 立即恢复桌面
linxira-config headless status    # 查看当前模式

注意 on now 会立即关闭桌面,因此需要确认;status 用于在任何时候查看当前处于桌面还是无头模式。切换是即时的,不需要重启——这也是「临时开关」与「安装时二选一」的本质区别。

一个实用的操作建议:长时间运行任务前,用 linxira-config headless status 确认当前模式;任务结束后记得用 off now 切回桌面。如果任务需要后台运行而不占用终端,配合 远程访问(SSH) 使用——无头状态下 SSH 会话是主要的操作入口,二者天然互补。频繁切换的话,三条命令足够短,几天之内就会变成肌肉记忆。

适用场景

无头模式最典型的三个场景:

这些场景的共同点是:任务重、时间长、不需要人坐在机器前。无头模式下没有桌面干扰,也没有图形会话抢占资源,计算进程拿到的是整台机器。

三个场景还可以组合:训练任务通常以容器形式运行,此时无头模式 + 容器生态 + SSH 远程访问是一个完整的工作组合——宿主机退居为纯执行环境,容器负责隔离与复现,SSH 负责操作入口。这也是「桌面超算」定位在真实使用中的样子:桌面身份是日常入口,计算身份是任务入口,切换成本只有两条命令。

远程计算场景值得再多说一句,因为它最能体现无头模式的价值:桌面关掉之后,没有显示服务器、没有会话、没有锁屏来干扰无人值守的运行——更重要的是,通过 SSH 登录查看任务时,没有任何界面需要唤醒或解锁。这台机器表现得和一台专用服务器一模一样,因为在那一刻,它就是一 台专用服务器。

与桌面切换的区别

无头模式与「换桌面」是两件完全不同的事:

一句话:桌面 / 无桌面是「你想要什么形态」,无头模式是「现在要临时变成什么样」。两者不冲突,也没有必要互相替代。完整的桌面与服务器模式说明见 桌面与服务器模式 文档。

用安装场景举例会更直观:如果目标就是一台长期跑任务的纯服务器,安装时直接选「服务器(无桌面)」最合适,系统从第一天起就是纯终端;如果目标是桌面工作站但偶尔有长任务,选 KDE Plasma,需要时用无头模式临时关掉桌面。前者省掉了「装了个用不上的桌面」,后者省掉了「临时想要桌面却要重装系统」。两种选择由安装时的一步决定,之后随时可以用 linxira-config 或自行安装桌面来调整。