我的电脑上安装了两个操作系统,今天发生了一件奇怪的事情:我的以太网设备在 debian 中丢失了!从grub进入win10,可以通过pppoe连接互联网。
从 grub 进入 debian10 :
ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 20 bytes 1120 (1.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 20 bytes 1120 (1.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
sudo lshw -C network
*-network UNCLAIMED
description: Ethernet controller
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:06:00.0
version: 15
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix bus_master cap_list
configuration: latency=0
resources: ioport:f000(size=256) memory:fcd04000-fcd04fff memory:fcd00000-fcd03fff
ipconfig /all
我从win10中获取mac地址信息--xx:xx:70:c2:2c:4a 。
sudo pppoeconf xx:xx:70:c2:2c:4a
Cannot find device "xx:xx:70:c2:2c:4a"
ioctl(SIOCGIFHWADDR): No such device
Cannot find device "xx:xx:70:c2:2c:4a"
Plugin rp-pppoe.so loaded.
/usr/sbin/pppd: unknown host: nic-00
用win10下载r8168-dkms_8.048.03-1~bpo10+1_all.deb
到U盘,进入debian10。
sudo mount /dev/sdc /mnt
sudo dpkg -i /mnt/r8168-dkms_8.048.03-1~bpo10+1_all.deb
重新安装后:
sudo pppoeconf xx:xx:70:c2:2c:4a
#input account name and password
sudo pon dsl-provier
plugin rp-pppoe.so load
/usr/sbin/pppd:unknown host nic-00
就在昨天,我在 debian10 中可以通过 pppoe 连接互联网,那么如何解决呢?
如果 Windows 处于休眠状态,它可能会使该卡进入在 Debian 中无法使用的状态。解决方案可能是确保 Windows 关闭,而不是休眠。
@Nikita Kipriyanov,我确信它与 Windows 无关。
在旧的 debian10 无法识别以太网设备后,我安装了一个相同版本的新 debian10,现在我的电脑中有三个操作系统而不是两个操作系统。
进入新安装的debian,我可以通过pppoeconf连接互联网!也就是说,win10和新安装的debian10都可以连接互联网!为什么我的旧debian10无法识别以太网设备!
我firmware-realtek_20190114-2_all.deb
在win10中下载到USB并在旧的debian10中将其dpkg,没有任何改变!
所有驱动程序均显示:
modinfo r8169
filename: /lib/modules/5.10.0-0.bpo.7-amd64/kernel/drivers/net/ethernet/realtek/r8169.ko
firmware: rtl_nic/rtl8125b-2.fw
firmware: rtl_nic/rtl8125a-3.fw
firmware: rtl_nic/rtl8107e-2.fw
firmware: rtl_nic/rtl8107e-1.fw
firmware: rtl_nic/rtl8168fp-3.fw
firmware: rtl_nic/rtl8168h-2.fw
firmware: rtl_nic/rtl8168h-1.fw
firmware: rtl_nic/rtl8168g-3.fw
firmware: rtl_nic/rtl8168g-2.fw
firmware: rtl_nic/rtl8106e-2.fw
firmware: rtl_nic/rtl8106e-1.fw
firmware: rtl_nic/rtl8411-2.fw
firmware: rtl_nic/rtl8411-1.fw
firmware: rtl_nic/rtl8402-1.fw
firmware: rtl_nic/rtl8168f-2.fw
firmware: rtl_nic/rtl8168f-1.fw
firmware: rtl_nic/rtl8105e-1.fw
firmware: rtl_nic/rtl8168e-3.fw
firmware: rtl_nic/rtl8168e-2.fw
firmware: rtl_nic/rtl8168e-1.fw
firmware: rtl_nic/rtl8168d-2.fw
firmware: rtl_nic/rtl8168d-1.fw
license: GPL
softdep: pre: realtek
description: RealTek RTL-8169 Gigabit Ethernet driver
ls /lib/firmware/rtl_nic
rtl8105e-1.fw rtl8107e-1.fw rtl8125b-2.fw rtl8168d-2.fw rtl8168e-3.fw rtl8168fp-3.fw rtl8168g-3.fw rtl8402-1.fw
rtl8106e-1.fw rtl8107e-2.fw rtl8153a-3.fw rtl8168e-1.fw rtl8168f-1.fw rtl8168g-1.fw rtl8168h-1.fw rtl8411-1.fw
rtl8106e-2.fw rtl8125a-3.fw rtl8168d-1.fw rtl8168e-2.fw rtl8168f-2.fw rtl8168g-2.fw rtl8168h-2.fw rtl8411-2.fw
没有以太网设备,例如enp*s*
.
ifconfig -a
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 20 bytes 1120 (1.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 20 bytes 1120 (1.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
uname -a
Linux debian 5.10.0-0.bpo.7-amd64 #1 SMP Debian 5.10.40-1~bpo10+1 (2021-06-04) x86_64 GNU/Linux
答案1
该软件包r8168-dkms_8.048.03-1~bpo10+1_all.deb
包含文件/etc/modprobe.d/r8168-dkms.conf
,该文件将告诉内核加载该模块,而不是特定卡型号的r8168
默认模块。r8169
该软件包r8168
仅包含源代码形式的模块:为了使其可用,该dkms
软件包将使用该实用程序为您正在使用的每个内核版本自动构建该模块。
linux-headers
但只有当您安装了与您安装的确切内核版本相匹配的编译器和软件包时,DKMS 才能完成其工作。您可能没有linux-headers
安装适合当前内核的软件包,或者当 DKMS 尝试r8168
为您自动构建模块时出现了问题。
您应该通过运行 来验证 DKMS 是否处于正确状态来开始故障排除sudo dkms status
。
如果内核模块已正确构建,则dkms status
命令的输出应包含如下行:
r8168, 8.048.03, <your current kernel version>, amd64: installed
该<your current kernel version>
字段应与 的输出完全匹配uname -r
。
installed
末尾的单词表示实际的二进制模块已成功构建并插入到当前内核的/lib/modules/$(uname -r)/...
目录树中。其他可能的状态字是,built
这意味着二进制模块已成功构建,但尚未可供内核使用,added
这意味着模块的源代码已安装,但二进制模块尚未构建。
您应该验证是否linux-headers
安装了适当的软件包,然后通过运行以下命令重试构建模块:
sudo dkms install r8168/8.048.03
如果报告问题,可以在 中找到构建过程的更详细日志以及在此过程中遇到的任何错误消息/var/lib/dkms/r8168/8.048.03/$(uname -r)/x86_64/log/make.log
。
如果您想尝试使用默认r8169
驱动程序,则需要卸载该r8168-dkms_8.048.03-1~bpo10+1_all.deb
软件包,或将其重命名/etc/modprobe.d/r8168-dkms.conf
为 eg/etc/modprobe.d/r8168-dkms.conf.disabled
并运行sudo update-initramfs -u
以将更改传播到当前的 initramfs 文件中。
答案2
检查当前状态。
debian@debian:~$ sudo dkms status
r8168, 8.048.03: added
debian@debian:~$ sudo dkms install r8168/8.048.03
Error! Your kernel headers for kernel 5.10.0-0.bpo.7-amd64 cannot be found.
Please install the linux-headers-5.10.0-0.bpo.7-amd64 package,
or use the --kernelsourcedir option to tell DKMS where it's located
我将linux-headers-5.10.0-0.bpo.7-amd64_5.10.40-1~bpo10+1_amd64.deb下载到USB中,然后挂载USB进行安装:
sudo dpkg -i linux-headers-5.10.0-0.bpo.7-amd64_5.10.40-1~bpo10+1_amd64.deb
Selecting previously unselected package linux-headers-5.10.0-0.bpo.7-amd64.
(Reading database ... 269528 files and directories currently installed.)
Preparing to unpack .../linux-headers-5.10.0-0.bpo.7-amd64_5.10.40-1~bpo10+1_amd64.deb ...
Unpacking linux-headers-5.10.0-0.bpo.7-amd64 (5.10.40-1~bpo10+1) ...
dpkg: dependency problems prevent configuration of linux-headers-5.10.0-0.bpo.7-amd64:
linux-headers-5.10.0-0.bpo.7-amd64 depends on linux-headers-5.10.0-0.bpo.7-common (= 5.10.40-1~bpo10+1); however:
Package linux-headers-5.10.0-0.bpo.7-common is not installed.
linux-headers-5.10.0-0.bpo.7-amd64 depends on linux-kbuild-5.10 (>= 5.10.40-1~bpo10+1); however:
Version of linux-kbuild-5.10 on system is 5.10.24-1~bpo10+1.
dpkg: error processing package linux-headers-5.10.0-0.bpo.7-amd64 (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
linux-headers-5.10.0-0.bpo.7-amd64
现在下载linux-headers-5.10.0-0.bpo.5-amd64_5.10.24-1~bpo10+1_amd64.deb
并安装它。
sudo dpkg -i linux-headers-5.10.0-0.bpo.5-amd64_5.10.24-1~bpo10+1_amd64.deb
sudo mv /etc/modprobe.d/r8168-dkms.conf /etc/modprobe.d/r8168-dkms.conf.disabled
sudo update-initramfs -u
重启:
ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:e0:70:c2:2c:4a brd ff:ff:ff:ff:ff:ff
我可以连接互联网!