Como carrego um módulo do kernel mais tarde na seqüência de inicialização?

0

Eu tenho experimentado com o módulo do kernel g_mass_storage. Primeiro tentei carregá-lo colocando-o em / etc / modules e as opções em /etc/modprobe.d/file.conf

Isso funcionou, mas quando conectei o dispositivo a um computador, o armazenamento em massa de arquivos era somente de leitura - não o que eu procurava.

Eu argumentei que isso acontecia porque, quando o módulo é carregado, o sistema de arquivos raiz é montado como somente leitura - não como leitura-gravação.

Isso é um problema, porque o driver do kernel tenta obter um identificador de arquivo de leitura-gravação para seu armazenamento de backup e, se ele não conseguir negociar esse manipulador de rw, ele volta a ser somente leitura.

A única solução em que consigo pensar é mover o carregamento do módulo do kernel mais tarde na sequência de inicialização.

Mudei a inicialização do módulo para /etc/rc.local usando o modprobe, e isso funcionou com os recursos de leitura & escrevendo - mas parece um truque para carregar o módulo lá.

Existe um local recomendado para carregar módulos do kernel que precisam de acesso rw a um arquivo?

    
por Tom H 17.01.2016 / 14:51

1 resposta

0

Uma solução [provavelmente não perfeita] para isso foi ligar-se ao serviço systemd "systemd-remount-fs.service", que é a remontagem do sistema de arquivos para leitura-gravação.

Isso significa que o módulo será carregado o mais cedo possível, enquanto ainda estiver sendo carregado após o sistema de arquivos tornar-se readwrite.

Meu exemplo de arquivo de configuração systemd é o seguinte:

[Unit]
Description=Starts kernel modules for USB OTG
After=systemd-remount-fs.service
DefaultDependencies=false

[Service]
Type=simple
ExecStart=/home/pi/programs/startmod.sh
WorkingDirectory=/home/pi/programs/

[Install]
WantedBy=local-fs.target

Isso funciona, se bem que um pouco.

    
por 05.02.2016 / 05:12