Sim, é assim que você tradicionalmente diz ao sistema init regular em que estado inicializar. Se você está rodando o sysv-init (ou praticamente qualquer sistema init amplamente utilizado além do systemd), você pode colocar um número entre 1 e 5 no final dos argumentos do kernel e ele irá inicializar nesse nível (1 é sempre modo de usuário único, os outros são definidos pelo sistema, 3 ou 4 é o que a maioria das distribuições Linux usava convencionalmente como padrão). Se você estiver usando o systemd, poderá passar single
ou emergency
no final dos argumentos do kernel para inicializar nesses modos respectivamente.
Usar esse mecanismo para passar argumentos arbitrários, porém, é um pouco difícil, porque o kernel faz o mínimo absoluto de análise, o que significa, em particular, que:
- Argumentos com espaços em branco neles não podem ser passados, porque o kernel não analisa strings entre aspas (isto é,
'some string'
é analisado como dois argumentos'some
estring'
). - Você não pode referenciar nenhuma variável de ambiente, porque o kernel não faz a substituição de variáveis (o que normalmente é feito pelo shell em que você está executando o comando antes mesmo de iniciar o comando).
- Em geral, os argumentos devem ser interpretados corretamente sob o código de idioma POSIX C (essencialmente US ASCII), que lança a internacionalização pela janela, a menos que você queira usar algo como base64 ou punycode.
- Existe um limite máximo de quantos dados podem ser passados nos argumentos do kernel, mas esqueci o que é.
Essas limitações combinadas são o motivo pelo qual você não consegue encontrar nada no Google sobre esse tipo de coisa, nenhum engenheiro de integração de sistemas faz isso, porque é muito mais difícil contornar as limitações acima do que simplesmente escreva um script contendo todos os argumentos necessários e chame isso.