[FUG-BR] Duvidas quanto ao kernel, device.hints e loader.conf

Luiz Otavio O Souza lists.br em gmail.com
Segunda Abril 4 07:43:05 BRT 2011


On Apr 3, 2011, at 10:10 PM, ricardomoscou em yahoo.com.br wrote:
> Boa noite pessoal,
> 
> Estou com uma duvida quanto ao processo de descoberta de hardware no momento em que o kernel eh carregado para a memoria.
> Duvidas:
> 1) Digamos que o kernel que esta sendo carregado para a memoria eh o GENERIC. Ele vai iniciar a descoberta de dispositivos (device.probing). Caso o meu kernel generico nao esteja possua suporte para uma determinada placa de rede, ele simplesmente nao vai mostrar a placa ou mesmo nao suportando a placa ele mostraria a placa (na saida do comando dmesg) embora nao ligaria nenhum device pra mesma assim como tambem nao carregaria o mudulo de controle pra mesma?
> Queria saber se a palavra nao suportar significa que ele nem mesmo mostra o dispositivo na saida do dmesg ou ao menos mostra mas nao carrega o seu drive (jah que ele nao suporta).
> 
> 2) Sei que posso passar valores de variaveis (device.hints) com o comando set.Sei tambem que posso devinir esses valores no "/boot/device.hints".Mas me perco quando falam que o "/boot/loader.conf" pode ser usado para definir variaveis.
> Qual seria entao a grande diferenca entre os dois jah que eu posso definir variaveis nos dois arquivos?


1) Depende de onde sua placa esta conectada. Existem vários tipos de bus para conexão de dispositivos, sendo que alguns fazem a auto numeração dos dispositivos no bus (PCI, PCIe, USB, ISA com PnP) enquanto em outros casos isso não é possível (geralmente dispositivos embarcados).

Nesses casos (de bus auto numerado) você consegue listar os dispositivos no bus independente do kernel ter ou não um driver para o dispositivo (pciconf -lv, usbconfig [dump_device_desc|dump_info|show_ifdrv]).

Quando um dispositivo esta em um bus sem auto numeração, a única forma do kernel saber que o dispositivo esta lá, no bus X, na irq Y e utilizando MMIO no endereço Z é através do arquivo de hints (ou mais recentemente através de FDT - somente disponível na plataforma ARM).

2) O arquivo de hints esta ligado ao kernel somente (como o próprio nome diz: device.hints) e não pode ser utilizado para setar o valor de 'sysctls'.

A confusão vem do uso do bootloader do FreeBSD (/boot/loader), que fornece a interface para que você configure tanto device hints quanto variáveis de sistema (sysctls e parametros/argumentos para o kernel).

Toda configuração feita em /boot/loader.conf é carregada pelo bootloader no momento do boot, que 'prepara o terreno'  e carrega o kernel na memória (também é possível aproveitar e carregar módulos do kernel através do loader).

Então o correto é fazer as configurações no /boot/loader.conf (e deixar o device.hints apenas para configuração de dispositivos que realmente não funcionam de outra forma).

Att.,
Luiz




Mais detalhes sobre a lista de discussão freebsd