como os módulos de rede (kernel do Linux) são carregados sem modprobe.conf

2

como os módulos de rede (kernel do Linux) são carregados sem modprobe.conf Eu tenho a distribuição do fedora instalada e posso ver o módulo e1000e carregado automaticamente no sistema.

Existe uma configuração que especifica para carregar este módulo automaticamente ??

Eu já me referi ao modprobe.conf, MAS essa entrada não existe. para esse assunto, tenho grep'd diretório / etc / inteiro para verificar qualquer entrada para carregar este módulo, mas sem sucesso.

Por favor me avise 1. se algum arquivo de configuração menciona os módulos específicos carregados automaticamente durante o tempo de inicialização? 2. Se não houver arquivo de configuração, como os módulos são captados pelo sistema?

Obrigado!

    
por kumar 11.12.2013 / 11:22

3 respostas

2

Eles são carregados com base na detecção de hardware. No caso do seu módulo e1000e , o hardware da sua máquina, seja ela a bordo ou uma placa de plug-in, identificar-se-á com um par ID de fornecedor e ID de dispositivo PCI e esses serão comparados com os módulos disponíveis e qualquer módulo que identifique próprio com esse ID será carregado.

Você pode ver os IDs associados ao módulo e1000e executando modinfo e1000e , que informará algo assim:

filename:       /lib/modules/3.9.5-301.fc19.x86_64/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
version:        2.2.14-k
license:        GPL
description:    Intel(R) PRO/1000 Network Driver
author:         Intel Corporation, <[email protected]>
srcversion:     28B371A0E50A24E26204016
alias:          pci:v00008086d00001559sv*sd*bc*sc*i*
alias:          pci:v00008086d0000155Asv*sd*bc*sc*i*
alias:          pci:v00008086d0000153Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000153Asv*sd*bc*sc*i*
...

Somente com uma lista muito longa de alias linhas, cada uma identificando um dispositivo PCI específico que o módulo é capaz de suportar.

Conforme os dispositivos aparecem, o kernel do Linux os anunciará ao userspace usando uevents, e o daemon do udev irá combinar os IDs do dispositivo com o banco de dados do módulo e carregar os módulos corretos.

    
por 11.12.2013 / 12:02
0

Durante a inicialização de um initrd , um disco de RAM inicial é carregado, cujo conteúdo fica disponível para a segunda etapa de inicialização. Veja / boot.

Esse disco RAM normalmente contém um.o. módulos do kernel não compilados estaticamente no kernel e necessários para inicialização do sistema, ou seja, drivers modulares para sistema de arquivos, controladores RAID e rede.

man initrd tem uma explicação muito melhor.

    
por 11.12.2013 / 11:56
0

A primeira coisa que você precisa verificar é o seu arquivo de configuração do kernel, se o seu módulo está construindo em seu kernel, por exemplo, meu servidor redhat 5

grep -i e1000 /boot/config-$(uname -r) | grep -v ^#
CONFIG_E1000=m
CONFIG_E1000_NAPI=y
CONFIG_E1000E=m

quando você insere uma placa de rede e1000, o kernel chama o programa modprobe "kernel.modprobe = / sbin / modprobe" usando o modo de usuário do kernel api

Se o seu módulo estiver sendo construído, você pode usar o modprobe.conf para alterar os parâmetros do módulo com a diretiva options, a menos que o kernel carregue o módulo com os parâmetros defaults do módulo

    
por 11.12.2013 / 12:30