可能缺少固件

可能缺少固件

我刚刚在我的新机器上安装了 Backtrack 5 r3(Gnome,64 位),但我遇到了一个问题。

我尝试安装 ATI 驱动程序、gparted 和 libc 以支持 32 位,但我似乎总是遇到一个常见的错误行:

W:模块 r8169 可能缺少固件 /lib/firmware/rtl_nic/rtl8168f-2.fw
W:模块 r8169 可能缺少固件 /lib/firmware/rtl_nic/rtl8168f-1.fw

这是什么问题,如何解决?

如果您想了解更多信息,请发表评论

编辑:
尝试安装时收到的错误消息

linux-固件

错误!内核上模块构建的错误返回状态:3.2.6 (x86_64) 有关详细信息,
请参阅构建目录 /var/lib/dkms/fglrx/8.723.1/build/ 中的 make.log 。
dpkg:
处理 fglrx 时出错(--configure):子进程安装的安装
后脚本返回错误退出状态 10 dpkg:
依赖性问题阻止配置 fglrx-amdcccle:
fglrx-amdcccle 依赖于 fglrx;但是: fglrx 软件包尚未
配置。 dpkg: 处理 fglrx-amdcccle (--configure) 时出错:
依赖性问题 - 未配置 未写入任何批准报告,
因为错误消息表明它是先前故障的后续错误

处理 python-gmenu 的触发器 ... 重建
/usr/share/applications/desktop.en_US.utf8.cache...
处理 initramfs-tools 的触发器 ... update-initramfs:
生成 /boot/initrd.img-3.2。 6 python-support 的处理触发器
...处理时遇到错误:fglrx
fglrx-amdcccle E:子进程 /usr/bin/dpkg 返回错误代码 (1)

EDIT2:
/var/lib/dkms/fglrx/8.723.1/build/ 中 make.log 文件的内容

doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers
make -C /lib/modules/3.2.6/build SUBDIRS=/var/lib/dkms/fglrx/8.723.1/build/2.6.x modules
make[1]: Entering directory `/usr/src/linux-source-3.2.6'

  WARNING: Symbol version dump /usr/src/linux-source-3.2.6/Module.symvers
           is missing; modules will have no dependencies and modversions.

  CC [M]  /var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.o
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:113:28: error: linux/smp_lock.h: No such file or directory
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:402: error: unknown field ‘ioctl’ specified in initializer
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:402: warning: initialization from incompatible pointer type
In file included from /var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:443:
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/drm_proc.h: In function ‘FGLDRM__vma_info’:
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/drm_proc.h:497: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 5 has type ‘phys_addr_t’
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c: In function ‘fglrx_pci_suspend’:
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:833: error: implicit declaration of function ‘acquire_console_sem’
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:855: error: implicit declaration of function ‘release_console_sem’
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c: In function ‘firegl_init_module’:
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:1028: error: ‘SPIN_LOCK_UNLOCKED’ undeclared (first use in this function)
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:1028: error: (Each undeclared identifier is reported only once
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:1028: error: for each function it appears in.)
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c: In function ‘KCL_SetPageCache_Array’:
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:1316: warning: passing argument 1 of ‘KCL_ConvertPageToKernelAddress’ makes pointer from integer without a cast
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.h:325: note: expected ‘void *’ but argument is of type ‘long unsigned int’
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c: In function ‘__ke__cmpxchg’:
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:1473: error: variable or field ‘__ret’ declared void
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:1473: error: variable or field ‘__old’ declared void
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:1473: error: variable or field ‘__new’ declared void
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c: In function ‘KCL_GlobalKernelLock’:
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:1866: error: implicit declaration of function ‘lock_kernel’
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c: In function ‘KCL_GlobalKernelUnlock’:
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:1872: error: implicit declaration of function ‘unlock_kernel’
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c: In function ‘KAS_Mutex_Initialize’:
/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.c:5051: error: implicit declaration of function ‘init_MUTEX’
make[2]: *** [/var/lib/dkms/fglrx/8.723.1/build/2.6.x/firegl_public.o] Error 1
make[1]: *** [_module_/var/lib/dkms/fglrx/8.723.1/build/2.6.x] Error 2
make[1]: Leaving directory `/usr/src/linux-source-3.2.6'
make: *** [kmod_build] Error 2
build failed with return value 2

答案1

导致此错误的可能原因有两个:

  1. 您的 PC 中没有硬件(Realtek NIC),并且对另一个软件包中缺少的固件文件存在不正确的依赖关系。在这种情况下,您可以安全地忽略该错误。

  2. 您的 PC 中确实有硬件,并且需要安装或更新固件。大多数 Linux 发行版都有一个包含这些固件文件的非免费软件包存储库。您需要将存储库添加到/etc/apt/sources.list.

要判断您是否拥有 Realtek NIC 及其模块,请执行以下操作:

sudo lshw | grep 8169

答案2

从技术上讲,这只是一个警告 (W)。如果您实际上并未使用硬件的该部分并且没有注意到任何缺失的功能,那么这并不是真正的问题。

图形驱动程序实际上并不需要这些固件文件,只是 Debian 中的内核模块包会触发常规检查来查找该问题。它并不是特定于这些图形驱动程序的 - 它只是内核模块处理方式的副作用。

正如 dartonw 所说,这通常可以通过安装其中一个固件包来解决。在 Debian 中,rtl8168f-1.fw由 提供firmware-realtek,但在 BackTrack 和 Ubuntu 中,由linux-firmware。尝试根据您的发行版安装其中一个软件包,希望它能解决问题。

答案3

rtl8168f警告

对于 rtl8168f 警告,如果您的以太网卡工作正常,您可以忽略此消息。您可能缺少某些功能(例如 TCP 卸载)。您还可以按照 Brian Marshall 的回答安装固件包。

对于 fglxr 错误:

看来您没有安装内核头文件。您需要它们来构建内核模块(使用 dkms 或其他方式)。

它们应该位于一个名称类似的包中(但如果您不知道的话,linux-headers-3.2.0-4-amd64请替换为您的内核版本和体系结构;安装后,dkms 应该成功构建该模块。uname -r

答案4

要找到包含缺少的固件文件的包,您可以在存储库中搜索包含这些文件的包。因此,这是在基于 Debian 的发行版中搜索哪个软件包拥有哪个文件的通用方法。

因此,由于固件位于等位置,因此如果它们存在于您已加载的某个存储库的某个包中,/lib/firmware/rtl_nic/rtl8168f-1.fw您可以使用搜索字符串来找到它们。rtl_nic/rtl8168

您可能需要nonfree或其他存储库,其中非免费固件打包在您的/etc/apt/source.list/etc/apt/source.list.d/*.list文件中才能完成此工作。在 Debian 以外的其他发行版中,它可以有其他名称。

 apt-file search rtl_nic/rtl8168

或者

dpkg-query -S rtl_nic/rtl8168

找到他们。结果看起来像这样:

linux-firmware: /lib/firmware/rtl_nic/rtl8168d-1.fw
linux-firmware: /lib/firmware/rtl_nic/rtl8168d-2.fw
linux-firmware: /lib/firmware/rtl_nic/rtl8168e-1.fw
...

快乐黑客。

相关内容