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

推荐订阅源

G
GRAHAM CLULEY
T
Tenable Blog
Know Your Adversary
Know Your Adversary
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
S
Security Affairs
NISL@THU
NISL@THU
O
OpenAI News
Attack and Defense Labs
Attack and Defense Labs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
Schneier on Security
Schneier on Security
S
SegmentFault 最新的问题
S
Schneier on Security
G
Google Developers Blog
V
V2EX
C
Check Point Blog
U
Unit 42
Google DeepMind News
Google DeepMind News
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
T
The Exploit Database - CXSecurity.com
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
S
Secure Thoughts
博客园 - 司徒正美
Recorded Future
Recorded Future
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
K
Kaspersky official blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
博客园 - 聂微东
N
News and Events Feed by Topic
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
W
WeLiveSecurity
博客园 - Franky

/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 官方没有对这个功能请求做正式回复。

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