手头上的Matebook 16s 2022款笔记本配备的是Intel i5-12500H,手动替换了原装的512固态硬盘为致钛的PC005 1TB,系统环境是Deepin V23 RC2。
安装系统之后,主要有3个问题需要解决:
1.笔记本没有声音,通过安装github上的项目huawei-linux-sound-fix解决,需要注意的是,Deepin V23的软件仓库里面缺少依赖项alsa-tools,必须先从Debian12的仓库安装alsa-tools再运行声音修复补丁。
如果github无法访问,可以从蓝奏云下载:https://thesats.lanzout.com/iUrwJ232p6gf
# 从Debian12仓库下载并安装alsa-tools包 wget http://ftp.cn.debian.org/debian/pool/main/a/alsa-tools/alsa-tools_1.2.5-3_amd64.deb -O /tmp/alsa-tools_1.2.5-3_amd64.deb && sudo apt install /tmp/alsa-tools_1.2.5-3_amd64.deb
2.笔记本在睡眠唤醒之后,直接掉盘,系统只能强制断电。这貌似是由于APST机制,睡眠的时候硬盘进入了P4深度省电状态,导致系统唤醒的时候,无法唤醒硬盘,结果掉盘,这可以通过在grub配置文件中添加参数解决,修改之后的参数为:
GRUB_CMDLINE_LINUX_DEFAULT="nvme_core.default_ps_max_latency_us=2000 splash quiet "
bash脚本如下:
#!/bin/bash# 问题:在安装有致钛PC005-1TB硬盘的Matebook16s-2022中,Deepin v23 RC2(Linux Kernel 6.6.25-amd64-desktop-hwe)在睡眠唤醒之后,硬盘掉盘。 # 该脚本在/etc/default/grub的GRUB_CMDLINE_LINUX_DEFAULT参数中,添加nvme_core.default_ps_max_latency_us=2000,让硬盘不处于P4状态(深度省电状态)。 # 参考链接: # https://wiki.archlinux.org/title/Solid_state_drive/NVMe # https://www.tekbyte.net/fixing-nvme-ssd-problems-on-linux# 以下是致钛PC005硬盘支持的电源状态 # sudo smartctl -c /dev/nvme0n1 | grep -A7 "Supported Power States" # # Supported Power States # St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat # 0 + 9.00W - - 0 0 0 0 0 0 # 1 + 4.60W - - 1 1 1 1 0 0 # 2 + 3.80W - - 2 2 2 2 0 0 # 3 - 0.0450W - - 3 3 3 3 2000 2000 # 4 - 0.0040W - - 4 4 4 4 15000 15000echo "matebook16s解决NVME硬盘睡眠唤醒掉盘的问题-root.sh"# 检查脚本是否以sudo权限执行 if [ "$EUID" -ne 0 ]; thenecho "请以sudo权限执行此脚本"exit 1 fi# 检查系统中是否存在NVMe硬盘 NVME_DISKS=$(ls /dev/nvme*n1 2> /dev/null)if [ -z "$NVME_DISKS" ]; thenecho "系统中不存在NVMe硬盘,退出"exit 1 fi# 显示每个NVMe硬盘的信息 for DISK in $NVME_DISKS; doecho -e "\033[35m硬盘信息:$DISK\033[0m"sudo smartctl -c $DISK | grep -A7 "Supported Power States" done# 读取GRUB_CMDLINE_LINUX_DEFAULT的值 GRUB_CMDLINE=$(grep -oP '^GRUB_CMDLINE_LINUX_DEFAULT="\K[^"]+' /etc/default/grub)# 检查nvme_core.default_ps_max_latency_us参数是否存在 if [[ $GRUB_CMDLINE =~ nvme_core.default_ps_max_latency_us=([0-9]+) ]]; then# 如果存在,检查其值是否为2000if [ ${BASH_REMATCH[1]} == 2000 ]; thenecho "nvme_core.default_ps_max_latency_us=2000"echo "grub参数已正确设置,无需调整..."exit 0elseecho "当前参数nvme_core.default_ps_max_latency_us=${BASH_REMATCH[1]},将其改为2000"# 替换参数值GRUB_CMDLINE=${GRUB_CMDLINE//nvme_core.default_ps_max_latency_us=${BASH_REMATCH[1]}/nvme_core.default_ps_max_latency_us=2000}# 更新/etc/default/grub文件sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE\"/" /etc/default/grub# 更新grub配置sudo grub-mkconfig -o /boot/grub/grub.cfgecho "请重启系统,来让参数生效..."fi elseecho "参数nvme_core.default_ps_max_latency_us=2000不存在,添加该参数"# 备份grub文件sudo cp /etc/default/grub /etc/default/grub.bakecho "已备份原始grub文件为grub.bak"# 添加参数GRUB_CMDLINE="$GRUB_CMDLINE nvme_core.default_ps_max_latency_us=2000"# 更新/etc/default/grub文件sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE\"/" /etc/default/grub# 更新grub配置sudo grub-mkconfig -o /boot/grub/grub.cfgecho "请重启系统,来让参数生效...." fi
3.笔记本充电没有开启电池保养功能,需要安装tlp来设置,电量高于81%时停止充电,低于75%时充电。设置上限是81%而不是80%,是因为设置到80%停止充电时,系统会一直显示“电量79%”,对强迫症不友好。
bash脚本如下:
#!/bin/bashecho "matebook16s设置电池保养功能-root.sh"# 检查用户是否具有root/sudo权限 if [ "$(id -u)" != "0" ]; thenecho -e "\033[31m请以root/sudo用户身份运行此脚本。\033[0m" 1>&2# 按任意键退出echo "按任意键退出..."read -n 1exit 1 fisudo apt install tlp -y# 定义文件路径 FILE="/etc/tlp.conf"# 显示电池信息 clear echo -e "\033[31m电池详情如下:\033[0m" tlp-stat -b echo "-------------------------------------------------"# 复制文件 cp /etc/tlp.conf /etc/tlp.conf.bak# 检查是否已经存在修改后的这两行 if grep -Fxq "START_CHARGE_THRESH_BAT0=75" /etc/tlp.conf && grep -Fxq "STOP_CHARGE_THRESH_BAT0=81" /etc/tlp.conf thenecho -e "\033[31m电池保养功能已开启,电池将在低于75%时充电,高于80%时停止充电\033[0m" else# 修改文件sed -i 's/#START_CHARGE_THRESH_BAT0=75/START_CHARGE_THRESH_BAT0=75/g' /etc/tlp.confsed -i 's/#STOP_CHARGE_THRESH_BAT0=80/STOP_CHARGE_THRESH_BAT0=81/g' /etc/tlp.conf# 检查是否修改成功if grep -Fxq "START_CHARGE_THRESH_BAT0=75" /etc/tlp.conf && grep -Fxq "STOP_CHARGE_THRESH_BAT0=81" /etc/tlp.confthen# 执行tlp starttlp start > /dev/nullecho -e "\033[31m电池保养功能已开启,电池将在低于75%时充电,高于80%时停止充电\033[0m"elseecho -e "\033[31m/etc/tlp.conf修改失败,请检查该文件...\033[0m"fi fiecho "想要临时完全充满电池,请运行sudo tlp fullcharge BAT0" # 按任意键退出 echo "按任意键退出..." read -n 1 exit 0