Posted by Liler on September 10, 2022
最近想把惠普笔记本的原装操作系统Windows 11 家庭版换成Linux,折腾了一番,虽然刚开始失败了,最后还是成功了。
整个过程如下:
安装Debian 11成功了,但是有些功能不能用,寻找解决办法但是失败了
然后想换回Window 11 Pro版本,安装时遇到了驱动问题,失败了,
然后尝试安装Ubuntu 22.04.1 LTS, 安装成功,而且没有遇到安装Debian后遇到的问题
重新装回Debian 11,并且解决了有些功能不能使用的问题(例如不能调节屏幕亮度),主要是解决了换内核与安装驱动与固件的问题。
具体过程如下:
为什么不使用Windows 11或者其他Windows系统呢?在使用里一小段时间后,发现家庭版本不能换语言,添加组件居然还需要创建帐号, 再加上Windows系统是封闭的系统使用起来不太自由,不能高度定制化,Windows系统是商业公司驱动的, 微软公司与Windows系统的口碑不太好,Windows系统使用各种手段深度绑定用户,安装过程中没有加密整个磁盘的选项, 已经习惯使用Linux,等等原因,决定换系统。
安装系统时,建议加密整个硬盘,这样更加安全,即使丢失了电脑,别人也无法看到数据。
下载Debian 11的ISO安装文件,制作安装盘(U盘安装),安装成功后,发现有下面的问题:
屏幕不能调节亮度
触控板不能使用
WIFI不能使用
蓝牙不能使用
然后安装nonfree库的相关固件,但是不能解决问题。不能调节亮度导致看多了屏幕眼睛疼,这时想换回Windows 11 Pro版本看看。
从官网下面下载Windows 11的ISO文件,下载地址为: Download Windows 11 Disk Image (ISO)
用Windows版本的浏览器,这个页面不显示下载地址,需要使用其他版本的浏览器或者临时修改浏览器的 user agent( 修改为非Windows系统的,例如Linux或者Mac OS的浏览器user agent)。为什么微软要这么做呢?为什么不给Windows用户 多个选项呢?我想可能是为了深度绑定用户。
然后制作安装盘,在Linux下面还是比较简单的,打开Disks工具,选择要安装的U盘,点击右上角的菜单,选择"Restore Disk Image...", 然后按照提示操作就可以了。
安装Windows 11需要一些前提条件,具体资料请查看 HP 电脑 – 对 Windows 11 的支持 与 HP 电脑 - 从 USB 闪存驱动器安装 Windows 11
然后修改UEFI或者BIOS的配置,从U盘安装,进行安装界面,选择了语言后进入下个界面,点击开始安装,然后问题就出现了,提示缺少了有关CD/DVD、 硬盘等的一个驱动。
然后在网上找资料,惠普官网上有一些驱动,但唯独缺少了有关硬盘的驱动,不知道为什么,在网上找了写类似的驱动,尝试了几次都没有成功。
搞不懂为什么Windows系统安装现在搞得如此复杂,反而Linux系统安装就比较简单了。
然后给惠普的售后工程师打电话,他们给了几个驱动,也没有成功。有点疑惑的是,给我的链接可以直接下载,为什么惠普不把它们放在对于的驱动 下载页面呢。
下面把这些驱动的地址粘贴下(电脑型号有关,我的是英特尔的12代处理器,三星的SSD):
https://ftp.hp.com/pub/softpaq/sp134501-135000/sp134521.exe
https://ftp.hp.com/pub/softpaq/sp136001-136500/sp136079.exe
Intel® Rapid Storage Technology Driver for Windows® 10 64-bit and Windows 11* for Intel® NUC12WS products (这个是英特尔官方的驱动)
最后放弃安装Windows 11,甚至下载安装了Windows 10,结果一样失败。在查找资料的过程中,看到了Ubuntu,然后开始尝试安装。
不喜欢折腾的可以使用Ubuntu,试用过程中没有发现大问题。
为什么要选择Ubuntu呢?主要是因为它是基于Debian开发的,而我以前经常使用Debian。
到官网下载ISO文件,并用上面的方法制作了安装盘。安装过程(利用图形安装界面上面的方法安装)中遇到了有趣的问题:
选择带加密的LVM模式时,提供了一个Recovery code,而Debian没有
没有提供分区的选项,直接使用整个硬盘安装系统
选择了带加密的LVM模式后,需要往整个硬盘里面写随机数字,Ubuntu使用时间较短,而Debian使用的时间比较长
安装过程提供的选项较少,而Debian提供的选项很多
安装完后,没有发现Debian 11里面的问题,每个硬件都可以使用,而且界面不错,使用了GNOME 42,使用也流畅。
在试用的过程中发现了有趣的问题:
安装chrome后(安装包为chrome-browser),创建新的Firefox的profile,打开这个新的profile后,有些网站不能打开(例如 google.com), 有些可以打开(例如,bing.com),用默认的profile时,任何网站都可以打开。然后打开chrome,有些网站不能打开有些可以打开,出现的问题 跟Firefox的新profile出现的问题一样。
尝试卸载chrome后,打开Firefox的新profile,这时任何网站都可以打开了。这说明chrome包或者所依赖的某个包有问题。
而Debian里面没有这个问题,也许跟chrome的版本有关系。
由于出现了这些问题,再加上Ubuntu是商业公司驱动的,习惯了Debian系统,就决定换回Debian并解决出现的问题。
重装Debian 11后,就开始研究怎么解决出现的问题。
刚开始安装Debian 11后又安装了nonfree库里面的固件,对应的硬件还是不能工作,主要原因这些固件不是最新的。
主要的问题就是怎么让不能工作的硬件工作起来,也就是安装对应的驱动或者固件。
查看具体问题
查看系统出现了哪些具体问题,可以通过下面的命令:
# dmesg
这个输出里面有些问题不太好解决,而且对使用几乎没有影响,可以不去管。即使Ubuntu也同样出现一样的问题。
查看有哪些硬件可以使用下面的命令:
# lshw # lspci
安装高版本的Linux内核
在网上查找资料后,发现需要安装高版本的内核(资料说需要5.14以上),这时就需要Debian的其他库里面的包了(例如backports库)。
最终 资料来源 如下(括号里面的是内核版本):
Supported Devices The following devices are supported (since kernel version): Wi-Fi 6E products Intel® Wi-Fi 6E AX411 (5.14) Intel® Wi-Fi 6E AX211 (5.14) Intel® Wi-Fi 6E AX210 (5.10) Wi-Fi 6 products Intel® Wi-Fi 6 AX201 (5.2) Intel® Wi-Fi 6 AX200 (5.1)
直接资料来源是这个帖子 Netinst Intel Wi-Fi 6E AX211 firmware
方法如下:
把下面的几行添加到 /etc/apt/sources.list 里:
deb http://deb.debian.org/debian bullseye-backports main contrib non-free deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free #deb http://deb.debian.org/debian/ bullseye-proposed-updates main contrib non-free #deb-src http://deb.debian.org/debian/ bullseye-proposed-updates main contrib non-free # testing #deb http://deb.debian.org/debian testing main contrib non-free #deb-src http://deb.debian.org/debian testing main contrib non-free # #deb http://deb.debian.org/debian-security/ testing-security main contrib non-free #deb-src http://deb.debian.org/debian-security/ testing-security main contrib non-free # #deb http://deb.debian.org/debian testing-updates main contrib non-free #deb-src http://deb.debian.org/debian testing-updates main contrib non-free
再运行下面的命令:
# apt update # apt install linux-image-5.18.0-0.bpo.1-rt-amd64
重启系统在Grub里面选择新内核
使用了新内核后,发现触控板可以使用了,好像也可以调节亮度了(有点时间了忘记了,后面也安装了对应的固件), 但是WIFI还是不能使用。再次使用 dmesg 查看具体问题,然后根据里面的提示安装对应的固件。
固件来源与安装方法
可以参考下面的几个链接
Linux* Support for Intel® Wireless Adapters (这个是英特尔官方的固件)
iwlwifi is the wireless driver for Intel's current wireless chips (里面有固件安装方法与来源)
Repository of firmware blobs for use with the Linux kernel (最新的固件在这里)
安装方法:
# cp iwlwifi-*.{ucode,pnvm} /lib/firmware/
WIFI不能使用的解决方法
查看这个帖子里面的方法 [Guide] Install Intel Wireless Drivers on Linux
对于我的电脑来说,就是下面的方法:
# # Go to the website: https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/linux-firmware.git/tree/ # # Download and Copied all the iwlwifi-ty-a0-gf-a0-* files to /lib/firmware/ # # 根据dmesg里面的提示来拷贝, 在这个库里面如果没有对应的文件不管它了,我从另外一个地方拷贝了 # # 这个文件 iwlwifi-so-a0-gf-a0-71.ucode,发现改变桌面背景时部分屏幕会先变黑然后才正常,卸载了就没事了 # cp iwlwifi-so-a0-gf-a0* /lib/firmware/
其他可以参考的帖子如下:
Considering all information I proceeded as follows: - I removed the firmware-iwlwifi package; - I downloaded the latest tarball from the kernel git page linked above; - I extracted the iwlwifi-* and the intel/ibt-* files; - I put those in a new tarball, which I then put through alien in order to create a .deb package (lazy method, but it works); - I then installed my freshly created deb package; - after that I rebooted the system. ... Presto, al just works fine as designed. I reckon that this is the cleanest way of achieving the desired result in lieu of a updated firmware-iwlwifi package or a truly free driver.
出现i915(Intel HD Graphics driver, 英特尔的GPU驱动)问题的解决方法
问题如下:
W: Possible missing firmware /lib/firmware/i915/bxt_dmc_ver1_07.bin for module i915 W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_27.bin for module i915 W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_04.bin for module i915
解决方法:
去这里找对应的固件(根据dmesg里面的提示):
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
执行下面的命令:
# cp <i915 firmware files> /lib/firmware/i915/ # update-initramfs -u -k all重启电脑
可以参考下面的几个链接:
Possible missing firmware /lib/firmware/i915/* for module i915
出现tpm的问题
具体问题:
tpm_tis MSFT0101:00: 2.0 TPM (device-id 0xFC, rev-id 1) tpm tpm0: tpm_try_transmit: send(): error -5 tpm tpm0: [Firmware Bug]: TPM interrupt not working, polling instead
解决方法:
忽略它
在BIOS里面关闭TPM
用下面的方法让这个提示信息不显示
编辑文件 /etc/default/grub , 在有 GRUB_CMDLINE_LINUX_DEFAULT 的一行添加参数 tpm_tis.interrupts=0, 修改过后为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet tpm_tis.interrupts=0"
重启后就不会显示了
出现thermal zone的问题
具体问题:
acpitz failed to read out thermal zone (-61)
解决方法:
编辑文件 /etc/modprobe.d/iwlmvm.conf 添加一行:
options iwlmvm power_scheme=1
出现其他固件的问题
基本思路跟上面的一样,查看dmesg信息,根据提示找到对应的固件,并拷贝到 /lib/firmware/ 对应的目录下面
解决这些问题花费了好几天的时间,主要原因是以前没有经历过,走了很多弯路,而且老是想折腾出来。
经验如下:
有些问题如果不影响使用就有不用去管,否则很花费时间或者根本就解决不了。
有了问题先明确是什么样的问题,然后找问题的具体表现,例如从log文件里面查找问题信息
在网上寻找问题的解决方案时,可以直接搜索问题的具体表现,一般很快就找到解决方案
解决问题,重要的是要明确大概思路,知道问题是什么,大概出现在哪里,问题的具体表现是什么,解决问题大概需要哪些步骤, 去哪里查找解决方案,自己能否根据已有的知识探索一番就可以解决等等。
解决了问题后,把问题及其解决方案记录下来,以便下次查找,要不然很容易忘记,忘记了以前的工作就白费了
解决硬件不能被系统使用、不能正常工作的问题的思路:
出现了哪些问题,跟哪些硬件有关
查找硬件的具体型号
根据硬件的具体型号,看看官方网站对具体硬件的介绍,是否有驱动,有什么样的前置条件,是否要求内核版本
如果要求具体的内核,就先安装对应的内核
根据具体型号、dmesg里面的提示查找、下载与安装对应的驱动
主要思想如下:
Linux系统内核管理电脑硬件,但特定版本的内核只能支持特定版本的硬件
硬件需要驱动或者固件才能被操作系统使用
总而言之,硬件需要特定版本的内核与固件支持才能被正常使用