O que o kernel do Linux faz com parâmetros desconhecidos do kernel?

2

Supostamente eu passei ao kernel um parâmetro que ele não entende, por exemplo blabla ou eat=cake , o que o kernel faria com esses parâmetros desconhecidos, o caso tradicional estaria passando algum parâmetro desconhecido para init , no caso, se o kernel do Linux inicia com o espaço do usuário no início (initramfs) passaria isso para /init no initramfs?

    
por direprobs 25.08.2017 / 16:17

1 resposta

3

Na documentação do kernel :

The kernel parses parameters from the kernel command line up to --; if it doesn't recognize a parameter and it doesn't contain a ., the parameter gets passed to init: parameters with = go into init's environment, others are passed as command line arguments to init. Everything after -- is passed as an argument to init.

Isso também se aplica a /init em um initramfs. No código-fonte, tanto o /init do initramfs quanto o /sbin/init (ou outros locais) da raiz final são invocados via run_init_process que usa os mesmos argumentos (além do argumento 0, que é o caminho para o executável). Não consigo encontrá-lo declarado na documentação, mas as interfaces do kernel são estáveis, então isso não mudará.

Observe que isso não se aplica a /linuxrc em um initrd. Este é invocado sem argumentos, mas com o mesmo ambiente que /init e /sbin/init . Ele pode montar o sistema de arquivos proc e ler /proc/cmdline para ver os argumentos da linha de comando do kernel.

    
por 27.08.2017 / 03:10