目前,我正在使用Pop!_OS 21.04 x86_64
内核5.15.5-76051505-generic
,但我已经在Manjaro
, Tails
, Ubuntu
,上重现了这个问题MX
。所以发行版并不重要。
当我启动 Linux 时,我无法连接到 Wi-Fi 网络。
前段时间我找到了一个解决方案,它与 Windows 连接(双启动)。
在关闭它之前,我必须在 Windows 上关闭 Wi-Fi,然后 Wi-Fi 才能在 Linux 上运行。
但是现在我的机器上只有 Linux(没有双引导)。在我使用带有一些实用工具的 live-usb Windows
之前,一切都运行良好。Hiren's BootCD PE
在我启动该实用程序(从 USB 驱动器)并连接到 Wi-Fi 后,Wi-Fi 在 Linux 上停止工作。
看起来和我之前遇到的问题一样,但这次我无法在 Hiren 的 Boot 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
除了在 Windows 上关闭 wifi 之外,我还没有找到可行的解决方案。所以我在 USB 驱动器上创建了一个便携式版本的 Windows,在 Linux 机器上启动它,在 Windows 上关闭 wifi,然后再次启动 Linux,一切恢复正常。Wifi 工作没有任何问题。
为了获得 Windows 的便携版本,我只需在 VirtualBox 上的虚拟磁盘上安装 Windows
.vdi
,然后从该虚拟磁盘创建.img
文件并将其克隆到 USB 驱动器。使用 VirtualBox 创建可移植的 Windows
值得一提的是,我在区域选择的 Windows 安装步骤中关闭了虚拟机(它询问“让我们从区域开始。对吗?”)。也许这没什么大不了的,您可以在 VirtualBox 中完成安装,但我决定在从 USB 驱动器启动 Windows 后完成它。
我采取了以下步骤:
在 VirtualBox 上安装 Windows
从虚拟磁盘创建磁盘映像文件
就我而言,USB 驱动器有
sda
名称(带分区sda1
,sda2
,sda3
)警告:谨慎使用。
检查两次
of=
路径,因为您要从该路径中擦除磁盘。如果使用 VirtualBox 创建便携式 Windows 对您不起作用怎么办?
还有第二种选择,但您需要一台安装了 Windows 的机器。
在已安装的 Windows 上使用 Rufus 或 WinToUSB 并创建“Windows To Go” - 安装在 USB 驱动器上的便携式 Windows 版本。
一些 wifi 和网卡具有 linux 设备驱动程序无法理解的功能。当 Windows 驱动程序启用这些功能并在重新启动后将它们保持打开状态时,linux 无法使用该界面。
解决方案是在关闭 Windows 和启动 linux 之间重新启动机器,而不是进行热启动。
对于 PCI 网卡,至少理论上可以关闭 PCI 插槽的电源并在 linux 引导脚本中重新打开它。(我是手工完成的,它至少工作过一次。)实际上,没有发行版这样做过,编写脚本以可移植和可靠的方式完成它很麻烦。只需对整台机器进行电源循环就容易得多。