目前,我正在使用Pop!_OS 21.04 x86_64
内核,但我已经在、、、5.15.5-76051505-generic
上重现了这个问题。所以发行版并不重要。Manjaro
Tails
Ubuntu
MX
当我启动 Linux 时,无法连接到 Wi-Fi 网络。
我前段时间找到了一个解决方案,它与Windows(双启动)连接。
我必须在 Windows 上先关闭 Wi-Fi,然后才能在 Linux 上使用 Wi-Fi。
但现在我的机器上只有 Linux(没有双引导)。
一切都运行良好,直到我使用Hiren's BootCD PE
带有一些实用工具的 live-usb Windows。
当我(从 USB 驱动器)启动该实用程序并连接到 Wi-Fi 后,Wi-Fi 在 Linux 上停止工作。
看起来和我之前遇到的问题一样,但这次我无法在 Hiren 的启动 Windows 上成功禁用 Wi-Fi。我尝试过在设备管理器中禁用 Wi-Fi 卡,将其完全卸载,取消选中允许因电源管理而关闭卡,一切都没有成功。
我的猜测是 Windows 以某种方式阻止了 Wi-Fi 卡,之后 Linux 就无法正确初始化它。
我之前经过验证的解决方案(当我有 Windows 和 Linux 双启动时)是启动 Windows,关闭其上的 Wi-Fi,然后启动 Linux。
但现在我没有安装 Windows,只安装了 Windows 上的 live-usb 实用程序。它使用一些非标准PE Network Manager
来管理 Wi-Fi,将其关闭并不会像在标准 Windows Wi-Fi 接口上那样有帮助。
您对如何在 Linux 上“唤醒”无线卡有什么想法吗?
明显检测到无线网卡,但就是不工作。
我真的不想安装Windows只是为了关闭它的Wi-Fi然后粉碎它。
当前 Linux 状态的日志:
$ iwconfig
lo no wireless extensions.
enp0s31f6 no wireless extensions.
$ rfkill
ID TYPE DEVICE SOFT HARD
1 wlan dell-wifi unblocked unblocked
2 bluetooth dell-bluetooth blocked unblocked
$ sudo lshw -C network
*-network
description: Network controller
product: Wireless 8265 / 8275
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:02:00.0
version: 78
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list
configuration: driver=iwlwifi latency=0
resources: irq:135 memory:ef100000-ef101fff
*-network
description: Ethernet interface
product: Ethernet Connection (4) I219-LM
vendor: Intel Corporation
physical id: 1f.6
bus info: pci@0000:00:1f.6
logical name: enp0s31f6
version: 21
serial: 10:65:30:2e:ee:de
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=5.15.5-76051505-generic firmware=0.1-4 latency=0 link=no multicast=yes port=twisted pair
resources: irq:131 memory:ef300000-ef31ffff
$ sudo dmesg | grep iwlwifi
Dec 15 11:06:54 ncno2 kernel: iwlwifi 0000:02:00.0: enabling device (0000 -> 0002)
Dec 15 11:06:54 ncno2 kernel: iwlwifi 0000:02:00.0: loaded firmware version 36.ca7b901d.0 8265-36.ucode op_mode iwlmvm
Dec 15 11:06:54 ncno2 kernel: iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 8265, REV=0x230
Dec 15 11:06:56 ncno2 kernel: iwlwifi 0000:02:00.0: Couldn't prepare the card
Dec 15 11:06:56 ncno2 kernel: iwlwifi 0000:02:00.0: Error while preparing HW: -110
Dec 15 11:06:57 ncno2 kernel: iwlwifi 0000:02:00.0: Master Disable Timed Out, 100 usec
答案1
除了关闭 Windows 上的 wifi 之外,我还没有找到有效的解决方案。因此,我在 USB 驱动器上创建了 Windows 的便携式版本,在 Linux 计算机上启动它,关闭 Windows 上的 wifi,然后再次启动 Linux,一切都恢复正常。无线网络工作没有任何问题。
为了获得 Windows 的便携版本,我只需在虚拟磁盘上的 VirtualBox 上安装 Windows ,然后从该虚拟磁盘.vdi
创建文件并将其克隆到 USB 驱动器。.img
使用 VirtualBox 创建便携式 Windows
值得一提的是,我在 Windows 安装步骤中选择区域时关闭了虚拟机(它询问“让我们从区域开始。这是对的吗?”)。也许这不是什么大问题,您可以在 VirtualBox 中完成安装,但我决定在从 USB 驱动器启动 Windows 后完成它。
我采取了以下步骤:
在 VirtualBox 上安装 Windows
从虚拟磁盘创建磁盘映像文件
$ VBoxManage clonehd /path/to/existing/Windows10.vdi /path/to/new/disk/image/Windows10.img --format RAW
- 检查插入的 USB 驱动器的设备名称
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 119.5G 0 disk
├─sda1 8:1 1 50M 0 part
├─sda2 8:2 1 29.5G 0 part
└─sda3 8:3 1 508M 0 part
nvme0n1 259:0 0 476.9G 0 disk
├─nvme0n1p1 259:1 0 498M 0 part /boot/efi
├─nvme0n1p2 259:2 0 4G 0 part /recovery
├─nvme0n1p3 259:3 0 468.4G 0 part
│ └─cryptdata 253:0 0 468.4G 0 crypt
│ └─data-root 253:1 0 468.4G 0 lvm /
└─nvme0n1p4 259:4 0 4G 0 part
└─cryptswap 253:2 0 4G 0 crypt [SWAP]
就我而言,USB 驱动器有sda
名称(带有分区sda1
, sda2
, sda3
)
- 将 Windows 磁盘映像克隆到 USB 驱动器:
警告:谨慎使用。
检查两次of=
路径,因为您要从该路径中删除磁盘。
$ sudo dd if=/path/to/Windows10.img of=/dev/sda bs=4M status=progress
- 重新启动计算机并从 USB 驱动器启动 Windows
如果使用 VirtualBox 创建便携式 Windows 不适合您怎么办?
还有第二种选择,但您需要一台安装了 Windows 的计算机。
在已安装的 Windows 上使用 Rufus 或 WinToUSB 并创建“Windows To Go” - 安装在 USB 驱动器上的 Windows 便携式版本。
答案2
有些 wifi 和网卡具有 Linux 设备驱动程序无法理解的功能。当 Windows 驱动程序启用这些功能并在重新启动后保留它们时,Linux 将无法使用该接口。
解决方案是在关闭 Windows 和启动 Linux 之间重新启动计算机,而不是进行热启动。
对于 PCI 网卡,至少在理论上可以在 Linux 启动脚本中关闭 PCI 插槽的电源并重新打开它。 (我已经手动完成了此操作,它至少工作过一次。)实际上,没有发行版做到了这一点,并且编写脚本以可移植且可靠的方式完成此操作很混乱。只需重新启动整个机器就容易得多。