При линковке ядра с драйвером этой версии возникает следующая ошибка:
if_igb.o(.text+0x372e): In function `igb_setup_vlan_hw_support': /usr/pfSensesrc/src/sys/dev/e1000/if_igb.c:4544: undefined reference to `e1000_v fta_set_vf' if_igb.o(.text+0x975d): In function `igb_ioctl': /usr/pfSensesrc/src/sys/dev/e1000/if_igb.c:1833: undefined reference to `e1000_p romisc_set_vf' if_igb.o(.text+0x357e): In function `igb_set_promisc': /usr/pfSensesrc/src/sys/dev/e1000/if_igb.c:1811: undefined reference to `e1000_p romisc_set_vf' if_igb.o(.text+0x37a9): In function `igb_setup_vlan_hw_support': /usr/pfSensesrc/src/sys/dev/e1000/if_igb.c:4551: undefined reference to `e1000_r lpml_set_vf' e1000_api.o(.text+0xc6d): In function `e1000_setup_init_funcs': /usr/pfSensesrc/src/sys/dev/e1000/e1000_api.c:357: undefined reference to `e1000 _init_mbx_ops_generic' e1000_api.o(.text+0xce3):/usr/pfSensesrc/src/sys/dev/e1000/e1000_api.c:407: undefined reference to `e1000_init_function_pointers_vf' *** Error code 1 1 error *** Error code 2 1 error *** Error code 2 1 error |
Дело в том, что в фре выше 8.0 в стандартном драйвере исчезли два исходника e1000_vf и e1000_mbx, но в версии от яндекса они всё еще используются.
Для корректной сборки необходимо внести изменения в следующие файлы:
1. /usr/src/sys/conf/files
> dev/e1000/e1000_vf.c optional em | igb \ > compile-with "${NORMAL_C} -I$S/dev/e1000" > dev/e1000/e1000_mbx.c optional em | igb \ > compile-with "${NORMAL_C} -I$S/dev/e1000" |
2. /usr/src/sys/modules/em/Makefile
< COMMON_SHARED = e1000_api.c e1000_phy.c e1000_nvm.c e1000_mac.c e1000_manage.c --- > COMMON_SHARED = e1000_api.c e1000_phy.c e1000_nvm.c e1000_mac.c \ > e1000_manage.c e1000_vf.c e1000_mbx.c |
3. /usr/src/sys/modules/igb/Makefile
< SHARED_SRCS += e1000_82575.c --- > SHARED_SRCS += e1000_82575.c e1000_vf.c e1000_mbx.c |
Благодарим Andy52280 с форума nag.ru
возбуждает и будоражит воображение