LINUX.ORG.RU
решено ФорумAdmin

Подключение модуля и другое...

 ,


0

1

Доброго времени суток!

Я возможно туплю дамы и господа, но возник один вопрос.
Ubuntu server 18.04.

Пытаюсь скомпилировать и установить драйвера для сетевой карты I350-T4V2, которые взял с сайта Intel.
С самой компиляцией проблем нет.
Пытаюсь подключить модуль
rmmod igb; modprobe igb RSS=6,6,6,6

Ошибок нет.

Выхлоп modinfo igb

Intel Corporation, <e1000-devel@lists.sourceforge.net>
root@Router:/var/log# modinfo igb
filename:       /lib/modules/4.15.0-46-generic/updates/drivers/net/ethernet/intel/igb/igb.ko
version:        5.3.5.22
license:        GPL
description:    Intel(R) Gigabit Ethernet Linux Driver
author:         Intel Corporation, <e1000-devel@lists.sourceforge.net>
srcversion:     E29E48F02CC07EACD9C4C96
alias:          pci:v00008086d000010D6sv*sd*bc*sc*i*
alias:          pci:v00008086d000010A9sv*sd*bc*sc*i*
alias:          pci:v00008086d000010A7sv*sd*bc*sc*i*
alias:          pci:v00008086d000010E8sv*sd*bc*sc*i*
alias:          pci:v00008086d00001526sv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Dsv*sd*bc*sc*i*
alias:          pci:v00008086d000010E7sv*sd*bc*sc*i*
alias:          pci:v00008086d000010E6sv*sd*bc*sc*i*
alias:          pci:v00008086d00001518sv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Asv*sd*bc*sc*i*
alias:          pci:v00008086d000010C9sv*sd*bc*sc*i*
alias:          pci:v00008086d00000440sv*sd*bc*sc*i*
alias:          pci:v00008086d0000043Csv*sd*bc*sc*i*
alias:          pci:v00008086d0000043Asv*sd*bc*sc*i*
alias:          pci:v00008086d00000438sv*sd*bc*sc*i*
alias:          pci:v00008086d00001516sv*sd*bc*sc*i*
alias:          pci:v00008086d00001511sv*sd*bc*sc*i*
alias:          pci:v00008086d00001510sv*sd*bc*sc*i*
alias:          pci:v00008086d00001527sv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Esv*sd*bc*sc*i*
alias:          pci:v00008086d00001524sv*sd*bc*sc*i*
alias:          pci:v00008086d00001523sv*sd*bc*sc*i*
alias:          pci:v00008086d00001522sv*sd*bc*sc*i*
alias:          pci:v00008086d00001521sv*sd*bc*sc*i*
alias:          pci:v00008086d00001539sv*sd*bc*sc*i*
alias:          pci:v00008086d0000157Csv*sd*bc*sc*i*
alias:          pci:v00008086d0000157Bsv*sd*bc*sc*i*
alias:          pci:v00008086d00001538sv*sd*bc*sc*i*
alias:          pci:v00008086d00001537sv*sd*bc*sc*i*
alias:          pci:v00008086d00001536sv*sd*bc*sc*i*
alias:          pci:v00008086d00001533sv*sd*bc*sc*i*
alias:          pci:v00008086d00001F45sv*sd*bc*sc*i*
alias:          pci:v00008086d00001F41sv*sd*bc*sc*i*
alias:          pci:v00008086d00001F40sv*sd*bc*sc*i*
depends:        ptp,dca
retpoline:      Y
name:           igb
vermagic:       4.15.0-46-generic SMP mod_unload
parm:           InterruptThrottleRate:Maximum interrupts per second, per vector, (max 100000), default 3=adaptive (array of int)
parm:           IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int)
parm:           Node:set the starting node to allocate memory on, default -1 (array of int)
parm:           LLIPort:Low Latency Interrupt TCP Port (0-65535), default 0=off (array of int)
parm:           LLIPush:Low Latency Interrupt on TCP Push flag (0,1), default 0=off (array of int)
parm:           LLISize:Low Latency Interrupt on Packet Size (0-1500), default 0=off (array of int)
parm:           RSS:Number of Receive-Side Scaling Descriptor Queues (0-8), default 1, 0=number of cpus (array of int)
parm:           VMDQ:Number of Virtual Machine Device Queues: 0-1 = disable, 2-8 enable, default 0 (array of int)
parm:           max_vfs:Number of Virtual Functions: 0 = disable, 1-7 enable, default 0 (array of int)
parm:           MDD:Malicious Driver Detection (0/1), default 1 = enabled. Only available when max_vfs is greater than 0 (array of int)
parm:           QueuePairs:Enable Tx/Rx queue pairs for interrupt handling (0,1), default 1=on (array of int)
parm:           EEE:Enable/disable on parts that support the feature (array of int)
parm:           DMAC:Disable or set latency for DMA Coalescing ((0=off, 1000-10000(msec), 250, 500 (usec)) (array of int)
parm:           LRO:Large Receive Offload (0,1), default 0=off (array of int)
parm:           debug:Debug level (0=none, ..., 16=all) (int)

Но когда перезагружаю компьютер то вижу в dmesg такое

[   13.242751] dca service started, version 1.12.1
[   13.322594] igb: unknown parameter 'RSS' ignored
[   13.322632] SSE version of gcm_enc/dec engaged.
[   13.508601] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.4.0-k
[   13.584513] igb: Copyright (c) 2007-2014 Intel Corporation.
[   13.660707] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[   13.730975] igb 0000:03:00.0: added PHC on eth0
[   13.730977] igb 0000:03:00.0: Intel(R) Gigabit Ethernet Network Connection
[   13.730978] igb 0000:03:00.0: eth0: (PCIe:5.0Gb/s:Width x4) b4:96:91:3d:f0:dc
[   13.731271] igb 0000:03:00.0: eth0: PBA No: H47822-003
[   13.731272] igb 0000:03:00.0: Using MSI-X interrupts. 6 rx queue(s), 6 tx queue(s)
[   13.802820] igb 0000:03:00.1: added PHC on eth1
[   13.802821] igb 0000:03:00.1: Intel(R) Gigabit Ethernet Network Connection
[   13.802822] igb 0000:03:00.1: eth1: (PCIe:5.0Gb/s:Width x4) b4:96:91:3d:f0:dd
[   13.803116] igb 0000:03:00.1: eth1: PBA No: H47822-003
[   13.803117] igb 0000:03:00.1: Using MSI-X interrupts. 6 rx queue(s), 6 tx queue(s)
[   13.875120] igb 0000:03:00.2: added PHC on eth2
[   13.875121] igb 0000:03:00.2: Intel(R) Gigabit Ethernet Network Connection
[   13.875122] igb 0000:03:00.2: eth2: (PCIe:5.0Gb/s:Width x4) b4:96:91:3d:f0:de
[   13.875416] igb 0000:03:00.2: eth2: PBA No: H47822-003
[   13.875417] igb 0000:03:00.2: Using MSI-X interrupts. 6 rx queue(s), 6 tx queue(s)
[   13.944590] igb 0000:03:00.3: added PHC on eth3
[   13.944591] igb 0000:03:00.3: Intel(R) Gigabit Ethernet Network Connection
[   13.944592] igb 0000:03:00.3: eth3: (PCIe:5.0Gb/s:Width x4) b4:96:91:3d:f0:df
[   13.944885] igb 0000:03:00.3: eth3: PBA No: H47822-003
[   13.944887] igb 0000:03:00.3: Using MSI-X interrupts. 6 rx queue(s), 6 tx queue(s)

Почему «Intel(R) Gigabit Ethernet Network Driver - version 5.4.0-k», что я делаю не так или что я не понимаю?


что я делаю не так или что я не понимаю?

Вот это:

Пытаюсь скомпилировать и установить драйвера для сетевой карты I350-T4V2, которые взял с сайта Intel.

Deleted
()
Ответ на: комментарий от Deleted

А точнее можно, я не должен брать оттуда драйвера, я не правильно их скомпилировал, драйвера оттуда не подходят..., что не так...?

Uranus
() автор топика
Ответ на: комментарий от Uranus

Эта сетевая карта (I350) работает сама по себе, без какого либо вмешательства пользователя.

Deleted
()
Ответ на: комментарий от Deleted

Хмм, а если я хочу изменить некоторые параметры, типа

parm:           InterruptThrottleRate:Maximum interrupts per second, per vector, (max 100000), default 3=adaptive (array of int)
parm:           IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int)
parm:           Node:set the starting node to allocate memory on, default -1 (array of int)
parm:           LLIPort:Low Latency Interrupt TCP Port (0-65535), default 0=off (array of int)
parm:           LLIPush:Low Latency Interrupt on TCP Push flag (0,1), default 0=off (array of int)
parm:           LLISize:Low Latency Interrupt on Packet Size (0-1500), default 0=off (array of int)
parm:           RSS:Number of Receive-Side Scaling Descriptor Queues (0-8), default 1, 0=number of cpus (array of int)
parm:           VMDQ:Number of Virtual Machine Device Queues: 0-1 = disable, 2-8 enable, default 0 (array of int)
parm:           max_vfs:Number of Virtual Functions: 0 = disable, 1-7 enable, default 0 (array of int)
parm:           MDD:Malicious Driver Detection (0/1), default 1 = enabled. Only available when max_vfs is greater than 0 (array of int)
parm:           QueuePairs:Enable Tx/Rx queue pairs for interrupt handling (0,1), default 1=on (array of int)
parm:           EEE:Enable/disable on parts that support the feature (array of int)
parm:           DMAC:Disable or set latency for DMA Coalescing ((0=off, 1000-10000(msec), 250, 500 (usec)) (array of int)
parm:           LRO:Large Receive Offload (0,1), default 0=off (array of int)
parm:           debug:Debug level (0=none, ..., 16=all) (int)

Я лично вообще этим баловством с драйверами занялся потому что, драйвер по умолчанию говорит одно, а драйвер Интел другое.
Хотел я попробовать побаловаться с «ntuple», так вот драйвер по умолчанию говорит что он у меня есть, позволяет его включать, но вот правила добавлять не позволяет, а вот интеловский сразу говорит что у меня такого нет, хотя примеры описания этой технологии сама интел приводит как раз на карте такого же типа как у меня.
Вот я и подумал, может они что в драйверах изменили, может в старых это работало, а теперь вы мне говорите что и пытаться не стоит?

Uranus
() автор топика

Во-первых, не надо тащить виндузовые привычки (брать дрова и софт с каких бы то ни было сайтов — вот это вот в первую очередь) в системы с репозиторием. Весь софт должен ставиться через пакетный менеджер. Случаи, когда софта в репозиториях нет, пока не рассматриваю, это отдельный срачегонный момент. Во-вторых, дрова в линуксе являются частью ядра. Соответственно, если ты хочешь обновить драйвер, тебе нужно обновлять в первую очередь ядро.

Если тебе нужно подключить какие-то опции драйвера, это делается через передачу параметров где-нибудь в /etc/, в зависимости от твоей системы

XMs ★★★★★
()
Ответ на: комментарий от XMs

Во-первых, не надо тащить виндузовые привычки (брать дрова и софт с каких бы то ни было сайтов — вот это вот в первую очередь) в системы с репозиторием. Весь софт должен ставиться через пакетный менеджер.

Я это вполне понимаю, но я хочу разобраться с «ntuple», по этому и затеял всё это.

Если тебе нужно подключить какие-то опции драйвера, это делается через передачу параметров где-нибудь в /etc/, в зависимости от твоей системы

К сожалению я не знаю как это делается, да и не работает похоже драйвер по умолчанию с «ntuple».

Uranus
() автор топика
Ответ на: комментарий от Uranus

Тут ничего удивительного нет — у тебя сперва грузятся модули из initrd. Я без понятия, что именно ты сделал с системой, но если ты не делал make install, то дай выхлоп

modinfo /lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/igb/igb.ko
(или где у тебя там лежит твой нормальный модуль?)

XMs ★★★★★
()
Ответ на: комментарий от XMs

Вот, пожалуйста

filename:       /lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/igb/igb.ko
version:        5.4.0-k
license:        GPL
description:    Intel(R) Gigabit Ethernet Network Driver
author:         Intel Corporation, <e1000-devel@lists.sourceforge.net>
srcversion:     72D3536FA7A252896633583
alias:          pci:v00008086d000010D6sv*sd*bc*sc*i*
alias:          pci:v00008086d000010A9sv*sd*bc*sc*i*
alias:          pci:v00008086d000010A7sv*sd*bc*sc*i*
alias:          pci:v00008086d000010E8sv*sd*bc*sc*i*
alias:          pci:v00008086d00001526sv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Dsv*sd*bc*sc*i*
alias:          pci:v00008086d000010E7sv*sd*bc*sc*i*
alias:          pci:v00008086d000010E6sv*sd*bc*sc*i*
alias:          pci:v00008086d00001518sv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Asv*sd*bc*sc*i*
alias:          pci:v00008086d000010C9sv*sd*bc*sc*i*
alias:          pci:v00008086d00000440sv*sd*bc*sc*i*
alias:          pci:v00008086d0000043Csv*sd*bc*sc*i*
alias:          pci:v00008086d0000043Asv*sd*bc*sc*i*
alias:          pci:v00008086d00000438sv*sd*bc*sc*i*
alias:          pci:v00008086d00001516sv*sd*bc*sc*i*
alias:          pci:v00008086d00001511sv*sd*bc*sc*i*
alias:          pci:v00008086d00001510sv*sd*bc*sc*i*
alias:          pci:v00008086d00001527sv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Esv*sd*bc*sc*i*
alias:          pci:v00008086d00001524sv*sd*bc*sc*i*
alias:          pci:v00008086d00001523sv*sd*bc*sc*i*
alias:          pci:v00008086d00001522sv*sd*bc*sc*i*
alias:          pci:v00008086d00001521sv*sd*bc*sc*i*
alias:          pci:v00008086d0000157Csv*sd*bc*sc*i*
alias:          pci:v00008086d0000157Bsv*sd*bc*sc*i*
alias:          pci:v00008086d00001538sv*sd*bc*sc*i*
alias:          pci:v00008086d00001537sv*sd*bc*sc*i*
alias:          pci:v00008086d00001536sv*sd*bc*sc*i*
alias:          pci:v00008086d00001533sv*sd*bc*sc*i*
alias:          pci:v00008086d00001539sv*sd*bc*sc*i*
alias:          pci:v00008086d00001F45sv*sd*bc*sc*i*
alias:          pci:v00008086d00001F41sv*sd*bc*sc*i*
alias:          pci:v00008086d00001F40sv*sd*bc*sc*i*
depends:        ptp,dca,i2c-algo-bit
retpoline:      Y
intree:         Y
name:           igb
vermagic:       4.15.0-46-generic SMP mod_unload
signat:         PKCS#7
signer:
sig_key:
sig_hashalgo:   md4
parm:           max_vfs:Maximum number of virtual functions to allocate per physical function (uint)
parm:           debug:Debug level (0=none,...,16=all) (int)

Uranus
() автор топика
Ответ на: комментарий от Uranus

Да, у него такого параметра нет. Возможно, модуль собрали с другими опциями, либо (т. к. здесь более новая версия) решили, что та функциональность не работала

XMs ★★★★★
()

Собрать-то собрали...

Помимо сборки модуля его необходимо, так сказать, зарегистрировать в системе.
Самый простой и при этом самый неправильный и кривой — заменить старый модуль новым. Т.е. скопировать его в каталог /lib/modules/4.15.0-46-generic/updates/drivers/net/ethernet/intel/igb/. И при этом скорее всего надо будет обновить initramfs.
Второй способ более правильный — применить DKMS. В этом вопросе пока ещё плаваю, но примерно нужно сделать следующее:
1. в каталоге /usr/src/ создать подкаталог <module_name>-<module_version>;
2. в этот подкаталог закинуть исходники модуля;
3. создать файл dkms.conf, ниже пример содержимого для модуля e1000e версии 3.4.2.1 (реальные исходники находятся в подкаталоге /usr/src/e1000e-3.4.2.1/src):

MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=e1000e
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=e1000e
PACKAGE_VERSION=3.4.2.1
REMAKE_INITRD=yes
DEST_MODULE_LOCATION=/kernel
И после этого можно будет модуль установить командой:
sudo dkms install <module_name>/<module_version>
Для более подробной информации надо смотреть доку по DKSM.

Netzschlange
()
Ответ на: Собрать-то собрали... от Netzschlange

Ясненько, попробую..., спасибо за подсказку...

Да, не по теме..., но кто-нибудь вообще пользовался «ntuple», в частности на I350, или другой сетевой?

Uranus
() автор топика
Ответ на: Собрать-то собрали... от Netzschlange

Самый простой и при этом самый неправильный и кривой — заменить старый модуль новым. Т.е. скопировать его в каталог /lib/modules/4.15.0-46-generic/updates/drivers/net/ethernet/intel/igb/. И при этом скорее всего надо будет обновить initramfs.


Кстати инсталятор от Интел похоже так и действует, он компилирует файл в этот каталог, а потом предлагает сделать
update-initramfs -u

Как я понял вы не рекомендуете так делать?!

Uranus
() автор топика
Ответ на: комментарий от Uranus

При каждом обновлении ядра прийдётся пересобирать и переустанавливать модуль. За эти операции отвечает DKMS — автоматически пересобирает и устанавливает при обновлении ядра.

Netzschlange
()
Ответ на: комментарий от XMs

Во-первых, не надо тащить виндузовые привычки (брать дрова и софт с каких бы то ни было сайтов — вот это вот в первую очередь) в системы с репозиторием. Весь софт должен ставиться через пакетный менеджер.

Угу. Вы это расскажите куче производителей RTL* когда даже для одного rev и то может оказаться более одного драйвера.

ЗЫ Кстати igb тоже приходилось собирать отдельно, но было давно...конкретных причин уже не помню.

anc ★★★★★
()

Так, всем спасибо, вроде бы получилось, ну по крайней мере точно будет ясно при изменении ядра, а пока драйвер нормально установился.

Uranus
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.