带有双启动联发科的 Wifi 驱动程序

带有双启动联发科的 Wifi 驱动程序

所以我有一台具有 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

现在您可以重新启动 =)

相关内容