我有一台装有 Win 7 和 Ubuntu 12.04 以及默认 GRUB 的台式电脑,另外,我插了一个 wifi USB 适配器,可以自动连接到我的个人 wifi。
我的问题是这样的:
当我启动 Win 7 时,wifi 工作正常,然后我重新启动到 ubuntu,wifi 却无法自动工作。如果我再次拔出 USB-wifi,问题就解决了。
奇怪的是,如果我从 Ubuntu 重启到 Ubuntu(并且 wifi 正常工作),它会自动连接。如果我从 ubuntu 重启到 ubuntu,并且 wifi 不工作,它不会自动连接。
因此,当我通过 GRUB 启动 Windows 7 时,似乎有“某些东西”把事情搞乱了。
如何解决这个问题?我经常从一个系统切换到另一个系统,所以每次都要插拔 USB,这很烦人。
硬件信息: USB wifi 适配器:TP-Link TL-WN321G V4 使用芯片组:“ID 148f:2070 Ralink Technology, Corp. RT2070 无线适配器”(从 $ lsusb 获得)它通过驱动程序工作:rt2800usb
这是 2013 年 1 月 23 日全新安装的,已完全更新。自从 12.04 版发布以来我就遇到了这个问题,而 12.10 版无法修复它。
当 USB wifi 不工作时它仍然会检测到它:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 003: ID 046d:c52f Logitech, Inc. Wireless Mouse M305
Bus 002 Device 004: ID 4971:ce04 SimpleTech
Bus 002 Device 005: ID 04cf:0022 Myson Century, Inc. OCZ Alchemy Series Elixir II Keyboard
Bus 002 Device 006: ID 148f:2070 Ralink Technology, Corp. RT2070 Wireless Adapter
然后我拔下并再次插入:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 003: ID 046d:c52f Logitech, Inc. Wireless Mouse M305
Bus 002 Device 004: ID 4971:ce04 SimpleTech
Bus 002 Device 005: ID 04cf:0022 Myson Century, Inc. OCZ Alchemy Series Elixir II Keyboard
Bus 002 Device 007: ID 148f:2070 Ralink Technology, Corp. RT2070 Wireless Adapter
还有那个小小的变化。
编辑1:
读了一些资料后,我得到了更多信息:(当 wifi 无法连接时就会发生这种情况)
$ sudo ifup wlan0
[sudo] password for marcos:
Ignoring unknown interface wlan0=wlan0.
$ iwconfig
lo no wireless extensions.
wlan0 IEEE 802.11bg ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
eth0 no wireless extensions.
$ ifconfig wlan0
wlan0 Link encap:Ethernet direcciónHW <hidden MAC address>
ACTIVO DIFUSIÓN MULTICAST MTU:1500 Métrica:1
Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:0 (0.0 B) TX bytes:0 (0.0 B)
这是我拔下并重新插入 USB wifi 后的变化
$ iwconfig wlan0
wlan0 IEEE 802.11bg ESSID:"Red de Lourdes"
Mode:Managed Frequency:2.412 GHz Access Point: <hidden MAC address>
Bit Rate=54 Mb/s Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
Link Quality=59/70 Signal level=-51 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:145 Invalid misc:96 Missed beacon:0
$ ifconfig wlan0
wlan0 Link encap:Ethernet direcciónHW <hidden MAC address>
Direc. inet:<hidden IP address> Difus.:<hidden IP address> Másc:<hidden IP address>
Dirección inet6: <hidden IPv6 address> Alcance:Enlace
ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST MTU:1500 Métrica:1
Paquetes RX:2108 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:2259 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:845327 (845.3 KB) TX bytes:395596 (395.5 KB)
有什么方法可以编写 Bash 脚本来使无线网络正常工作吗?还有其他解决方案吗?这是 GRUB 的问题吗?
答案1
你可以通过这些命令来激活 wlan,而不必重新插入:
sudo modprobe -r 8192eu
sudo modprobe 8192eu
你需要将 8192eu 改为你自己的 wlan 名称。如果你不知道名称,请在 google 上搜索关键字ID 148f:2070
(你的 usb wlan 的 id,可以通过命令找到lsusb
)。
或者您也可以直接将 wlan 名称添加到/etc/modules
:
sudo -i
echo 8192eu >> /etc/modules
exit
则系统启动时,wlan 将自动激活。
答案2
首先,您需要识别 USB wifi 适配器的驱动程序。执行以下命令获取网络适配器列表
lshw -C network
以下是您可能会注意到的输出类型
*-network:0
description: Wireless interface
physical id: 1
bus info: usb@3:5
logical name: wlx542aa25b496d
serial: 54:2a:a2:5b:49:6d
capabilities: ethernet physical wireless
configuration: broadcast=yes driver=rtl8xxxu driverversion=5.0.0-32-generic firmware=N/A ip=172.16.61.0 link=yes multicast=yes wireless=IEEE 802.11
检查驱动程序并记下来。假设它是rtl8xxxu
,您可以使用以下命令通过命令拔出或插入适配器
sudo modprobe -r rtl8xxxu
sudo modprobe rtl8xxxu
/etc/rc.local
由于这又是手动调用,您可以在之前添加以下代码中的命令exit 0
modprobe -r rtl8xxxu
sleep 1
modprobe rtl8xxxu
在 Ubuntu 18.04 中该rc.local
文件不存在,因此你可以使用sudo nano /etc/rc.local
添加以下部分来创建它,该部分取自 Ubuntu 16.04 的库存/etc/rc.local
文件,以便在系统启动时自动执行
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
然后在 之前添加 uplug/plug 代码exit 0
。您需要通过 使文件可执行sudo chmod +x /etc/rc.local
。重新启动并查看是否有效
答案3
我在安装 Windows 10 和 Ubuntu 后开始出现这种情况,我在下面的链接中找到了解决方案BIOSSecure Boot
功能是导致该问题的原因。
重启后未找到 WI-FI 适配器
如果您想保持Secure Boot
启用状态,可以查看这篇文章https://www.howtogeek.com/116569/htg-explains-how-windows-8s-secure-boot-feature-works-what-it-means-for-linux/
它提到了shim-signed
包以及它如何使您能够验证签名...不知道...
我禁用了它。