所以我有一台具有 Ubuntu 21.10 和 Windows 10 双启动功能的 Zephyrus G15。
当我第一次启动 Ubuntu 时,驱动程序一开始就为我的 Wi-fi MEDIATEK Corp 卡运行良好。但 Windows 无法正确连接到我的路由器。因此,我卸载并重新安装了 Windows 的 Wi-Fi 卡驱动程序。它可以工作,但现在当我回到 Ubuntu 时,我无法连接到 Wi-Fi,甚至无法连接到以太网。
sudo lshw-c 网络:
description: Ethernet controller
product: Realtek Semiconductor Co., Ltd.
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:03:00.0
version: 05
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix vpd bus_master cap_list
configuration: latency=0
resources: ioport:d000(size=256) memory:fc800000-fc80ffff memory:fc810000-fc813fff
*-network UNCLAIMED
description: Network controller
product: MEDIATEK Corp.
vendor: MEDIATEK Corp.
physical id: 0
bus info: pci@0000:04:00.0
version: 00
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm cap_list
configuration: latency=0
resources: iomemory:fc0-fbf iomemory:fc0-fbf iomemory:fc0-fbf memory:fc20300000-fc203fffff memory:fc20400000-fc20403fff memory:fc20404000-fc20404fff
串行通信
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8162 (rev 05)
04:00.0 Network controller: MEDIATEK Corp. Device 7961
请参阅lspci-nnk| grep 0280 -A3
04:00.0 Network controller [0280]: MEDIATEK Corp. Device [14c3:7961]
Subsystem: AzureWave Device [1a3b:4680]
Kernel modules: mt7921e
05:00.0 Non-Volatile memory controller [0108]: SK hynix Device [1c5c:174a]
uname -r
5.13.0-19-generic
更多信息
https://paste.ubuntu.com/p/9Sz5G6xm33/
我的 Windows 安装是否会影响我的 Ubuntu?我从闪存驱动器启动了 Ubuntu,驱动程序运行正常。我甚至尝试更新内核,但无济于事。
它是什么意思呢?network UNCLAIMED
谢谢
答案1
未来也会遇到同样问题的人。
我找到了问题所在。我的 WIFI 卡是联发科 Wi-Fi 6 MT7921,目前由 linux 内核 5.16 支持,但 5.13 内核(我的 Ubuntu 21.10 附带的内核)对它的支持很差。它在第一次启动时实际上工作得很差,而对于下一次启动它根本不起作用。
因此解决方案是使用以下命令升级到新内核:
# download the kernel files, headers, modules...etc
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-headers-5.16.0-051600_5.16.0-051600.202201092355_all.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-headers-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-image-unsigned-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-modules-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
现在在你的系统中安装内核:
sudo dpkg -i *.deb
修复损坏的依赖关系:
sudo apt install -f
您现在可以重新启动,如果您没有使用安全启动,它可能会起作用。
但是如果你是,那么你需要禁用它或者自己签名内核。我按照这个指导。但对内核进行签名的基本步骤是:
创建一个名为的文件,mokconfig.cnf
其中包含以下内容:
# This definition stops the following lines failing if HOME isn't
# defined.
HOME = .
RANDFILE = $ENV::HOME/.rnd
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = v3
string_mask = utf8only
prompt = no
[ req_distinguished_name ]
countryName = <YOURcountrycode>
stateOrProvinceName = <YOURstate>
localityName = <YOURcity>
0.organizationName = <YOURorganization>
commonName = Secure Boot Signing Key
emailAddress = <YOURemail>
[ v3 ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical,CA:FALSE
extendedKeyUsage = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment = "OpenSSL Generated Certificate"
文件 <> 部分包含您的信息。确保国家、州和城市仅使用两个字符,例如:US CA LA
创建用于签名内核的公钥和私钥:
openssl req -config ./mokconfig.cnf \
-new -x509 -newkey rsa:2048 \
-nodes -days 36500 -outform DER \
-keyout "MOK.priv" \
-out "MOK.der"
将密钥也转换为 PEM 格式(mokutil 需要 DER,sbsign 需要 PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
将密钥注册到你的 shim 安装中:
sudo mokutil --import MOK.der
重启系统。您将看到一个名为 MOKManager 的工具的蓝屏。选择“注册 MOK”,然后选择“查看密钥”。确保它是您在步骤 2 中创建的密钥。然后继续该过程,您必须输入您在步骤 4 中提供的密码。继续启动系统。
通过以下方式验证您的密钥是否已注册:
sudo mokutil --list-enrolled
对已安装的内核进行签名(它应该位于 /boot/vmlinuz-[KERNEL-VERSION]:
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface.signed
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
sudo update-grub
现在您可以重新启动 =)