Suspeito que algo em /root/.bashrc
(ou algo sendo source
'por esse arquivo) esteja fazendo com que o bash saia imediatamente, resultando na inicialização da máquina para o nível de execução padrão. Para mais detalhes sobre essa suspeita, veja o abaixo.
Quaisquer argumentos do kernel que não são reconhecidos pelo kernel são passados para o init. De acordo com o bootparam (7) :
Any remaining arguments that were not picked up by the kernel and were not interpreted as environment variables are then passed onto process one, which is usually the init(1) program. The most common argument that is passed to the init process is the word 'single' which instructs it to boot the computer in single user mode, and not launch all the usual daemons. Check the manual page for the version of init(1) installed on your system to see what arguments it accepts.
Como o RHEL 6 é executado, você provavelmente desejará inspecionar os arquivos de configuração iniciantes relacionados ao modo de usuário único:
- /etc/init/rc.conf
- /etc/init/rcS.conf
- /etc/init/rcS-sulogin.conf
- /etc/init/rcS-emergency.conf
No sistema Centos 6.5 que tenho localmente, /etc/init/rcS-sulogin.conf
tem as seguintes estrofes:
script
. /etc/sysconfig/init
plymouth --hide-splash || true
[ -z "$SINGLE" ] && SINGLE=/sbin/sushell
exec $SINGLE
end script
post-stop script
if [ "$RUNLEVEL" = "S" ]; then
[ -f /etc/inittab ] && runlevel=$(/bin/awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' /etc/inittab)
[ -z "$runlevel" ] && runlevel="3"
exec telinit $runlevel
fi
end script
O script post-stop
leva o sistema ao nível de execução padrão depois que o shell iniciado por sushell
foi finalizado. /sbin/sushell
é um script simples que inicia o valor de $ SUSHELL ou bash. Por padrão, o bash que é iniciado é um shell interativo, não-login, o que significa que ele lê ~/.bashrc
na inicialização.
Se este arquivo inadvertidamente terminasse o shell, o sistema continuaria a inicialização para o nível de execução padrão.
A palavra-chave de emergência provavelmente funciona porque invoca /sbin/sulogin
, que (de acordo com a página man) retorna para /bin/sh
se a tentativa de executar o shell do usuário root falhar.
Note que, para os mais terríveis desastres, você pode dizer ao kernel para inicializar um shell diretamente anexando init=/bin/sh
. Você será inicializado em um shell executando como root. Se você precisar fazer alterações no sistema de arquivos, também desejará alterar o argumento ro
boot para rw
para que seu dispositivo raiz seja montado para gravações ou remonte o dispositivo uma vez inicializado.