Acabei de atualizar para o Ubuntu Vivid (15.04) hoje e, após reiniciar, tive um processo de inicialização muito longo. Meu laptop geralmente inicializa em 5 segundos ou menos e agora não terminava nem depois de alguns minutos.
Pressionar Escmostrou a seguinte tela:
A última linha diz "Um trabalho inicial está em execução para compatibilidade com /etc/rc.local (7 min 24s / sem limite)". Apesar da parte "sem limite", ele desistiu (ou foi concluído?) Após exatamente 10 minutos, e o processo de inicialização foi concluído.
Isso acontece em todas as inicializações.
Poderia estar relacionado à transição para o systemd? Como posso consertar isso? (Neste momento, penso duas vezes antes de desligar meu laptop). Devo relatar um bug? E se sim, onde?
Meu /etc/rc.local
arquivo:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
fstrim -v /
fstrim -v /home
exit 0
O arquivo é executável:
$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 333 aug 14 2013 /etc/rc.local
Adicionei as 2 fstrim
linhas há quase 2 anos, quando instalei um SSD, seguindo as instruções deProjeto de dicas fáceis para Linux.
Aparentemente, essa é a causa do meu problema (eu os removi e reiniciei - o problema desapareceu), mas ainda acho que o sistema não deveria travar assim por 10 minutos. Além disso, como posso executar fstrim
na inicialização agora?
Responder1
Se você colocar comandos de longa duração rc.local
, sua inicialização será atrasada. Você deve enviá-los para segundo plano:
( fstrim -v /; fstrim -v /home ) &
Dito isto, você provavelmente não precisa fazer isso sozinho. Ubuntu 14.10 adicionadoum trabalho semanal parafstrim
.
Responder2
Estranho que isso de repente seja um problema no Ubuntu 15.04, embora sempre tenha funcionado bem para você no Ubuntu 14.04....
Você também pode adicionar um parâmetro sleep antes do corte, para que os dois comandos de corte sejam executados após um determinado número de segundos. Isso deve permitir que o processo de inicialização seja concluído, fazendo com que os comandos trim sejam executados em segundo plano.
Assim (atraso de 40 segundos):
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sleep 40
fstrim /
fstrim /home
exit 0
A propósito, o parâmetro -v (detalhado) para trim não tem utilidade neste caso, porque está sendo executado em segundo plano. Eu mudei isso no meu tutorial do Easylinuxtips também.
Observação:Eu testei apenas esse parâmetro sleep em rc.local no Ubuntu 14.04 e no Linux Mint 17.x (para outra finalidade que não o trim), então não tenho certeza se isso funcionará de forma semelhante no Ubuntu 15.04.
Responder3
Eu tive o mesmo problema, basicamente isso acontece quando algo em rc.local não termina normalmente, como algum tipo de daemon. Para descobrir qual comando em rc.local é o culpado, basta usar um comando killall -9/from/etc.local e ele será reinicializado assim que todos os comandos de rc.local forem finalizados.