wyłącz moduł jądra, który jest skompilowany w jądrze (nie załadowany)

18

Mój serwer ma dwie wbudowane karty sieciowe 1 Gbit i dwie 10 Gbit.

Muszę całkowicie wyłączyć karty sieciowe 1-Gbit, aby ifconfig -aich nie wyświetlać.

Karty sieciowe używają różnych modułów jądra. Wykorzystanie 10 Gbit ixgbei wykorzystanie 1 Gbit igb.

01:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
Subsystem: Dell Ethernet 10G 4P X520/I350 rNDC
Kernel driver in use: ixgbe

05:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
Subsystem: Dell I350 Gigabit Network Connection
Kernel driver in use: igb 

Zarówno ixgbei igbzestawiane są statycznie w jądro (nie jako ładowalny moduł). Muszę wyłączyć moduł za pomocą parametrów rozruchowych jądra.

Próbowałem dołączyć następujące elementy do mojego jądra, ale nie ma to wpływu:

igb.blacklist=yes
igb.enable=0
igb.disable=yes

karty sieciowe igb nadal się wyświetlają

Jak mogę całkowicie wyłączyć IGB?

Martin Vegter
źródło

Odpowiedzi:

30

Powinieneś być w stanie umieścić na czarnej liście igb„moduł”, nawet gdy jest wbudowany, umieszczając na czarnej liście jego funkcję inicjalizacji: dodaj

initcall_blacklist=igb_init_module

do parametrów rozruchowych twojego jądra.

Zobacz Jak wyłączyć obsługę Designware I2C, gdy nie jest zbudowany jako moduł? dla informacji w tle. Ogólna zasada polega na tym, aby szukać modułu w kodzie źródłowym jądra i szukać funkcji, które mają __initatrybut - powinna istnieć tylko jedna łatwo identyfikowalna jako główna funkcja inicjująca (zwykle określana w module_initdeklaracji). Umieść na czarnej liście, a sterownik nie zostanie zainicjowany.

Stephen Kitt
źródło
4
Dla tych, dla których ma znaczenie, initcall_blacklistparametr pojawił się w Linuksie 3.16 .
Ruslan
1
jest <modulename>_init_modulekanoniczną nazwą każdego i wszystkiego, co można zbudować jako moduł?
Bananguin,
1
@Bananguin niestety nie, istnieje wiele nazwanych ..._init_modulelub ..._module_initnie wszystkie one są zgodne z tymi wzorami.
Stephen Kitt,