Executando um script como opção de inicialização do Grub

1

Estou montando algumas coisas de DR para minhas caixas de Linux. Um item que seria realmente útil seria uma opção do GRUB que executaria um script para alterar minhas caixas de IPs estáticos para dinâmicos.

Eu sei que poderíamos fazer um modo de usuário único, executar um script, reinicializar, etc, mas seria extremamente simples para os outros administradores (principalmente com um plano de fundo do Windows) selecionar um item e concluir o processo automaticamente.

Eu juro que vi as configurações fornecidas para permitir que o Grub faça isso em um ponto ou outro, mas já faz um tempo. Não sei o que procurar no google.

EDITAR:

Estou ciente do método rc.local, mas não quero que isso seja executado em todas as inicializações. Eu quero que haja uma opção listada (item de linha no grub.conf, provavelmente) que permite que um script específico seja executado somente quando a opção de inicialização for selecionada.

    
por Tim Brigham 18.02.2013 / 19:04

1 resposta

2

O próprio Grub não pode fazer isso. Seus drivers do sistema de arquivos suportam apenas leitura.

Você pode criar uma entrada que carregue um kernel do Linux (e initrd ou initramfs, conforme apropriado) e execute um comando específico passando init=/path/to/script na linha de comando do kernel. Esse script faria toda a montagem necessária, solicitação do usuário, modificações de arquivos e, finalmente, reinicialização.

Você também pode criar entradas separadas que passam um argumento personalizado na linha de comando do kernel. Argumentos desconhecidos são ignorados, assumindo-se que ele pode ser usado por algum driver que talvez seja carregado como um módulo. Portanto, faça as entradas do Grub que passam um argumento de kernel local.network_interfaces=… e, em /etc/rc.local , procure o valor desse argumento ( </proc/cmdline tr ' ' '\n' | sed -n 's/^local.network_interfaces=//p' ).

    
por 19.02.2013 / 10:28