chenxinyi 发表于 2024-8-13 23:51

小记Thinkpad E16安装Linux Mint 22,调校桌面环境和CPU性能, Bitlocker加密NTFS磁盘自动加载,驱动,睡眠,应用程序,实用技巧

本帖最后由 chenxinyi 于 2024-10-11 15:05 编辑

前阵子对老机T420s装了新系统Linux Mint 21.3.感觉不错,于是在使用了半年多的新机E16也装一下,初体验不错,

安装Linux-mint 22简述

安装Linux-mint 22,仍采用VMWare安装模式,保留物理硬盘上的Windows 11 23H2

由于主物理硬盘MBR分区最多支持4个主分区,所以,只能用diskgenius在物理硬盘上新建扩展分区/dev/sda5,再在下面划出一个64GB的小分区(逻辑分区/dev/sda6)和100MB uefi引导分区(/dev/sda4),系统装在64GB分区,grub-boot loader最后安装失败告终,是无法从物理硬盘启动的.
想了下,可能安装时选择了grub-boot loader安装在64GB系统分区,实际上应该选择扩展分区/dev/sda5,手工用Linux mint live CD引导,在控制台敲入boot-repair启动修复器(图形界面),
找到安装在扩展分区/dev/sda5(不要用默认的/dev/sda, 那样就装在物理硬盘的启动扇区了!), 修复完成后,实模式GRUB2重启引导物理硬盘,可以从Linux Mint的EFI分区进入,顺利引导成功!
(Grub2能自动识别Windows boot manager- 比如,我这个物理硬盘的其它分区还安装了Windows 11 23H2,并且有Windows UEFI分区) 

Linux-mint 22主要两个问题:

1. 桌面分辨率在非整数下缩放(experimental)
100%, 200%, 300%整数缩放,图形界面显示和各种操作都很平滑.
但是,在非整数下缩放125%(1.25倍)/150%(1.5倍)/175%(1.75倍), 是将显示分辨率先调整比设置要大一倍的到整数倍,再进行缩放回到所设置的非整数倍,在性能上会有损失.
比如,如设置150%的非整数缩放,Thinkpad E16是2.5k的分辨率,图形界面放大一倍后200%,再缩小回125%,这一来回图形渲染的速度肯定要慢不少,特别是用鼠标拖放窗口时,
可以明显看到有拖影和滞后现象.
所以,高分辨率的屏幕最好还是保持100%的缩放不变,然后放大字体,图标,面板和鼠标指针,详见:
10 Things to Do First in Linux Mint 22 Cinnamon

2. 默认安装后, CPU i7-13700H是跑在性能最低的PowerSave模式
均速400MHz,不注意的话还以为机器很安静,温度很低,风扇不转,如果只是上上网看不出来什么.
但是一旦成为生产力,就有明显感觉很差,再用stress命令压测全部大小核(总共20个),
stress -t 120 -c 20再开一个终端,输入下面命令监控CPU 频率:
watch -n.1 "cat /proc/cpuinfo | grep \"^pu MHz\""
发现CPU最高总体平均频率也只能维持在1.0GHz附近.

解决办法是安装cpufrequtils,修改cpu频率管理为性能模式,参考: https://forums.linuxmint.com/viewtopic.php?t=418363
修改配置文件/etc/init.d/cpufrequtils
不仅要改动GOVERNOR="performance",同样要指定MIN/MAX速度(这里设置最小3.2GHz/最大4.8GHz)
注: GOVERNOR="ondemand"更合适一些,即能保证性能,也能在待机时功耗比较小,负载时保证性能.
GOVERNOR="performance"
MAX_SPEED="4800000"
MIN_SPEED="3200000"

另一个一地方要改的是check_govenor_avail ,直接返回0就可以了,不然重启Linux mint系统后,默认governor是powersave,这个函数永远检测不到我们刚配置好的performance
也就不会继续执行下面的cpufreq-set命令配置每个内核的性能和频率.

check_governor_avail() {
      info="/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"
      #if [ -f $info ] && grep -q "\<$GOVERNOR\>" $info ; then
      #       return 0;
      #fi
      return 0;
}

改完后,systemctrl重启cpufrequtils.service就可以了.
cpupower-gui 用界面调节CPU频率更方便

再作stress命令压测全核,CPU频率平均可以保持在2GHz左右,但这样性能还没有完全发挥,
找到和Windows 下ThrottleStop类似的解锁功耗的linux bash脚本setPL.sh (需安装依赖sudo apt install devmem2 msr-tools),解锁功耗后,全核100%压测, 增加到2.2GHz对比跑了一个自已的写python测试全核并行20x1亿次乘方运算程序,在Windows上运行要1分钟,在调校后的Linux Mint上运行只需0.82分钟.在CPU全核100%负载下CPU温度最高只有80度,也许还有上升空间...

没错,还有上升空间,就是解锁温度墙,网上有现成的python应用undervolt ,这个应用程序必须用sudo权限执行,所以,要安装在root空间,
先输入命令sudo su进入管理员环境,再执行命令pipx install undervolt (如果没有pipx , 用apt install pipx即可), undervolt就被装到/root/.local/bin下了,
安装完成后再执行命令pipx ensurepath,确认/root/.local/bin被添加到环境目录.
整个安装步骤类似于Windows下安装到特定用户目录下,并配置好环境路径PATH,以防止应用程序找不到,只不过Linux mint 22 将每个用户空间的环境路径单独配置,
用pipx安装是最好的选择.

说了一大堆,看不懂也没关系,反正装好undervolt以后,下一步是执行下面命令新建/配置undervolt.service
xed /etc/systemd/system/undervolt.service
粘帖下面代码保存即可! (注意: -t 95 设置温度墙比较高, 如果在长负载95度高温下运行, 可能会导致CPU温度瞬间过高导致保护性降频 - 比如集显玩3D游戏温度过高掉帧 , 建议80~85比较好)

Description=Undervolt


ExecStartPre=/root/.local/bin/undervolt -t 95 -p1 45 128 -p2 45 0.5
ExecStart=/root/setPL.sh 45 45


WantedBy=multi-user.target
执行下面命令,启动undervolt.service(重启Linux mint系统仍有效),这样一劳永逸,每次开机进入Linux mint能保持解锁功耗/温度墙了.

sudo systemctl daemon-reload
sudo systemctl start undervolt.service
sudo systemctl enable undervolt.service
功耗和温度墙均解锁后,全核100%压测, 继续对比跑了一个自已的写python测试全核并行20x1亿次乘方运算程序,对比仅解锁功耗墙运行只需0.82分钟,现在全部解锁后只需0.65分钟!!!在CPU全核100%负载下CPU温度最高95度,CPU频率监控也能在更高温度下维持更高的平均主频2.4GHz附近(仅P核),完全符合undervolt.service的配置!这也符合自已对于实模式下跑Linux系统性能的期待!

最后,说一下undervolt.serivce的详细配置命令和参数:

ExecStartPre执行undervolt命令解锁温度墙(参数-t 95)允许CPU最高温度到95度,并同时设置长/短功耗墙(-p1 45 128 / -p2 45 0.5)
ExecStart执行setPL.sh命令同样设置功耗墙.
感兴趣的同学可能要问:为啥要重复执行setPL.sh设置功耗墙?因为,undervolt好像没有锁定MMIO寄存器,会导致CPU温度过高时不会保持在你设定的较高功耗上,
而选择了BIOS系统微码的动态功耗墙方案,所以,我们还是要利用setPL.sh再重复设置功耗墙,顺便将MMIO寄存器给锁定!
(来自setPL.sh作者的解释, 貌似此作者得到了ThrottleStop作者的真传...)



Linux Mint 22 驱动和应用程序体验

Linux Mint 22居然自带了键盘背光管理
https://www.ibmnb.com/forum.php?mod=image&aid=3259943&size=300x300&key=e1935b6c925d7560&nocache=yes&type=fixnone
参考:https://www.ibmnb.com/thread-2053595-1-1.html
Thinkfan 仍然可用,手工定制风扇转速,只是thinkpad_acpi驱动无法支持隐藏的最高转速.

本来想装Deepin版本微信, QQ但没有成功,可能Linux mint 22里的库文件版本太高了,Deepin版本的应用程序更新太慢了.
索性直接Flatpak沙盒模式下安装微信,QQ,Telegram, SKype通讯软件一切正常,大致使用下没什么问题.微信有声音通知消息,语音通话没问题.

打印驱动安装比较简单,我这里办公的无线打印机,输入ip地址就能自动找到,甚至能自动帮助加载数据库已存在驱动,
要装原厂驱动也容易,一般的打印机驱动都有包含Linux支持的rpm或deb包,从包里解压出pdd描述文件,可以直接安装.


Bitlocker加密NTFS磁盘自动加载

多系统,多分区互访是必须做的事,在Linux Mint下访问Windows系统分区/数据分区,都很简单,
直接在文件管理器,点击后加载就可以了,但是对于Bitlocker加密后的分区访问,会提示恢复密钥,正确输入后(可选择永远记住,下次不用再输),
解锁后就可以访问了,如果要在启动Linux Mint时自动解锁Bitlocker,自动加载如何办呢?Reddit上找到一个最优方法,
https://www.reddit.com/r/Manjaro ... tfs_partition_with/

自动解锁就是手动配置/etc/crypttab
终端输入sudo xed /etc/crypttab 新建并添加一行(下面是示例,看后面解释,不要完全抄作业,如果是多个分区解锁,就添加多行):
encrypt_shared_1 /dev/nvme1n1p3 /etc/cryptsetup-keys.d/nvme1n1p3.key bitlkencrypt_shared_1 是你给这个自动解锁起的名字 (任意取,多个分区多行,名字不要重复)
/dev/nvme1n1p3 是要解锁的分区设备名(不知道的可以输入命令blkid检查所有分区带Bitlocker字样的)
/etc/cryptsetup-keys.d/nvme1n1p3.key (纯文本密钥文件,直接粘帖你在Windows Bitlocker恢复密钥序列号,保存即可. 当然也可以选其它路径,但最好放这里,多个分区,多个密钥分件码放好)

这样配置好自动解锁后,如果你在上面配置行给定的密钥文件找不到,登录前会让你输入解锁密码!

自动挂载就是配置/etc/fstab ,直接可以通过Disks工具,图形化配置,选择好加载分区,点击gear齿轮图标,弹出菜单中选Edit mount Options(编辑加载选项)
取消User session Defaults,并确认勾选Mount at system startup(系统启动时加载),Mount point(加载点) / Identify as (分区标识)都配置好,点OK
这样其实就会在/etc/fstab里新键一行自动挂载磁盘分区命令了 (不要完全参考下图
注意:如果挂载的分区是 NTFS类型,必须手工将Filesystem type 改为ntfs3 (不要用auto,也不要用ntfs或ntfs-3g), 否则,
启动时mount将会用ntfs不支持 写入操作, 即使你的系统里安装了ntfs-3g驱动,加载后虽能读写,但这个驱动是在用户空间,性能不太好,且不支持Windows ACL



后续如有新的体验,将继续记录...



chenxinyi 发表于 2024-8-15 10:34

本帖最后由 chenxinyi 于 2024-12-18 10:01 编辑

实用技巧篇


[*]系统主题

  为了使用更顺手,下载安装了Windows 10 light主题,只分配给Applications (应用程序),
  但某些应用程序不会跟随,比如下面:


[*]改变终端窗口主题
       仍然始终不变的是黑色标题栏, 但是右上最小化/最大化/关闭按钮又跟随系统主题(黑色),结果是一团黑,
  去终端窗口Edit > Preferences > Generl > Theme variant 不要选默认Dark style,改成Follow system style(紧随系统样式)


[*]任务栏面板
       我这里装了温度监控器Sensors Monitor,配置好显示CPU/DISK温度,还有风扇转速,效果杠杠的.
  CPU Frequency也很不错,显示一个总体频率就OK
  系统预装好的Removable drives 很有用,U盘加载/卸载都很方便.

       预装的声音控制面板(Sound applet) 有个小问题, 鼠标右键在声音图标上,点Configure...(配置),取消掉"Hide system tray icons for compatible players'
       有些音乐播放器的tray icon驻留图标不出现的问题立解.




[*]任务栏自定义"开始"图标
  这里预先下载了一个Windows 11的图标文件,存好在某个文件夹里.
  在原始Mint"开始"图标上鼠标右键,选择Configure ...(配置),就很容易替换成我们自已的了.





[*]电源管理设置
针对笔电的关闭盖子睡眠,只支持 Suspend和关机,Suspend类似于Windows下的S0低功耗现代待机,
至于休眠选项,网上查了下Linux做的不好,而且十分依赖于硬件. Linux Mint 22没有开放休眠选项.

说到Suspend待机,还是和Windows 11一样的,进入待机模式后,Thinkpad E16的呼吸灯慢闪.
但是,蓝牙鼠标或USB无线鼠标设备在待机时移动,就会唤醒系统,这和Windows 11是一样的,
是有办法解决的,找到Linux Mint论坛的帖子,解决方法是一行长命令,运行后会创建一个服务进程,
grep -f <(lspci | grep USB | cut -d " " -f 1) \
<(cat /proc/acpi/wakeup) | cut -c 1-4 | tr -d '\t' \
| sed -e 's|^|echo |' -e 's|$| > /proc/acpi/wakeup|' -e '1s|^|#!/bin/bash\n|' \
| sudo tee /usr/local/bin/nowakeupusb >/dev/null \
&& sudo chmod +x /usr/local/bin/nowakeupusb && printf '%s\n' '' \
'Description=no-wakeup-usb' '' \
'ExecStart=/usr/local/bin/nowakeupusb' \
'' 'WantedBy=multi-user.target' \
| sudo tee /etc/systemd/system/no_wakeup_usb.service >/dev/null \
&& sudo systemctl enable no_wakeup_usb.service创建成功后,再启动服务:
sudo systemctl start no_wakeup_usb.service

sudo systemctl enable no_wakeup_usb.service

这样就可以完全禁止USB设备唤醒(实际也能禁止蓝牙设备唤醒)

要想失效服务:
sudo systemctl disable no_wakeup_usb.service

说说这一长串指令的原理,其实就是找USB总线控制器的在ACPI表里的编号(4个字母), 比如,我机器里找到
两个雷电USB控制器和一个USB 3.2 XHCI控制器,然后,将这三个名称编号写入/proc/acpi/wakeup,这样就失效USB设备唤醒了.
lspci | grep USB
00:0d.0 USB controller: Intel Corporation Raptor Lake-P Thunderbolt 4 USB Controller
00:0d.2 USB controller: Intel Corporation Raptor Lake-P Thunderbolt 4 NHI #0
00:14.0 USB controller: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller (rev 01)

不晓得Windows 11下能不能重编译覆盖ACPI表的方法达到类似目的!?


[*]Nemo 文件管理器 (Cinnamon桌面)

建议安装nemo-image-converter
sudo apt install nemo-image-converter装成功后, 在Nemo文件管理器中,右键任何文件都会有一个“压缩"(compression)的快捷菜单,如果是图片,还会有"调整图像大小"(resize)和"旋转图像"(rotate)的快捷菜单,
非常方便对图片文件处理。


[*]Flatpak沙盒应用程序

微信,QQ一类的应用程序都依赖于Flatpak沙盒启动,但是这些应用程序不具有Linux Mint官方安全担保的,
原因是Flatpak打包的Windows应用程序可能存在滥用权限问题, 这时就需要安装Flatseal来管理每个Flatpak应用权限,
sudo flatpak install flathub com.github.tchx84.Flatseal额外的好处还可以修改字体大小,比如,Flatpak下安装的微信应用没有选项去调整字体大小,这时可以用Flatseal做这个事,
启动Flatseal后,定位到微信 Wechat, 在Evnironment下添加一行:
QT_SCALE_FACTOR=1.25重启微信后,发现界面字体大了些!
用 Flatseal 图形化管理 Flatpak 应用的权限
Font size in Flatpak OBS


[*]Libreoffice 添加中文语言包


首先要添加第三方Libreoffice ppa仓库 , 然后更新仓库, 安装中文包即可

sudo add-apt-repository ppa:libreoffice/ppa

sudo apt update

sudo apt install libreoffice-l10n-zh-cn






yx2web 发表于 2024-8-14 08:07

纯技术贴,谢谢分享。{:1_257:}

suiwinder 发表于 2024-8-14 08:17

技术贴,看不懂。

wydb 发表于 2024-8-14 09:28

频率的事, 直接在面板上添加“cpu频率范围监视器”, 然后左键点击新加的图标,就有powersave、performance等几个cpu频率策略。

chenxinyi 发表于 2024-8-14 09:51

本帖最后由 chenxinyi 于 2024-8-14 09:55 编辑

wydb 发表于 2024-8-14 09:28
频率的事, 直接在面板上添加“cpu频率范围监视器”, 然后左键点击新加的图标,就有powersave、performanc ...
已经添加了,但如果不配置cpufrequtils,cpu frequency applet不会显示这些策略,系统默认CPU governor只有powersave
截个待机效果图,目前调整最高频率到3.7GHz

wydb 发表于 2024-8-14 10:30

chenxinyi 发表于 2024-8-14 09:51
已经添加了,但如果不配置cpufrequtils,cpu frequency applet不会显示这些策略,系统默认CPU governor只 ...

那可能和版本有关,我的thinkbook16+不用再做其它配置就可以直接选择cpu频率策略了。
感觉ondemand比较好用, 空闲时cpu频率很低;一有任务时又能很快的提到4GHz左右。

chenxinyi 发表于 2024-8-14 10:56

本帖最后由 chenxinyi 于 2024-8-14 11:00 编辑

wydb 发表于 2024-8-14 10:30
那可能和版本有关,我的thinkbook16+不用再做其它配置就可以直接选择cpu频率策略了。
感觉ondemand比较好 ...
名称上看起来就是类似windows下的均衡模式,我这里反正反复调了很多次,有时在ondemand在频率仍维持在很低水准,不过现在刚调到ondemand又正常了.
觉得至少要设置MIN_SPEED,即使在空闲时不须要维持在太低,除非断电电池使用,那就直接上powersave


wqnfs 发表于 2024-8-15 07:00

牛逼立体,装在虚拟机上蛮好。
页: [1]
查看完整版本: 小记Thinkpad E16安装Linux Mint 22,调校桌面环境和CPU性能, Bitlocker加密NTFS磁盘自动加载,驱动,睡眠,应用程序,实用技巧