Entendendo a relação entre o arquivo de configuração do kernel do FreeBSD e o dispositivo atual

3

No meu entender, o kernel do FreeBSD é configurado através de arquivos de texto. Cada entrada de configuração do kernel está em uma única linha. Muitas entradas também têm comentários com uma marca de hash. O conf genérico. O arquivo pode ser encontrado em / usr / src / sys / < 'arch' > / conf / GENERIC. Que você copiaria e alteraria como seu kernel personalizado.

Exemplo:

    device      ehci            # EHCI PCI->USB interface (USB 2.0)

Mas como isso ocorre em relação a um dispositivo real? Digamos que eu conecte uma unidade flash USB, o dispositivo USB executa um handshake, algum tipo de identificação? Além disso, se o driver não for um driver de núcleo, mas um módulo de kernel carregável, o kernel procurará o driver solicitado?

Como uma questão secundária. O comando KERNCONF = '' simplesmente diz ao make (1) o nome do kernel?

    
por Joseph 30.07.2015 / 06:57

2 respostas

0

O nome do kernel é definido pela linha ident no arquivo conf do kernel. A variável KERNCONF define qual arquivo do kernelconf para usar.

A seção "Device Probe and Attach" no manual de arquitetura do FreeBSD descreve como um dispositivo usb é detectado: link

    
por 31.07.2015 / 12:08
0

O arquivo de texto apenas define o que está embutido no kernel; coisas que você não coloca lá geralmente acabam sendo compiladas como módulos carregáveis do kernel.

E sim, durante a inicialização - ou após o kldloading de um módulo do kernel - a rotina "probe" do driver é executada; essa rotina é responsável por descobrir se há algum hardware suportado pelo driver. Se estiver, a função do driver "attach" será executada; esse realmente anexa a instância do driver a um dispositivo. O FreeBSD geralmente não tenta carregar automaticamente os módulos do kernel, então se o driver não estiver embutido no kernel, você deve carregá-lo manualmente (kldload), ou usar script rc para carregá-los (usando kld_list rc variable), ou usar bootloader para pré-carregá-los (editando /boot/loader.conf).

    
por 10.10.2015 / 23:06