我正在 Ubuntu桌面 14.04.3 LTS上尝试安装此网卡(全新安装,只是格式化):
Silicom PXG6BPi Six Port Copper Gigabit Ethernet PCI-X Bypass Server Adapter
根据 docs :
将基本驱动程序tar文件移动到您选择的目录中。例如,使用/ home / username / e1000bp或/ usr / local / src / e1000bp。
解压/解压缩存档:
tar zxf e1000bp-x.x.x.tar.gz
切换到驱动程序src目录:
cd e1000bp-x.x.x / src /
- 醇>
编译驱动程序模块:
make install
但是我收到了一些implicit declaration of function
错误:
luis@Terminus:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ sudo make install make -C /lib/modules/3.16.0-57-generic/build SUBDIRS=/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src modules
make[1]: se ingresa al directorio «/usr/src/linux-headers-3.16.0-57-generic»
CC [M] /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_ethtool.o
/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_ethtool.c: In function ‘e1000_set_ethtool_ops’:
/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_ethtool.c:1930:5: error: implicit declaration of function ‘SET_ETHTOOL_OPS’ [-Werror=implicit-function-declaration]
SET_ETHTOOL_OPS(netdev, &e1000_ethtool_ops);
^
cc1: some warnings being treated as errors
make[2]: *** [/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_ethtool.o] Error 1
make[1]: *** [_module_/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src] Error 2
make[1]: se sale del directorio «/usr/src/linux-headers-3.16.0-57-generic»
make: *** [default] Error 2
我认为安装了所有可能需要的东西(linux-generic
,make
,gcc
,甚至ethtool
)(我的Ubuntu是西班牙语,对不起):< / p>
luis@Terminus:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ sudo apt-get install ethtool linux-generic make gcc
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
ethtool ya está en su versión más reciente.
fijado ethtool como instalado manualmente.
gcc ya está en su versión más reciente.
make ya está en su versión más reciente.
fijado make como instalado manualmente.
linux-generic ya está en su versión más reciente.
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
linux-headers-3.16.0-55 linux-headers-3.16.0-55-generic
linux-image-3.16.0-55-generic linux-image-extra-3.16.0-55-generic
Use 'apt-get autoremove' to remove them.
0 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados.
这是/src
目录列表:
luis@Terminus:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ ls -la
total 1352
drwxr-xr-x 3 luis luis 4096 ene 5 15:39 .
drwxr-xr-x 3 luis luis 4096 jul 15 2014 ..
-rwxr--r-- 1 luis luis 5653 dic 22 2008 bp_ioctl.h
-rwxr--r-- 1 luis luis 91521 sep 19 2012 bypass.c
-rwxr--r-- 1 luis luis 14501 dic 19 2011 bypass.h
-rw-r--r-- 1 root root 51576 ene 5 05:38 bypass.o
-rw-r--r-- 1 root root 48684 ene 5 05:38 .bypass.o.cmd
-rwxr--r-- 1 luis luis 62552 jul 15 2014 e1000_ethtool.c
-rwxr--r-- 1 luis luis 11577 jul 15 2014 e1000.h
-rwxr--r-- 1 luis luis 192747 jul 15 2014 e1000_hw.c
-rwxr--r-- 1 luis luis 143287 jul 15 2014 e1000_hw.h
-rw-r--r-- 1 root root 110576 ene 5 05:38 e1000_hw.o
-rw-r--r-- 1 root root 48706 ene 5 05:38 .e1000_hw.o.cmd
-rwxr--r-- 1 luis luis 153304 jul 15 2014 e1000_main.c
-rw-r--r-- 1 root root 81472 ene 5 05:38 e1000_main.o
-rw-r--r-- 1 root root 49206 ene 5 05:38 .e1000_main.o.cmd
-rwxr--r-- 1 luis luis 3967 sep 19 2012 e1000_osdep.h
-rwxr--r-- 1 luis luis 22838 jul 15 2014 e1000_param.c
-rw-r--r-- 1 root root 27840 ene 5 05:38 e1000_param.o
-rw-r--r-- 1 root root 48739 ene 5 05:38 .e1000_param.o.cmd
-rwxr--r-- 1 luis luis 59214 jul 15 2014 e1000_proc.c
-rw-r--r-- 1 root root 51128 ene 5 05:38 e1000_proc.o
-rw-r--r-- 1 root root 48771 ene 5 05:38 .e1000_proc.o.cmd
-rwxr--r-- 1 luis luis 11317 jul 15 2014 Makefile
drwxr-xr-x 2 root root 4096 ene 5 05:38 .tmp_versions
这是我的Ubuntu桌面版:
luis@Terminus:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty
一个重要细节:在 Ubuntu服务器 v14.04.1 LTS(同一台计算机,在另一个分区上)上,相同的程序工作完美:
luis@ThreepWood:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ sudo make install
make -C /lib/modules/3.13.0-32-generic/build SUBDIRS=/home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src modules
make[1]: se ingresa al directorio «/usr/src/linux-headers-3.13.0-32-generic»
CC [M] /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_main.o
CC [M] /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_param.o
CC [M] /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_hw.o
CC [M] /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_proc.o
CC [M] /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/bypass.o
CC [M] /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000_ethtool.o
LD [M] /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000bp.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000bp.mod.o
LD [M] /home/luis/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src/e1000bp.ko
make[1]: se sale del directorio «/usr/src/linux-headers-3.13.0-32-generic»
gzip -c ../e1000bp.7 > e1000bp.7.gz
# remove all old versions of the driver
find /lib/modules/3.13.0-32-generic -name e1000bp.ko -exec rm -f {} \; || true
find /lib/modules/3.13.0-32-generic -name e1000bp.ko.gz -exec rm -f {} \; || true
install -D -m 644 e1000bp.ko /lib/modules/3.13.0-32-generic/kernel/drivers/net/ethernet/intel/e1000bp/e1000bp.ko
/sbin/depmod -a || true
install -D -m 644 e1000bp.7.gz /usr/share/man/man7/e1000bp.7.gz
man -c -P'cat > /dev/null' e1000bp || true
e1000bp.
luis@ThreepWood:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$
在这种情况下,它太全新安装,但不是最新版本(仅安装了make
和gcc
,因为ethtool
已包含在内):
luis@ThreepWood:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
编译后这是/src
目录:
luis@ThreepWood:~/Temporal/PXG6BPi/e1000bp-7.3.21-k8.silc.6.1/src$ ls -la
total 2216
drwxr-xr-x 3 luis luis 4096 ene 5 18:26 .
drwxr-xr-x 3 luis luis 4096 jul 15 2014 ..
-rwxr--r-- 1 luis luis 5653 dic 22 2008 bp_ioctl.h
-rwxr--r-- 1 luis luis 91521 sep 19 2012 bypass.c
-rwxr--r-- 1 luis luis 14501 dic 19 2011 bypass.h
-rw-r--r-- 1 root root 52088 ene 5 18:26 bypass.o
-rw-r--r-- 1 root root 55509 ene 5 18:26 .bypass.o.cmd
-rw-r--r-- 1 root root 4942 ene 5 18:26 e1000bp.7.gz
-rw-r--r-- 1 root root 343160 ene 5 18:26 e1000bp.ko
-rw-r--r-- 1 root root 394 ene 5 18:26 .e1000bp.ko.cmd
-rw-r--r-- 1 root root 9288 ene 5 18:26 e1000bp.mod.c
-rw-r--r-- 1 root root 12912 ene 5 18:26 e1000bp.mod.o
-rw-r--r-- 1 root root 29999 ene 5 18:26 .e1000bp.mod.o.cmd
-rw-r--r-- 1 root root 331102 ene 5 18:26 e1000bp.o
-rw-r--r-- 1 root root 601 ene 5 18:26 .e1000bp.o.cmd
-rwxr--r-- 1 luis luis 62552 jul 15 2014 e1000_ethtool.c
-rw-r--r-- 1 root root 31432 ene 5 18:26 e1000_ethtool.o
-rw-r--r-- 1 root root 55586 ene 5 18:26 .e1000_ethtool.o.cmd
-rwxr--r-- 1 luis luis 11577 jul 15 2014 e1000.h
-rwxr--r-- 1 luis luis 192747 jul 15 2014 e1000_hw.c
-rwxr--r-- 1 luis luis 143287 jul 15 2014 e1000_hw.h
-rw-r--r-- 1 root root 110576 ene 5 18:26 e1000_hw.o
-rw-r--r-- 1 root root 55531 ene 5 18:26 .e1000_hw.o.cmd
-rwxr--r-- 1 luis luis 153304 jul 15 2014 e1000_main.c
-rw-r--r-- 1 root root 81776 ene 5 18:26 e1000_main.o
-rw-r--r-- 1 root root 56081 ene 5 18:26 .e1000_main.o.cmd
-rwxr--r-- 1 luis luis 3967 sep 19 2012 e1000_osdep.h
-rwxr--r-- 1 luis luis 22838 jul 15 2014 e1000_param.c
-rw-r--r-- 1 root root 27840 ene 5 18:26 e1000_param.o
-rw-r--r-- 1 root root 55564 ene 5 18:26 .e1000_param.o.cmd
-rwxr--r-- 1 luis luis 59214 jul 15 2014 e1000_proc.c
-rw-r--r-- 1 root root 50464 ene 5 18:26 e1000_proc.o
-rw-r--r-- 1 root root 55596 ene 5 18:26 .e1000_proc.o.cmd
-rwxr--r-- 1 luis luis 11317 jul 15 2014 Makefile
-rw-r--r-- 1 root root 77 ene 5 18:26 modules.order
-rw-r--r-- 1 root root 0 ene 5 18:26 Module.symvers
drwxr-xr-x 2 root root 4096 ene 5 18:26 .tmp_versions
我想我理解这种[error][2]
的基础知识,但我不知道如何将它应用于这种特殊情况。
为什么会发生这种情况?
我怎么能解决这个错误并安装/编译驱动程序?
也许只是复制/src
目录?文档说:
二进制文件将安装为:
/lib/modules/<KERNEL VERSION>/kernel/drivers/net/e1000bp/e1000bp.[k]o
上面列出的安装位置是默认位置。他们 某些Linux发行版可能不正确。