Existem três tipos de coisas que podem ser chamadas de parâmetros do kernel.
Os principais parâmetros do kernel são opções passadas na linha de comando do kernel. Eles só podem ser passados no momento da inicialização. Eles estão documentados em kernel-parameters.txt
(esse arquivo também lista os parâmetros do módulo; os parâmetros do núcleo do kernel são os aqueles sem .
). Alguns desses parâmetros só importam no momento da inicialização (por exemplo, root
). Para aqueles que são usados durante toda a vida útil do sistema, pode haver ou não um mecanismo para alterá-los em tempo de execução, não há regra geral.
Os parâmetros do módulo são como parâmetros do kernel, mas especificam um componente específico do kernel, geralmente um driver específico. Apesar do nome, esses parâmetros se aplicam se o driver correspondente é compilado diretamente no kernel ou como um módulo. Quando o componente está incluído na imagem principal do kernel, você precisa passar COMPONENT_NAME.PARAMETER_NAME=VALUE
na linha de comando do kernel. Quando o componente é carregado como um módulo, você precisa passar PARAMETER_NAME=VALUE
para insmod
.
Alguns parâmetros do módulo são visíveis através do sysfs . O diretório /sys/module/MODULE_NAME/parameters
contém um arquivo por parâmetro; ler esse arquivo lhe dá o valor atual do parâmetro. Escrevendo para esse arquivo define o parâmetro, se ele puder ser modificado; a maioria dos parâmetros não pode ser modificada (e, portanto, o arquivo é somente leitura). O diretório /sys/module/kernel/parameters
lista alguns dos principais parâmetros do kernel.
Os parâmetros do módulo são documentados ao acaso; alguns deles estão listados em kernel-parameters.txt
e o arquivo contém referências para alguns módulos. Se você não encontrar a documentação, pesquise a fonte . Os parâmetros do módulo são declarados pela macro module_param
ou um de seus companheiros module_param_named
, module_param_cb
, etc. O último parâmetro dessas macros determina a permissão do arquivo (por exemplo, 0600
ou S_IRUSR | S_IWUSR
seria rw-------
, ou seja, legível e gravável pelo usuário e inacessível por qualquer outra pessoa). Quando a permissão é 0, a entrada no sysfs não aparece de todo.
i8042.nomux
e i8042.reset
são parâmetros do driver i8042
. Olhando para o código-fonte, ambos têm a permissão 0, portanto, esses dois parâmetros não são modificáveis ou até mesmo consultáveis em tempo de execução.
Você pode definir os parâmetros somente quando o driver é iniciado. Se o driver for compilado como um módulo, o descarregamento e o carregamento do módulo permitirá que você forneça parâmetros diferentes ao recarregá-lo. Se o driver está diretamente no kernel ou se a configuração do seu sistema torna efetivamente impossível descarregar o módulo, você precisa reinicializar.
Por fim, outro tipo de parâmetro no kernel é sysctl . Essas configurações podem ser visualizadas e alteradas com o sysctl
command ou via /proc/sys
. Eu acho que a separação entre os parâmetros sysctl e kernel é principalmente histórica; configurações relacionadas a hardware são tradicionalmente parâmetros do kernel, enquanto as configurações de software são tradicionalmente sysctl, mas a distinção pode ser confusa às vezes.