Os parâmetros transmitidos na linha de comando do kernel não precisam ser significativos para o kernel: a documentação dos parâmetros do kernel diz
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 não se aplica a init
e root
, que são realmente parâmetros do kernel e são manipulados pelo kernel. Eles também podem ser manipulados pelo espaço do usuário, uma vez que aparecem em /proc/cmdline
. (Assim, por exemplo, o systemd considera o parâmetro quiet
do kernel para reduzir sua saída.)
Quando o kernel é inicializado com um initramfs, os parâmetros init
e root
não são usados pelo kernel diretamente; no que diz respeito ao kernel, eles são fallbacks caso o initramfs não funcione (mas eles ainda são parâmetros do kernel). O initramfs em si é o sistema de arquivos raiz (pelo menos para inicialização), e o kernel procura por um executável init
no diretório raiz do initramfs e executa isso. Se alguma coisa falhar (o initramfs não é utilizável, ou não contém /init
, ou o último não é executável), o kernel tentará montar o dispositivo especificado por seu parâmetro root
e executar /sbin/init
ou o executável especificado pelo parâmetro init
.