Como posso configurar o kernel do Linux para ignorar parâmetros passados?

0

Eu tenho os parâmetros do kernel para o nosso dispositivo embarcado definido durante o tempo de compilação do kernel, mas eles podem ser substituídos passando outros parâmetros do gerenciador de inicialização.

Existe uma maneira de construir um kernel que irá ignorar os parâmetros que são passados para ele?

Minha justificativa para querer isso é dupla:

Primeiro, seria bom isolar as coisas do kernel no "pacote" do kernel para facilitar a distribuição das atualizações. Atualmente, não usamos um initramfs, mas suponho que, se incorporado ao kernel, poderia ser um ponto para filtrar facilmente parâmetros de entrada.

Em segundo lugar, outra camada na nossa estratégia de segurança. Seria um speedbump um tanto não trivial para fazer um patch binário no kernel existente ou construir um novo que iria inicializar com sucesso uma placa customizada; com uma corrente de inicialização segura, seria quase impossível.

    
por joshperry 20.09.2016 / 01:57

1 resposta

0

Eu não acho que haja essa configuração porque não faz sentido. Se você não quiser passar parâmetros para o seu kernel, bloqueie o seu gerenciador de inicialização para que os parâmetros de linha de comando que ele passa não possam ser alterados.

O gerenciador de partida decide qual kernel ele carrega, portanto, a prevenção de alterações de parâmetro no kernel não adicionaria nenhuma segurança. Construir um kernel que inicializa em alguma máquina não é um speedbump.

Se você tem uma cadeia de inicialização segura, o kernel não pode ser substituído, mas é claro que proteger a cadeia de inicialização inclui a proteção dos parâmetros do kernel. Essa é uma propriedade de segurança do bootloader, não uma propriedade de segurança do kernel.

Você não pode configurar os parâmetros do kernel a partir do initramfs (exceto para os parâmetros que podem ser configurados no tempo de execução após o kernel ter inicializado, é claro). É tarde demais. Se você precisa definir alguns parâmetros do kernel, você precisa fazer isso no bootloader - e esse é o seu trabalho. Não haveria nenhuma vantagem em termos de empacotamento: se você estiver empacotando o gerenciador de inicialização separadamente e não quiser ajustar alguns parâmetros do carregador de inicialização, você só precisará definir os valores padrão corretos no binário do kernel, não precisa impedir que o kernel aceite substituições em sua linha de comando.

    
por 20.09.2016 / 02:57