惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
V
V2EX
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
小众软件
小众软件
Vercel News
Vercel News
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
J
Java Code Geeks
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
B
Blog
美团技术团队
量子位

/home/rook1e

AI 编码小记 1 | /home/rook1e 被 CGO 交叉编译折磨的一个周末 | /home/rook1e 独立开发备忘录 | /home/rook1e 使用 Cline + Gemini 2.5 Pro 来做 Vibe coding | /home/rook1e RawWeb 更新:SimHash 和 Meilisearch | /home/rook1e Neovim、终端和生产力 | /home/rook1e RawWeb.org 的前三次技术栈迭代 | /home/rook1e 我的透明代理方案 1.0 | /home/rook1e 深入理解 Linux TProxy | /home/rook1e 我的初代 NAS | /home/rook1e 劫持 Golang 编译 | /home/rook1e 初探 Golang 代码混淆 | /home/rook1e 「SF」子域名搜集工具开发小结 | /home/rook1e Code-Breaking 2020 Bashinj | /home/rook1e 浅谈 HTTP 请求走私 | /home/rook1e 从 Material-T 到 Fluid | /home/rook1e
配置轻量级 Linux 远程开发环境(Fedora 38) | /home/rook1e
Yuan (rook1e) · 2023-07-14 · via /home/rook1e
目录

首先选一个发行版,需要软件源够全够新,但不一定每天都用,所以不要滚动更新。这次选择 Fedora Workstation 38,然后精简 GNOME 等服务,最终实现:

  • 空闲时内存占用低于 300MB
  • 桌面环境随用随开

基础配置

  • 开启 sshd:
sudo systemctl start sshd
sudo systemctl enable sshd
  • 修改主目录文件名为英文:
export LANG=en_US
xdg-user-dirs-gtk-update

转换后重新设置系统语言为 zh_CN,重启,登录时选中不转换和不再提示。

sudo rm /etc/yum.repos.d/_copr\:copr.fedorainfracloud.org\:phracek\:PyCharm.repo
sudo rm /etc/yum.repos.d/rpmfusion-nonfree-steam.repo
  • 安装 Go + nvim 开发工具:
sudo dnf install vim neovim go gcc-c++

删除软件更新服务

刚开机的内存占用就有 1.5GB,其中 packagekitd 占很大一部分。

PackageKit 是一个 dnf、apt 之类包管理工具的通用抽象层。但是我只用 dnf,不需要 gnome-software 等“高级”工具,更何况还有大量资源占用等问题。

所以把这两个组件删掉:

sudo dnf remove gnome-software PackageKit

节省了 600MB 内存。

关闭 GNOME 桌面环境

大部分时间是 SSH 使用,只有特殊情况才会 RDP 远程桌面连接。所以关闭 gdm(GNOME Display Manager) 来节省资源占用(参考):

sudo systemctl stop gdm
sudo systemctl disable gdm

需要时再手动开启:

sudo systemctl start gdm

节省了 600MB+ 内存。

远程桌面

需要使用桌面环境时,先启动 gdm,再远程连接。

自动登陆+解锁远程登陆密码

这个版本的远程桌面由 GNOME 内置实现,需要有一个正在运行的用户会话,所以要先用 VNC 登陆。

为了方便,可以设置 GNOME 自动登陆(文档):

# /etc/gdm/custom.conf

[daemon]
AutomaticLoginEnable=True
AutomaticLogin={{ username }}

但会发现每次自动登陆后远程桌面密码都被重置为了随机密码。这是由于系统上服务的密码是以加密形式存储于密钥环(keyring),默认密钥环的解锁密码就是登陆密码,在用户正常登录时会一起解锁。但自动登陆没有输入密码来解锁,所以 GNOME 读取不到其中中加密的远程登陆密码,就会随机生成一个新密码。

如果把默认的密钥环密码设置为空,系统上所有存储的密码都会是明文,不安全。

参考网友的方法,创建一个无密码的不安全密钥环来单独存放 RDP 密码:

  1. 安装密钥环管理工具,安装后可以找到「密码和密钥」应用:
sudo dnf install seahorse
  1. 在工具中,查看默认的「登陆」密钥环,里面应该已经存放了名为「GNOME Remote Desktop RDP credentials」的远程桌面密码,删除这条记录
  2. 创建一个新的密钥环,密钥环的密码设为空,将该密钥环设为默认
  3. 重启系统以应用新的默认密钥环
  4. 设置远程桌面密码,再次查看之前创建的新密钥环,里面应该已经有了「GNOME Remote Desktop RDP credentials」这条记录。之后远程桌面会使用该密钥环读取和设置密码
  5. 恢复默认密钥环为原先的「登陆」,重启系统

注意:要修改默认密钥环来让 GNOME 创建密码条目,这种记录会显示为「密码或密钥」,而手动创建的密码记录显示的是「已保存的便签」,测试发现不会被 GNOME 使用。

锁屏时使用远程桌面

根据 GNOME 远程桌面的设计,远程和本地的屏幕是同步的,本地屏幕锁定时,远程桌面的连接就会断开。

这与 Windows 接入远程桌面后就会让本地桌面自动进入锁定的运作方式不同。并且 GNOME 官方没有对这个功能请求做正式回复。

目前暂时关闭了自动锁屏。