Execute o script não interativo no modo de usuário único

2

É possível executar um script de "inicialização" ao inicializar no modo de usuário único? Eu preciso ser capaz de inicializar no modo de usuário único, executar meu script e, em seguida, reinicializar no modo multiusuário sem nenhuma interação humana.

Eu fiz um monte de pesquisas e não consegui encontrar nada claro sobre o tópico, embora, é claro, eu pudesse substituir outra coisa que é executada com um wrapper que também lança meu script, mas prefiro faça isso de alguma maneira oficial. O ideal é que a solução funcione no FreeBSD 6 ou superior, mas estou disposto a aceitar apenas novas versões, se elas simplesmente não existirem nas rotações mais antigas.

EDIT: Em resposta aos comentários, eu estou realmente olhando para fazer duas coisas, os quais são provavelmente possíveis sem o modo de usuário único, mas é muito mais fácil controlar todas as variáveis no modo de usuário único, se isso é de todo uma possibilidade:

  1. Cresça o sistema de arquivos em uma instalação de vmware (usei com sucesso estas instruções manualmente.

  2. Zere o espaço livre em todos os sistemas de arquivos (nesse caso, preparar a VM para exportação). Novamente, eu realmente não preciso do modo de usuário único para isso, mas isso facilitaria as coisas.

Claro, esses não são realmente problemas de VM, mas coisas que eu gostaria de poder fazer em geral. O fato de esses sistemas estarem em VMware não é particularmente relevante, e eu não queria jogar as pessoas confundindo-as com o fato (algumas pessoas parecem ficar um pouco loucas quando a virtualização é mencionada, mas na maioria dos casos é não faz diferença).

EDIT2: Independentemente das minhas razões atuais, se alguém tiver alguma sugestão sobre como fazer isso (mesmo hacks se não houver maneiras oficiais), por favor poste-as como resposta.

    
por Jed Daniels 18.01.2011 / 03:00

1 resposta

2

O modo de usuário único do FreeBSD não roda nada além do que você digita para o 'shell' no prompt. Você poderia escrever algo que executasse o que você precisa no antigo bourne e tê-lo executado, mas ainda requer que você digite algo na CLI para executá-lo. Você poderia potencialmente hack / sbin / init e fornecer essa cadeia para autoexecutar no modo de usuário único.

/usr/src/sbin/init/init.c Começando na linha 629, a função single_user () é o que você quer modificar, especificamente o valor de 'shell' e a seção onde ele pede interativamente. / p>     

por 19.01.2011 / 21:19

Tags