::respawn:-/bin/sh
Usando BR2_ROOTFS_OVERLAY
, deixe o convidado /etc/inittab
conter:
::respawn:-/bin/sh
em vez da linha padrão de formulário:
console::respawn:/sbin/getty -L console 0 vt100
Você pode copiar o inittab
padrão de output/target/etc/inittab
após a criação.
Achei isso enquanto estudava o examples/inittab
no Busybox 1_28_3 e descobri isso , tentei e funcionou, então é a melhor solução que encontrei até agora.
Não esqueça o traço principal -
, ou as ações de controle de trabalho, como Ctrl + C, não funcionam como mencionado abaixo.
O traço principal -
é magicamente analisado pelo init da BusyBox: link e configura o TTY para o comando que segue.
O BusyBox também acrescenta -
ao início ou arg[0]
, que /bin/sh
interpreta como indicando um shell de login, o que faz com que ele crie alguns arquivos init, como /etc/profile
. Veja também: link
O seguinte é equivalente, pois console
é o valor padrão:
console::respawn:-/bin/sh
Para fazer login como outro usuário por padrão, você pode usar:
::respawn:-/bin/login -f user0
Aqui está uma configuração de amostra .
Resposta anterior: getty -l
Depois de quase dois anos, eu encontrei! : -)
Usando BR2_ROOTFS_OVERLAY
, substitua / crie os seguintes arquivos:
/ etc / inittab: comece pelo link e edite a linha do console a ser :
console::respawn:/sbin/getty -n -L -l /loginroot.sh console 0 vt100
/loginroot.sh:
#!/bin/sh
exec /bin/login root
/bin/login
é o executável padrão se -l
não for fornecido. O que fizemos para criar um executável que chama /bin/login
com o usuário root
já especificado.
Isso faz com que init
tente fazer login como o usuário root por padrão e, como a senha padrão está vazia ( BR2_TARGET_GENERIC_ROOT_PASSWD
), ele efetua login automaticamente.
Esta técnica basicamente reimplementa a opção -a <user>
presente no getty
do Ubuntu 14.04, que a implementação do BusyBox 'não possui.
Depois, para fazer o login como um usuário diferente, basta executar:
/bin/login
Aqui está uma configuração de amostra .
Resposta anterior: console::respawn:/bin/sh
Eu perguntei na lista de discussão e Thomas Petazzoni respondeu que:
/etc/inittab
deve conter:
console::respawn:/bin/sh
em vez de:
console::respawn:/sbin/getty -n -L console 0 vt100 # GENERIC_SERIAL
Com qemu_x86_defconfig
, o inittab
está sendo usado pelo sistema% init
do Busybox, devido a BR2_INIT_BUSYBOX=y
.
Este método tem um lado negativo: logo após o login, a mensagem mostra:
/bin/sh can't access tty; job control turned off
e como anunciado, coisas como Ctrl+C
não terão efeito.