Estou executando um servidor Debian Squeeze AMD64. O runlevel de destino após a inicialização é o runlevel 2, que inclui rsyslogd, cron, sshd e algumas outras coisas, mas não dovecot, postfix, apache2, etc. O sistema falha ao atingir o runlevel 2 com vários sintomas:
- O sistema trava ao tentar iniciar o rsyslogd
- A inicialização no nível de execução 1 funciona e, em seguida, o login do console funciona
- Iniciando o rsyslogd no nível de execução 1 via /etc/init.d/rsyslog trava
- Iniciando o nível de execução 2 com o rsyslogd desativado funciona
- Mas, em seguida, o login via console falha: eu recebo o motd e, em seguida, nada
- Iniciando o sshd do nível de execução 1 é bem-sucedido
- Mas não consigo fazer login via ssh. Às vezes, a senha do login ssh me dá o motd e, em seguida, nada, às vezes nem isso. Tentar oferecer uma chave pública parece incomodar bastante o sshd para não falar mais comigo.
- Ao reinicializar a partir do nível de execução 1, o servidor trava ao tentar parar o apache2 (que não está em execução, portanto, isso deve ser realmente trivial). Tentar parar o apache2 quando logado no runleve 1 também é travado.
E isso é apenas o que falha o tempo todo. RAM foi testado, o dmesg não mostra problemas. Eu não tenho ideia.
Update : saída (abreviada) do rsyslogd -c4 -d chamada no runlevel 1
rsyslogd 4.6.4 startup, compatibility mode 4, module path ''
caller requested object 'net', not found (iRet -3003)
Requested to load module 'lmnet'
loading module '/user/lib/rsyslog/lmnet.so'
module of type 2 being loaded
conf.c requested ref for 'lmnet', refcount 1
rsylog runtime initialized, version 4.6.4, current users 1
syslogd.c requested ref for 'lmnet', refcount now 2
Eu posso matar o rsyslogd com Strg + C, então. O / var / log não mostra nenhum dos arquivos de log configurados.
Update2 : Graças a @DerfK ainda não tenho ideia, mas pelo menos reduzi o problema. Agora estou testando com /etc/init.d/apache2 stop
(sem um apache2 em execução, é claro), que trava também e parece uma falha ainda mais óbvia.
Após alguns testes, descobri que um arquivo com uma única linha:
/usr/sbin/apache2ctl configtest > /dev/null 2>&1
trava, enquanto a mesma linha executada em um shell interativo funciona. Eu não fui capaz de reduzir ainda mais esta linha enquanto, i. e. cada parte, os redirecionamentos de fluxo e o próprio comando são necessários para reproduzir o jeito. @DerfK também me apontou para strace
, que deu uma dica superficial sobre que tipo de jeito temos aqui:
-
wait4(-1
para os scripts de inicialização
-
futex(0xsomepointer, FUTEX_WAIT_PRIVATE, 2, NULL
para rsyslogd
/ apache2
binários chamados pelos scripts de inicialização
O sistema foi instalado como um Debian Lenny pelo meu hoster no outono de 2011, eu o atualizei para o Squeeze imediatamente e o mantive atualizado com o Squeeze, que costumava ser testado. Não houve grandes mudanças, no entanto. Eu acho que nunca tentei reiniciar o sistema antes.
Update3 : encontrei o problema. Meu /etc/nsswitch.conf especificou o ldap como backup de pesquisa de hosts, que não está disponível no momento da inicialização. Confiar em DNS só corrige meus problemas de inicialização.