[hardware development] 深度优化v25在老硬件上的运行,成为钉子户
Tofloor
poster avatar
忘怀
deepin
2026-01-05 14:10
Author

9000字+抽象长文

由于硬盘涨价,内存涨价,CPU涨价,XXXX的都涨价,发一篇文章讲解如何当硬件钉子户实现硬盘占用巨小(轻松达到磐石25的一半以下),内存占用巨小,系统运行飞快,跑分遥遥领先。

老机器的性能其实往往还是丝滑得一笔,哈哈哈哈,笔者使用12年前的双核四线程i5 4310M写完这篇文章并上传,使用者可以自行对比各项微观宏观指标例如phoronix test suite中就有很多性能测试,io测试可以用kdiskmark,不同硬件上不同方法性能提升量化不同,不能一概而论。

展示Linux桌面超强定制性的时候到了,以下全部过程必须在虚拟机中先走一遍防止操作错误。!!!每项操作可行性和安全性自己评估。!!!

由于边际效用递减,本人还在研究强力的内核省内存方法,还没放出来,敬请期待。

1.全新安装deepin 23 or 23.1升级25

试过如下施工后除磐石不可用外玲珑可用,正常升级可用,可以找一个btrfs子卷教程用timeshift来做备份

注意非全新安装的系统可能软件依赖被破坏导致无法正常升级或者升级后掉包! 必须全盘备份再操作。

这样系统避免了磐石和玲珑包导致过大硬盘占用,以及没有磐石可以彻底删除包来释放空间。

注意 安装后浏览器只有玲珑包格式 建议提前备份浏览器数据 以及建议使用Firefox或chromium之类的代替(其实有w3m或lynx之类的极其轻量的浏览器或者falkon

这种使用自带qt6webengine浏览器库的浏览器,缺点是磁盘占用小但是运行内存占用可能比chrome更大)

做法:

0.9 如果你的sudo执行慢

sudo管理员权限运行编辑器如nano,vim,emacs等等自选,也可以直接文件管理器右键管理员权限启动用文本编辑器改。。。
修改 /etc/nsswitch.conf 文件 ,修改下面hosts这行
把 myhostname 放在file 后面 记得用空格,最终我的效果如下:
hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns wins

1.1 编辑系统仓库源文件替换成25的源

修改25系统仓库源文件 /etc/apt/sources.list文件添加下面这行25官方源或者使用中科大或华中科大源,用#注释其他的源减少更新apt update压力

这个是传统的sourcelist格式,修改/etc/apt/sources.list.d/debian.source是DEB822格式

(不使用mirrorz的原因是mirrorz里面没有显示deepin,不使用清华大学源的原因是因为清华大学源支持的太多负载太高了)

deb https://community-packages.deepin.com/beige/ crimson main commercial community

中科大源
deb https://mirrors.ustc.edu.cn/deepin/beige/ crimson main commercial community

华中科大源

deb https://mirrors.hust.edu.cn/deepin/beige/ crimson main commercial community

1.2 编辑应用商店源文件替换成25的源

修改25应用商店源文件 /etc/apt/sources.list.d/appstore.list添加下面这行25官方源

deb https://com-store-packages.uniontech.com/appstore-V25 crimson appstore

1.3 编辑驱动仓库源文件替换成25的源

修改25驱动仓库源文件/etc/apt/sources.list.d/driver.list 添加下面这行25官方源

deb https://community-packages.deepin.com/driver-25/ snipe non-free

1.4 升级后不要马上重启,执行控制中心升级或命令进行升级(如果dist-upgrade不会选建议用控制中心来升级)

升级后不要马上重启 升级后不要马上重启 升级后不要马上重启

使用控制中心升级可以忽略下面两个命令:

sudo apt update

sudo apt dist-upgrade

1.5 更新后执行下面命令修复桌面环境

往往上一步可能卸载了一些不应该卸载的包,执行下面命令安装几个主要的虚包来重建依赖

sudo apt install deepin-desktop-environment-base

sudo apt install deepin-desktop-environment-core

sudo apt install deepin-desktop-environment-extras

sudo apt install deepin-desktop-environment-cli

*** 1.6 执行自动移除 不建议小白运行 但可以减少系统存储占用

如果或者预期遇到非预期的软件包被删了 请查看apt历史记录并询问AI如deepseek安装回被移除的包

apt历史记录日志位置/var/log/apt/history.log和/var/log/apt/history.log.*.gz(gz压缩的)

这个命令查看手动安装的包

apt-mark showmanual

这个命令查看自动安装的包

apt-mark showauto

移除这个grub钩子 否则导致autoremove进程失败

sudo rm /etc/grub.d/99_deepin-boot-kit

下面命令会移除不再被依赖的包

sudo apt autoremove

手动安装玲珑中会有的自带包或者在玲珑安装 不需要的可以不安装

安装deepin字体管理UI

sudo apt install deepin-font-manager

安装deepin日历

sudo apt install dde-calendar

安装deepin文本编辑器(文本编辑器有bug可能不落盘)

sudo apt install deepin-editor

剩余的

sudo apt install deepin-album deepin-camera deepin-draw deepin-image-viewer deepin-mail deepin-manual deepin-movie deepin-music deepin-reader deepin-voice-note

1.7 重启进入新系统

1.8 修复玲珑无法使用的问题

加一个假仓库

ll-cli repo add stable-2 https://linglong.deepin.com

删掉原来的仓库

ll-cli repo remove stable

加回来

ll-cli repo add stable https://mirror-repo-linglong.deepin.com

删掉假仓库

ll-cli repo remove stable-2

测试可以安装如浏览器了

ll-cli install org.deepin.browser

  1. 在新系统中关闭窗口特效

老硬件上或虚拟机里往往显卡性能巨大差导致窗口特效占用资源极高,

如果之前关闭过窗口特效需要切换下重新再关闭,否则窗口特效会关闭不完整。

  1. 内存相关

在新系统中关闭透明大页

此功能有助于数据库类应用的性能但会导致额外的内存消耗

本次启动临时生效组合

echo never | sudo tee -a /sys/kernel/mm/transparent_hugepage/enabled

然后如果never被选中说明生效了

cat /sys/kernel/mm/transparent_hugepage/enabled

永久生效方法

sudo或root下添加这个文件 /etc/default/grub.d/11_never_transparent_hugepage.cfg

文件内容为下面这行,意图就是继承/etc/default/grub的GRUB_CMDLINE_LINUX_DEFAULT启动参数而不覆盖

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT transparent_hugepage=never"

sudo update-grub

在新系统中修改kswapd内存回收水位

对于内存少和性能差的机器往往更早唤起内核内存回收进程效率更高,否则进入min水位内核从异步切成同步回收内存会导致应用申请内存十分卡顿。

sysctl -a | grep vm.watermark看到

vm.watermark_scale_factor=10 对于小内存机器低性能机器来说太保守了

默认10的单位是0.1%可用内存,最大值是3000为30%,这个对于小内存机器十分捉急,

使用sudo sysctl -w vm.watermark_scale_factor=1000 设置10%可用的时候就开始叫醒kswapd来保证内存尽可能不掉入直接回收

  1. 在新系统中关闭CPU漏洞缓解

老CPU往往有各种各样的CPU侧信道漏洞,会导致程序可以利用漏洞违反权限限制以低权限进程获得root权限才能访问的数据

但是对于一般桌面系统而言 往往所有程序都运行在同一用户中,可以获取到用户的其他数据如ssh秘钥之类的本来就会构成重大问题

因此运行程序本身需要信任程序的前提下 可以添加mitigations=off来关闭内核对CPU侧信道漏洞的缓解措施以提升老CPU本就雪上加霜的性能

sudo或root下添加这个文件 /etc/default/grub.d/111_mitigations_off.cfg

文件内容为下面这行

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT mitigations=off"

sudo update-grub

  1. 在新系统中关闭文件管理器全文搜索功能

文件管理器->设置->高级设置->搜索

此功能会降低io性能导致老系统本来就很差的io性能雪上加霜了。

  1. 禁用不需要的系统服务

例如 没有2G、3G、4G、5G网卡也就是modem的可以禁用这个服务

sudo systemctl disable --now ModemManager.service

例如不使用网络共享可以关掉samba服务和nmbd服务 不使用蓝牙可以关掉蓝牙服务

例如/etc/xdg/autostart/里面的自动启动项看着禁用

  1. 设置dock栏一直隐藏

deepin的dock栏和windows的任务栏一样有刷新开销 隐藏了就不刷新了 可以提升性能

  1. 安装powertop测试延长续航

笔记本电脑上把默认为了稳定不打开的运行时节能选项全开了能有效延长续航

安装

sudo apt install powertop

运行

sudo powertop

按TAB切换到tunables里面按上下左右把bad全空格改成good然后esc退出

这个是临时生效的 如果有不稳定的现象如死机重启会自己恢复

  1. 根据情况调整cpu调频驱动scaling_governor或epp

默认的ondemand已经是性能激进型的,如果是服务器不怕浪费电可以调performance但是这个在笔记本电脑上只会劣化,

可以schedutil和conservative和ondemand都试试看

如果是英特尔或者AMD CPU且用pstate的驱动,看/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver是不是pstate,

如果是的话 powersave的意思是调频 然后去调/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference

值可以是energy_performance_available_preferences的字符串或者是数字0-255 不同数字的能效不一样

performance的意思是preference是最积极模式不能调相当于0

需要省电也可以类似Windows上调整调频驱动的epp属性

  1. 卸载占用磁盘高的软件包

举例

卸载uos-ai,同样方法可以实现卸载fonts-adobe-source-han-cjk字体等等占用高的软件包

下载包

apt download uos-ai

解压包

dpkg-deb -R uos-ai***.deb uos-ai

清空包

uos-ai目录中删除DEBIAN目录中的conffiles和除了DEBIAN目录的其他目录

重新打包

dpkg -b uos-ai

重新安装空包实现卸载

sudo dpkg -i uos-ai.deb

  1. 使用具有透明压缩功能的文件系统如btrfs+zstd并就地把一些并不需要高性能访问的目录做透明压缩

如/usr/share目录中有大量如deepin-manual文件夹 fonts文件夹 doc文件夹等等占用空间很大

利用ncdu等工具分析磁盘占用,删除/lib/firmware中例如mellanox网卡固件这种占用大但是桌面不一定用的上的固件文件夹

  1. 打开zram作为swap

zram作为swap来做压缩内存可以有效降低对内存的需要,具体可以参考别的文章,只能说非常有用,

  1. 调节sysctl内核运行时参数

sudo sysctl -a列出参数然后让AI根据你的系统推荐下怎么调参 记得记下来为什么调的然后保存到/etc/sysctl.d/下面新建文件出来

  1. 关闭 kmem cgroup

类似上文传递cgroup.memory=nokmem内核启动参数,可以继续降低内存占用

  1. io调度

如果开一大堆程序在机械硬盘上面抢io,建议修改对应盘上的io调度器为bfq,然后设置不同进程的ionice

  1. CPU调度相关

通过taskset设置进程亲和性,例如把多线程性能差的进程放置在一个频率或者效率最高的核心上,或绑定进程到单个NUMA上减少调度迁移等等。

***通过sched_ext使用BPF程序写自定义调度器,https://github.com/sched-ext/scx仓库有一系列的调度例子。

  1. ext4文件系统减少预留空间

先lsblk 找普通用户有权限写的盘的/dev/路径 例如/dev/sda5

可以把为root用户保留的空间设置到1%,对于大硬盘用户来说还是很实用的,非系统分区可以直接设置0

sudo tune2fs -m 1 /dev/sda5

  1. 文件系统挂载参数调整继续提升性能

修改/etc/fstab 把需要提升性能的挂载点的relatime改成noatime不更新访问时间

  1. 无线网卡关闭节能提升性能

ip a或者别的什么命令找到wl前缀开头的接口如wlan,wlo1,wlp1s0这之类的,多个网卡设置多次

获知节能状态 iw wlo1 get power_save

设置节能状态 sudo iw wlo1 set power_save on

关闭节能状态 sudo iw wlo1 set power_save off

  1. 调整内核抢占启动参数

6.6以上内核支持启动时决策抢占,也就是可以传内核启动参数类似上面的修改启动参数,根据使用场景选择

抢占的意思是内核会不会主动让出来给应用打断,

传preempt=none是内核不被打断,此时吞吐效率最高,适合服务器,

传preempt=voluntary是内核在内核添加的调度点让出,此时吞吐效率较高同时提高桌面场景响应性,适合桌面,

传preempt=full是内核在内核所有非关键部分可抢占,此时桌面场景应用响应性最高,适合桌面快速响应,但是会降低吞吐性能。

  1. 安装有内核模块压缩的内核

sudo apt install linux-headers-6.12.63-amd64-desktop-rolling linux-image-6.12.63-amd64-desktop-rolling

确认生效的方法是uname -a命令显示 #25.01.01.10

zcat /proc/config.gz | grep CONFIG_MODULE_COMPRESS不显示 is not set

此内核打开了内核模块压缩可以减少/lib/modules下的占用

运行 du -sh /lib/modules/* 命令可以看到各个内核的占用

如果这个内核能正常使用就能卸载其他占用更高的内核来节约硬盘空间(包名为目录下其他的内核名字)

如6.12.60-amd64-desktop-rolling对应

sudo apt remove linux-headers-6.12.60-amd64-desktop-rolling linux-image-6.12.60-amd64-desktop-rolling

*** 22. 自行编译系统包,使用-Os参数,可以降低硬盘占用,如果是运行的系统服务可以降低内存占用,这个很折腾

需要使用另外一台电脑编译

通过添加deb-src源

deb-src https://community-packages.deepin.com/beige/ crimson main commercial community

或中科大源

deb-src https://mirrors.ustc.edu.cn/deepin/beige/ crimson main commercial community

华中科大源

deb-src https://mirrors.hust.edu.cn/deepin/beige/ crimson main commercial community

apt update更新后apt source xxx下载某个xxx包的代码

使用mk-build-deps安装依赖

sudo apt install devscripts

sudo mk-build-deps -i xxxxxx包的路径下/debian/control来安装依赖 这样卸载了虚包之后autoremove能自动删掉安装的构建依赖

参考 https://wiki.debian.org/HardeningWalkthrough

添加下面几行到debian/rules文件里面 如果已经有修改DEB_CFLAGS_MAINT_APPEND就增加在已经有的那行末尾

DEB_CFLAGS_MAINT_APPEND=-Os

DEB_CPPFLAGS_MAINT_APPEND=-Os

DEB_CXXFLAGS_MAINT_APPEND=-Os

打包
dpkg-buildpackage -uc -us -nc -b

大硬盘的可以无视

*** 23. 自行编译内核,打开CONFIG_CC_OPTIMIZE_FOR_SIZE,这个比较折腾

具体可以见自己编译内核的文章

deepin的6.12内核源码在

https://github.com/deepin-community/kernel的linux-6.12.y分支
国内源为

https://gitcode.com/deepin-community/kernel的linux-6.12.y分支

内核构建依赖包参考如下

sudo apt install bc build-essential zstd flex bison libssl-dev make libelf-dev git debhelper pahole libncurses-dev gcc-12-plugin-dev

git clone https://gitcode.com/deepin-community/kernel -b linux-6.12.y --depth=1 git拉代码到文件夹里面

进文件夹make deepin_x86_desktop_defconfig 设置默认桌面配置

make menuconfig

按\查找CONFIG_CC_OPTIMIZE_FOR_SIZE 按1进入然后从performance选到size然后save保存

make bindeb-pkg -j$(nproc) 按nproc也就是机器线程数编译

sudo dpkg -i linux-headers-xxx.deb linux-image-xxx.deb 安装编译后的内核包 dbg包是调试符号

可以用clang编译内核打开LTO也就是LinkTimeOptimize链接时优化,还有PGO也就是根据perf数据进行优化,还有BOLT,并调节编译mtune针对本机编译等等。

简单的用clang编译的方法:

安装clang编译器套件和链接器 sudo apt install llvm clang lld

加上LLVM=1配置 make LLVM=1 deepin_x86_desktop_defconfig

make menuconfig

按\查找CONFIG_LTO_CLANG_THIN 按1进入然后从None选到thin然后save保存,选full也可以,但是编译时间更长

make LLVM=1 bindeb-pkg -j$(nproc) 按nproc也就是机器线程数编译

*** 24. 自行编译内核,裁剪不需要的配置,这个很折腾

具体见裁剪内核配置的文章,只能说也是有用的,例如在小内存机器上关闭五级页表,选择三级页表,关闭虚拟化KVM,关闭NUMA,针对特定驱动关闭节能等等 官方不能关但是定制可以关
另外deepin内核默认启用了MGLRU也就是CONFIG_LRU_GEN_ENABLED=y

Reply Favorite View the author
All Replies
deepin流云
Super Moderator
Community OP
2026-01-05 14:18
#1

硬核分享kissing_heart

Reply View the author
deepin-superuser
deepin
2026-01-05 14:40
#2

文章不错 就是格式乱了点

Reply View the author
Misaka
deepin
2026-01-05 14:47
#3

applaud

Reply View the author
tacat
deepin
2026-01-05 15:08
#4

好多知识点呀

Reply View the author
lihuajian
deepin
2026-01-05 20:05
#5

hi

Reply View the author
158******65
deepin
2026-01-05 23:15
#6

小白表示看不懂,玩不了😂

Reply View the author
LEARCAT
deepin
2026-01-06 00:20
#7

老电脑我还是装20.9,挺好用的,资源占用低很多

Reply View the author
expskywalker
deepin
2026-01-06 09:15
#8

调整vm.watermark_scale_factor参数过大会导致兼容引擎程序运行错误。

Reply View the author
nero28
deepin
2026-01-06 15:23
#9

看了一部分,滑到最下面来评论,这么长,还是继续用windows10吧

Reply View the author
忘怀
deepin
2026-01-06 16:42
#10
nero28

看了一部分,滑到最下面来评论,这么长,还是继续用windows10吧

同样的思路也适用Windows

Windows可调的也有很多 我简单写了一下

  1. 卸载掉系统自带的不使用的包,如Onedrive
  2. 在新系统中关闭窗口特效

在系统属性的高级系统选项里面或者设置的窗口效果里面

  1. 内存相关

调整虚拟内存配置,设置虚拟内存为手动管理放在固态硬盘而非机械硬盘上

  1. 在新系统中关闭CPU漏洞缓解

使用如Inspectre关闭CPU漏洞软件缓解https://www.grc.com/inspectre.htm

  1. 在新系统中关闭Windows文件管理器全文搜索功能和Windows Search服务
  2. 禁用不需要的系统服务

比如系统遥测服务

  1. 设置dock栏一直隐藏

隐藏了就不刷新了 可以提升性能

  1. 修改高级电源选项可以调节CPU和硬盘和网卡配置
  2. 卸载占用磁盘高的软件包

举例 用spacesniffer软件查系统盘看哪里占用高分析是不能卸载的系统组件还是软件的一部分

  1. 用dism++配置系统压缩
  2. 使用dism++调节系统属性
Reply View the author
qq8645
deepin
2026-01-07 14:34
#11

为执着的技术钻研精神点赞👍

Reply View the author
Amber
deepin
6 hours ago
#12

我的A10-6800K超频加RX6600加512固态加16GB 2133内存用V25已经够流畅了tail

Reply View the author