O Arch Linux /usr/lib/initcpio/busybox
pertence ao pacote mkinitcpio-busybox 1.27.2-1 e está configurado com poucos recursos , por exemplo, CONFIG_FEATURE_USE_INITTAB não está definido.
Em um initramfs personalizado, contendo essa caixa ocupada, consegui obter logins de rede ssh que fazem o /etc/profile
trabalho de origem. Também há um prompt de shell de cinzas visível no monitor VGA.
No entanto, esse shell "vga" não origina arquivos /etc/profile
. P: Diferença entre o Shell de login e o Shell sem login? me faz pensar que esse shell não é um shell de login. Esse shell é iniciado por /init
:
exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
Regressão:
exec setsid sh -c 'exec sh -i </dev/tty1 >/dev/tty1 2>&1'
exec setsid sh -c 'exec sh - </dev/tty1 >/dev/tty1 2>&1'
exec setsid sh -c 'exec -sh </dev/tty1 >/dev/tty1 2>&1'
Como fazer este busybox
ash
shell para fonte /etc/profile
e/ou torná-lo um shell de login (automático)?
Convencionalmente, um shell atua como um shell de login se for invocado com um nome de comando começando com
-
.exec -sh
funcionaria se você tivesse um executável chamado-sh
no caminho. BusyBox ash também oferece suporte à-l
opção, para que você possa executar arquivossh -l
.Quando você faz login, o
login
programa (ousshd
, ou o que quer que esteja manipulando o login) se encarrega de executar o shell do usuário com uma entrelinha-
no nome do comando (o nome do comando não precisa ser igual ao nome do executável, é apenas uma convenção muito comum quelogin
viola de propósito). Aqui, “o que quer que esteja lidando com o login” é o seu mini-script, então você deve cuidar disso.