Surface Pro 3 关闭安全引导后开机画面变成血红的红底还是引起了生理不适,所以决定还是要更新到签名过的内核上,但不考虑自行签名的方式。
操作主要参考此链接:https://askubuntu.com/questions/1434143/how-to-install-latest-ubuntu-signed-kernel-on-lts。
略作修订的版本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#!/bin/bash # from: https://askubuntu.com/questions/1434143/how-to-install-latest-ubuntu-signed-kernel-on-lts # Note: you will need to edit the major/minor and firmware/microcode version according to what can # be found in http://fr.archive.ubuntu.com/ubuntu/pool/main/ - as only the latest build is present. root=http://fr.archive.ubuntu.com/ubuntu/pool/main/ major=5.19.0 minor1=21 minor2=21 wget \ $root/l/linux-signed/linux-image-$major-${minor1}-generic_$major-${minor1}.${minor2}_amd64.deb \ $root/l/linux/linux-headers-$major-${minor1}-generic_$major-${minor1}.${minor2}_amd64.deb \ $root/l/linux/linux-headers-$major-${minor1}_$major-${minor1}.${minor2}_all.deb \ $root/l/linux/linux-modules-$major-${minor1}-generic_$major-${minor1}.${minor2}_amd64.deb wget \ $root/l/linux/linux-modules-extra-$major-${minor1}-generic_$major-${minor1}.${minor2}_amd64.deb \ $root/l/linux/linux-modules-iwlwifi-$major-${minor1}-generic_$major-${minor1}.${minor2}_amd64.deb sudo dpkg -i *.deb # fixes "Possible missing firmware /lib/firmware/i915/skl_guc_70.1.1.bin for module i915" etc # wget \ # $root/a/amd64-microcode/amd64-microcode_3.20220411.1ubuntu3_amd64.deb \ # $root/l/linux-firmware/linux-firmware_20220923.gitf09bebf3-0ubuntu1_all.deb # sudo dpkg -i --auto-deconfigure linux-firmware_*.deb amd64-microcode_*.deb |
一开始屏蔽了 extra 和 iwlwifi 两个包,发现显示器分辨率会上不去,可见没有它们会有问题。后来单独安装 extra 成功,显示正常,iwlwifi 安装失败,结果是无法连接无线网络。最后一段的代码,因为没有遇到其引用的错误信息,因此没有放开。
iwlwifi 安装失败的原因是内核模块编译失败。编译时的系统上,有三个内核版本,一个是用上面的脚本安装的存在网络功能缺陷的 5.19(有签名),一个是试图用 5.19 取代的无签名的 5.15,还有就是没有手动干预之前系统自动可以升级到的 5.4(有签名,但是 Snap 不能工作)。用 5.15 引导起来的系统下尝试安装 5.19 版本的 iwlwifi 的 deb 安装包,似乎也没有即刻就成功。既然如此,那就还是回到 5.19 版本的内核下去排错好了。在重启之前,尝试移除 5.15 版本的内核(没有太大使用价值了),此过程中 dpkg 工具给出了警告,因为此版本的内核正在使用中,可能导致系统出现必须手动修复的问题,于是在最后关头选择了中止。重启到 5.19 版本的内核下之后,发现网络功能竟然好了,原因未知。这下正好,没有任何后顾之忧地把 5.15 版本的内核卸载掉了。
以上的处理结束后又动了动脑,进行了一些验证,才发现其实可以使用 apt 命令来安装内核(应该都是签名过的版本),只是检索起来不那么方便。可以使用如下命令行查看内核(headers 和 modules 应该也可照章办理):
1 2 3 |
#!/bin/bash sudo apt search image | grep ^linux-image | awk '{print $1}' | awk -F '/' '{print $1}' | grep -Po "^linux-image-\d+\.*\d+.*" |