此前安装了Linux Mint20.2Uma,后续升级到了20.3Una,现在基于Ubuntu 22.04 LTS的Mint21 Vanessa已经可用了!(关于vanessa还有另一个词条:https://zh.moegirl.org.cn/Vanessa(Cytus_II)#)
我没有看到官方对于“Vanessa”的解释,但是可以参见ThinkBabbyNames的解读:
as a girls' name is pronounced va-NESS-ah. It is of Greek origin, and the meaning of Vanessa is "butterfly". The name of a genus of butterflies that includes the Red Admiral and the Painted Lady. Also possibly an early-18th-century literary name of English origin created by Jonathan Swift for "Gulliver's Travels" as a pseudonym for Esther Vanhomrigh, based on the first syllable of her surname, and possibly the Latin verb "esse", meaning "to be"

新的特性

参见:期待已久的 Linux Mint 21 发布————Linux中国
我是挺喜欢新的蓝牙管理器的,并且目前来看她在我的ThinkPad E14 Gen3 上所有基础功能都工作良好,具体性能尚未测试。

图形化升级

为了帮助用户更安全平稳的完成升级,Linux Mint提供了mintupgrade 软件包提供对用户友好的GUI系统升级服务,该软件包运行后将引导用户进行一次必要的系统备份(使用timeshit),随后会自动检测并提示用户当前系统有哪些与新版本不兼容的内容,并帮助用户尽可能自动化的解决这些问题。同时,mintupgrade也会告知你新系统需要额外安装的软件包并提前进行一次自动测试尽可能确保升级后系统正常运行。
使用如下命令安装并运行更新工具

sudo apt install -y mintupgrade
sudo mintupgrade

升级后展示:

2022-10-06T16:18:38.png

系统挂起/休眠后无法正常启动黑屏滚动报错

这一问题在许多固件设计适配操作系统非Linux的设备上广泛存在,你在中国大陆可购买的主流PC都存在该问题。
报错内容懒得发了,什么时候有空了就加上。
参考文章Ubuntu/Liinux睡眠无法唤醒解决方法:ACPI设置————ooosy

问题原因

(转载自上方链接,如果打不开可参考我的,否则建议看原作者的(以免出现原作者更新了什么而我没更新转载内容的情况)

Linux系统向上为用户提供良好的操作界面,向下管理各种硬件和资源。其中包括开关机、挂起和唤醒、休眠等,还有Fn功能键等。软件与硬件沟通中间渠道就是通过固件,这部分是由硬件厂商提供的,一般写在BIOS里。ACPI是一个重要的规范,称作高级配置与电源接口。由于现在Windows是操作系统的绝对的主流,很多厂商在设计的时候就没有考虑到其他操作系统比如Linux,就会导致很多功能无法正常的工作。
不过好在这个现象已经引起Linux开发者的注意,并且提供了一个acpi_osi=的选项,可以让固件提供和Windows相同的功能。

解决方案

查看你设备的DSDT提供了哪些操作系统版本的支持

sudo strings /sys/firmware/acpi/tables/DSDT | grep -i 'windows ' | sort

Windows 2009->Windows 7
Windows 2012->Windows 8
Windows 2013->Windows 8.1
Windows 2015->Windows 10

大致对应关系就是其发行年份对应其版本。

修改Grub内核启动参数

具体的方法是在/etc/default/grub中给GRUB_CMDLINE_LINUX增加acpi_osi=参数,大概像下面这个样子:

GRUB_CMDLINE_LINUX="acpi_osi=! \"acpi_osi=Windows 2015\""

修改完成后运行sudo update-grub更新grub配置。
重启执行at /proc/cmdline查看启动参数是否被正确添加。
接下来完成一次休眠,试试你的设备休眠和唤醒功能是否正常工作,如果没有,但其他体验如:性能释放与电源管理有所好转,你可以保留修改。否则,请立即撤销修改内容以免造成更多BUG。
你应该根据你的设备上DSDT支持的值进行尝试,不要像个麻瓜一样照抄我或者文章原作者的代码!

测试记录


点击查看详细内容
我的执行命令的返回值:Microsoft Windows NT
Windows 10
Windows 2001
Windows 2001.1
Windows 2001 SP1
Windows 2001 SP2
Windows 2001 SP3
Windows 2006
Windows 2006 SP1
Windows 2009
Windows 2009
Windows 2012
Windows 2013
Windows 2015
Windows 2015
Windows 2016
经过测试,设置为Windows 2015无明显异常,但挂起后启动时xface4 docker栏等应用先后崩溃停止运行,最终只能强制关机。
设置为Windows 10 屏幕亮度被强制调整到最大并且无法更改,其他情况与上一条测试内容类似。
设置为Windows 2016 屏幕亮度调整正常,挂起后唤醒正常,问题彻底解决。(理论上此项设置正确对软硬件结合完成电源管理有较大促进作用。PS:11月7日测试发现仍然出现了异常现象,原因未知。

文章作者提供的自动化脚本

我是手动修改的,不推荐任何人使用作者提供的脚本,因为你的设备和操作系统在路径和文件权限问题上往往和别人不能保持完全一致,你应该根据实际情况恰当的调整相关操作。而且,如果你认真看过这个脚本作者的文章,你会发现他把default这个单词拼错了+-+,反正我是懒得注册博客园帐号提醒他。
#!/bin/sh
VERSION="$(sudo strings /sys/firmware/acpi/tables/DSDT | grep -i 'windows ' | sort | tail -1)"
echo 'Linux kernel command-line options required: acpi_osi=! "acpi_osi='$VERSION'"'
read -p "Do you want to add this setting (y/n) ? " answer
if [ x$answer != xY -a x$answer != xy ]; then
  exit 1
fi
echo "Existing Command Line: ` sed -n '/.*linux[[:space:]].*root=\(.*\)/{s//BOOT_IMAGE=\1/ p;q;}' /boot/grub/grub.cfg `"
if grep -m 1 'acpi_osi=Windows' -q /etc/default/grub; then
  echo "There is already an entry; please remove it from /etc/default/grub and redo 'sudo update-grub' then re-run this script"
  exit 2
fi
sudo sed -i "s/^\(GRUB_CMDLINE_LINUX=.*\)\"$/\1 acpi_osi=! \\\\\"acpi_osi=$VERSION\\\\\"\"/" /etc/default/grub
echo "Modified Command Line: ` sed -n '/.*linux[[:space:]].*root=\(.*\)/{s//BOOT_IMAGE=\1/ p;q;}' /boot/grub/grub.cfg `"
sudo update-grub

再次面对挂起后无法唤醒的报错问题

2022年11月7日星期一
这次,我手动进行挂起再唤醒,触发BUG并拍照:
IMG_20221107_173518_1.jpg

看上去主要涉及以下信息:
/dev/nvme1n1p2这个分区(从属CUSO CSN250NVMe-M.2/80 (SN02661) 的Linux根分区)
__ext4_get_inode_loc_noimem:xxxx,block xxxxxx comm NetworkManager :unable
还有多个应用进程报错:reading directory lblock 0 也就是:

EXT4-fs error ext4_find_entry reading directory lblock 0

我暂时没有找到解决办法,时间有限我需要先放一放做别的事情。
晚上八点:
在WIndows10下更新了一次BIOS后直接启动进入Linux,手动尝试复现挂起唤醒BUG复现失败。(勾选了保存会话用于将来登录选项)
取消勾选后再次尝试,依然复现失败。(此时内核启动参数我依旧保处于上述操作后的状态,这意味着这个BUG可能是上一版本的BIOS固件存在的缺陷)
?????似乎是更新BIOS就给修好了?

2022-11-29更新:依旧存在挂起后无法重启的问题。

在校期间通过USB live System对根分区进行了检查,确实存在一些小错误,但是修复后问题依旧,也就是说和硬盘分区故障的关系不大。

今天看到了一些感觉有点用的文章和更多的ACPI相关信息:
Ubuntu休眠后无法唤醒黑屏
查看/etc/default/acpi-support后了解了一些ACPI的常见状态信息

ACPI状态有:S0、S1、S2、S3、S4、S5、G3 S0:电脑正常工作,所有硬件设备全部处于打开或正常工作状态
S1:也成为POS(Power on Suspend,CPU停止工作),其他硬件设备仍然正常工作;
S2:CPU关闭,但其余的硬件设备仍然正常工作,与S1几乎一样;
S3:也称为STR(Suspend to RAM,挂起到内存),将运行中的数据写入内存后关闭硬盘;
S4:也称为STD(Suspend to Disk,挂起到硬盘),内存信息写入硬盘,然后所有部件停止工作;
S5:所有硬件设备全部关闭,也就是关机(常备电存在,即RTC电池)
G3:彻底切断所有电源,包括外置电源。

同时,我注意到我的笔记本默认正在使用ACPI S3的休眠方式,过去我曾经在很长一段时间内使用tlp软件包,但是安装laptop-mode-tools的时候tlp被apt自动卸载了。安装laptop-mode-tools后设备休眠测试仍然不正常,唤醒后系统IO异常无法读写磁盘。重新下载安装回tlp?no,Timeshit直接回档!

查看当前内核支持的休眠模式

2022-11-29更新,果然不能只看CSDN互相COPY的文章,高质量的内容创作者才能产出高质量的文章~
新的知识扩展:Linux电源管理-休眠与唤醒
  1. 查看当前的内核支持的休眠模式
    cat /sys/power/state
    我的仅仅支持freeze mem

    常用的休眠方式有freeze,standby, mem, disk
    freeze: 冻结I/O设备,将它们置于低功耗状态,使处理器进入空闲状态,唤醒最快,耗电比其它standby, mem, disk方式高
    standby:除了冻结I/O设备外,还会暂停系统,唤醒较快,耗电比其它 mem, disk方式高
    mem: 将运行状态数据存到内存,并关闭外设,进入等待模式,唤醒较慢,耗电比disk方式高
    disk: 将运行状态数据存到硬盘,然后关机,唤醒最慢

经测试,使用echo mem > /sys/power/state 进入休眠后,唤醒没几秒系统就崩溃了,因为磁盘IO似乎并没有如期恢复正常,因此磁盘内的任何命令都无法执行。而freeze模式倒是唤醒后一切正常。

我需要解决的是挂起后出现各种问题无法正常唤醒的。那似乎可以先用freeze替代mem模式。

接下来nano /etc/default/acpi-support把默认的
ACPI_SLEEP_MODE=mem
改为ACPI_SLEEP_MODE=freeze

标签: none

已有 8 条评论

  1. maohuang maohuang

    感谢你William Goodspeed

  2. maohuang maohuang

    你使用的也是linux mint xfce 21 还用clash ,但是xfce 网络代理找不到 其他2个桌面版本很简单。但是我喜欢xfce 这个感觉。百度 知乎都很久啦。因为无法代理就无法谷歌啦。求指导。

    1. 关键词:tsocks proxychains 基于火狐的浏览器可以直接在设置里面配置

      1. maohuang maohuang

        非常感谢,同时也感谢未知狐。

      2. 我很想吐槽,这种信息检索能力很差的人你就是告诉关键词又能有多大帮助呢。

    2. 自己看Clash for Windows界面都什么选项,实现代理方法太多了随便设置socks5或者PAC,方法多得是,这种鸡毛蒜皮的东西没必要问。如果仍然认为有必要,请付费咨询。

  3. Linux Mint 的所有版本代号都是以 a 结尾的女名 🤪

    1. 名字都还是挺好听的。

添加新评论