Como o linux carrega o firmeware para módulos de drivers internos [duplicados]

7

Eu aprendi que o subsistema de firmware usa o udevd para copiar um firmware para a entrada sysfs 'data' criada.

Mas como isso funciona no caso de um módulo de driver interno em que o udevd ainda não foi iniciado?

Estou usando um kernel 3.14.

TIA!

    
por steffenp 12.02.2016 / 08:49

2 respostas

1

Eu li os fontes do kernel, especialmente drivers/base/firmware_class.c , e descobri que

CONFIG_FW_LOADER_USER_HELPER 

ativaria a variante de carregamento do firmware udev (obviamente, apenas utilizável para módulos carregáveis quando o udev está em execução). Mas, como mencionado em LKML , este parece ser um método obsoleto.

Além disso, o firmware exigido pelos módulos internos é carregado de initramfs por fw_get_filesystem_firmware() até kernel_read() , para ser preciso.

    
por 22.02.2016 / 09:56
0

É possível criar imagens de firmware no próprio kernel usando as opções de configuração do kernel CONFIG_FIRMWARE_IN_KERNEL , CONFIG_EXTRA_FIRMWARE_DIR e CONFIG_EXTRA_FIRMWARE . Isso pode ser útil para casos em que você não pode ou não deseja fornecer o firmware do userspace em tempo de execução (por exemplo, quando o firmware em questão é necessário para acessar o dispositivo de inicialização e não deseja usar um initrd ).

Aqui está uma explicação mais detalhada das opções disponíveis para o carregamento de firmware: link

    
por 14.09.2016 / 11:16