Como iniciar um script interativo na inicialização do ubuntu?

4

Baseado no núcleo do Ubuntu 12.04, eu preparei um DVD inicializável. Após a inicialização (somente para console), posso fazer o login como usuário e iniciar um script para a instalação de um dispositivo incorporado:

sudo install_script

Para executar este script já na inicialização, adicionei o seguinte a /etc/rc.local na imagem do sistema de arquivos raiz no DVD:

/bin/bash -ic install_script

Como esse script é executado incondicionalmente, eu gostaria de dar ao usuário alguma oportunidade de ignorar a instalação e entrar em um prompt de login. Para esse fim, gostaria de usar read no install_script. Infelizmente, o script não reage à entrada do teclado quando executado a partir de /etc/rc.local . (Não há problema com o mesmo script iniciado a partir de um shell após o login).

Como posso obter alguma entrada do usuário na inicialização?

(alguns pensamentos:

  • Talvez, eu possa de alguma forma detectar e conectar um tty a read ou ao script? Eu tentei /bin/bash -ic install_script </dev/console sem sucesso.
  • Talvez haja opções mais adequadas para /bin/bash ou para read
  • Talvez eu pudesse inicializar em um único shell de um determinado usuário (talvez root , sem fazer login?) com .bashrc chamando sudo install_script (evitando a verificação de senha para o sudo?)?
  • Talvez exista um lugar melhor para chamar o script?
  • Eu não gostaria de separar a interação (para ocorrer antes) e o install_script (por exemplo, fornecendo diferentes opções de inicialização via isolinux e examinando /proc/cmdline no script) pelo seguinte motivo: Antes de perguntar ao usuário, eu ' d gostaria de examinar o sistema e dar uma visão geral do que exatamente aconteceria durante a instalação. Nos estágios iniciais do processo de inicialização, as informações necessárias para o exame do sistema podem ainda não estar facilmente disponíveis.

    
por Carsten Scholtes 19.04.2013 / 14:00

3 respostas

4

Na minha solução atual, estou usando openvt para iniciar install_script adicionando a seguinte linha a \etc\rc.local :

openvt -s -w /path/to/install_script
  • Ele abre um novo terminal virtual (além dos outros sete disponíveis no Ubuntu Core 12.04 via Alt-F[1-7] ).
  • O comutador -s diz a openvt para alternar para o novo terminal virtual (sem pressionar Alt-F8 ).
  • O Interruptor -w deixa openvt aguardar a conclusão do comando /path/to/install_script dado a openvt .
  • Iniciado desta forma, o script pode receber informações do usuário normalmente chamando read .
  • Após a conclusão do script, o terminal virtual é fechado (não é mais necessário alternar para ele usando Alt-F8) e o controle é retornado ao terminal virtual que estava ativo antes.
por 28.04.2013 / 21:10
0

Eu tive o mesmo problema ao trabalhar em uma distro personalizada para o rasp pi. Descobri que adicionar o código a seguir ao meu script garantiria que meu script recebesse entrada.

Eu apenas chamo este código antes de começar a ler a entrada:

exec < /dev/tty1
    
por 10.09.2013 / 20:29
-1

apenas tente imitar o método de instalação do Slackware linux.

    
por 19.04.2013 / 14:16