转储以太网卡 BIOS 的 ROM 时出错 - RTL8111/8168b

转储以太网卡 BIOS 的 ROM 时出错 - RTL8111/8168b

使用本教程“使用 PCI sysfs 接口转储视频 BIOS ROM”我尝试重复从网卡转储 BIOS ROM 的步骤。

我的网卡是:

$ lspci
[snip]
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)

因此我输入了这个来确定我的网卡 rom 在哪里:

$ find /sys/devices -name "rom"
/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom
/sys/devices/pci0000:00/0000:00:1c.3/0000:03:00.0/rom

这是第二个结果。现在我必须放弃它。

因此,输入必须输入的内容时,出现错误:

$ echo 1 | sudo tee /sys/devices/pci0000:00/0000:00:1c.3/0000:03:00.0/rom
1
$ sudo cat /sys/devices/pci0000:00/0000:00:1c.3/0000:03:00.0/rom > netbios.rom
cat: /sys/devices/pci0000:00/0000:00:1c.3/0000:03:00.0/rom: Input/output error

看到了吗?输入/输出错误。使用 ethtool 时,我也收到一个错误:

$ sudo ethtool -e eth0 > romdump.rom
Cannot get EEPROM data: Operation not supported

以下是更多信息:

$ ethtool -i eth0
driver: r8169
version: 2.3LK-NAPI
firmware-version: 
bus-info: 0000:03:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes

所以看起来我的网卡不允许我使用 eeprom 访问转储其 BIOS ROM?但对我来说这有点令人困惑 - 我的意思是,应该可以转储任何硬件的固件,对吗?

答案1

sysfsrom文件允许您读取 PCI ROM 内容,但显然设备不会公开该信息。该信息不可用或未被设备实现。

关于ethtool -e eth0失败的原因,当前的 r8169 驱动程序(最高版本 3.19-rc3)没有实现从 EEPROM 读取的方法。如果您的 Realtek 网络设备有 Atmel 93C46 或 93C56 EEPROM,那么您可以使用以下方法添加此 r8169 功能此补丁(适用于 Linux 3.11)相同的补丁,针对 3.17 重新制定,也适用于 3.19)。

对于那些设备“变砖”的人(症状:垃圾 MAC 地址,如 bb:6f:ff:ff:ff:ff,供应商/设备 ID 报告为 10ec:8129),您可以尝试按照该消息中的说明进行操作。我过去曾尝试过,有时当机器完全断电时,我不得不重复此操作。不幸的是,这些说明并不是 100% 可靠的,每次我都必须尝试更多技巧才能让它工作。截至撰写本文时,这款 RTL8169sb/8110sb 自昨天以来仍然无法使用。

相关内容