Aqui está um Blog de "George Georgovassilis" que tem mais algumas dicas sobre como ler o gráfico de inicialização e como acelerar as coisas ...
Medindo o progresso
O Bootchart é um pacote interessante que protocolos meticulosamente o processo de inicialização inteiro e cria gráficos gráficos dos tempos e onde eles são gastos. Então, o primeiro passo é obter o bootchart:
sudo apt-get install bootchart
Após a reinicialização, você pode obter o gráfico acima em /var/log/bootchart
. Uma palavra de cautela: o primeiro gráfico é não representativo, já que o ureadahead está no modo de criação de perfil e retarda as coisas. Depois de outra reinicialização, o gráfico ficaria muito melhor. E é assim que parece:
O gráfico mostra três etapas: o gerenciador do X-Window inicia aos 19 segundos após a inicialização, o Gnome a 41segundos e a área de trabalho é visível em 59 segundos, o que considerarei também todo o tempo da inicialização. Essa é a hora de vencer.
Paralelização do Ureadahead
O Ureadahead demora cerca de 10 segundos para concluir o preenchimento do cache. Durante esse período, nada mais é carregado. Isso faz sentido para um disco rígido rotacional regular, já que os movimentos freqüentes da cabeça, induzidos por processos que iniciam em paralelo, retardariam as coisas. Mas como esta instalação está sendo inicializada a partir de um cartão SD, pode valer a pena explorar uma maneira de executar o ureadahead em paralelo. Minha primeira sugestão foi colocar o ureadahead em um script e lançá-lo em segundo plano:
/etc/init.d/bootopts
#!/bin/sh
(/sbin/ureadahead --daemon)&
e altere /etc/init/ureadahead.conf
para chamar este script em vez de /sbin/ureadahead
A reinicialização é 3 segundos mais rápida, obtida entre a inicialização do X e a inicialização do Gnome. Lamentavelmente, o novo gráfico mostra que o ureadahead ainda está sendo executado seqüencialmente, atrasando tudo depois dele. Algumas investigações mostram que o agendador de I / O acha que o cartão SD é um dispositivo rotacional, então estou alterando o script bootopts para corrigir isso adicionando:
echo 0 > /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/host6/target6:0:0/6:0:0:0/block/sdb/queue/rotational
Observe que o cartão SD é /dev/sdb
Após a reinicialização, o gráfico se parece com isto:
Muito melhor, o ureadahead funciona agora em paralelo. Infelizmente, o processo de inicialização ficou 1 segundo mais lento, atrasando principalmente o X e o Gnome. Mas eu sinto que estou em algo, então não vamos desistir.
Ajustando o flashcard readahead
Alguns bechmarks com um simples hdparm -t -T no cartão de memória flash mostram que um tempo de leitura sequencial com 14 MB / seg, portanto, 2 MB / seg é inferior à sua classificação nominal. O motivo parece ser uma configuração de leitura antecipada de 256, reduzindo-a para 128 e obtendo o máximo de 16 MB / s. Assim, outra adição ao meu script bootot:
hdparm -a128 /dev/sdb
Corrigindo o agendador de E / S
Outra reinicialização depois, estou de volta aos 56 segundos. Eu suspeito que o agendador de I / O dá ureadahead a mesma prioridade que a outros processos, o que realmente não deveria, por isso deve ser escondido por trás de um ionice, assim eu modifico bootot:
(/usr/bin/ionice -c 3 /sbin/ureadahead --daemon)&
Isso melhora o tempo de inicialização por mais 2 segundos. O gráfico revela que o cartão flash ainda não é utilizado totalmente, então eu sigo estas instruções para desabilitar o registro no diário na partição de inicialização e também desabilito o plymouthd que é a tela de inicialização animada. E isso faz o truque, o tempo agora é de 45 segundos:
[atualização 2011.05.22] Também fiz uma experiência na direção oposta, a saber, iniciar ionice com -c 1 que corresponde a E / S em tempo real que reduziu o tempo de inicialização em outro segundo. Embora, a princípio, isso pareça ser contra-intuitivo, já que menos processos podem rodar em paralelo, a um segundo olhar faz sentido, porque a E / S paralela apresenta alguma sobrecarga.
Adiando serviços
Agora vamos adiar serviços não necessários para o processo de inicialização após o login. Meus candidatos:
mysqld
nmbd
smbd
cupsd
modem-manager
bluetoothd
alsa-store [update 2011.05.22]
alsa-restore [update 2011.05.22]
pulseaudio [update 2011.05.22]
rsync [update 2011.05.22]
apparmor - I apt-get removed that one [update 2011.05.22]
plymouthd [update 2011.05.22] I deleted the /etc/init/plymouthd*.conf files - arguably this will affect logging and the ability of services to interact with the user in case something goes wrong. Use at your own risk
ufw (firewall, there is a small security risk when setting up later) [update 2011.05.22]
acpi-support
Todos eles têm trabalhos iniciantes e podem ser adiados alterando o evento inicial nos respectivos arquivos /etc/init/xyz.conf
para algo como "coisas que podem esperar".
apport [update 2011.07.07]
Um novo script em /etc/init.d/stuff-that-can-wait
pode então executar esses scripts. O meu parece assim:
#!/bin/sh
/etc/init.d/mysql
/etc/init.d/samba
/etc/init.d/acpi-support
E, claro, não esquecer:
chmod a+x /etc/init.d/stuff-that-can-wait
Eu o adicionei como um script iniciante, mas é provavelmente mais fácil adicioná-lo como um script de inicialização para a sessão do gnome ("Startup Applications")
Em seguida, removi serviços semelhantes de /etc/rcX.d
com este comando:
update-rc.d -f servicename remove
e configurá-los como scripts upstart ( stuff-that-can-wait
)
Executando scripts init em paralelo
Nice post aqui [atualização 2011.05.22]
A essência é modificar /etc/init.d/rc
para
CONCURRENCY=shell
Testando as ferramentas do modo laptop [atualização 2011.05.22]
Há mais a ser feito: perto do final da seqüência de inicialização, o bootchart mostra uma longa espera (12 segundos) localizada em /usr/lib/pm-utils/power.d/journal-commit. Estou modificando esse arquivo como tal:
#!/bin/sh
exit0
(Eu provavelmente poderia ter deletado)
Este não apenas reduziu em 10 segundos o bootchart, mas também o Unity Desktop ficou visivelmente mais rápido.
Há também pulseaudio
começando muito antes do que deveria (consulte Adiando serviços)
Módulos de lista negra [atualização 2011.07.07]
Esta etapa elimina os módulos desnecessários (para minha configuração). Edite /etc/modprobe.d/blacklist.conf e anexe as linhas
blacklist rt2800pci
blacklist rt2x00pci
blacklist parport_pc
blacklist vboxnetado
blacklist vboxnetflt
blacklist bvoxdrv
blacklist joydev
blacklist lp
blacklist hp_accel
e comente o lp module
em /etc/modules
O que nos deixa com 28 segundos de inicialização:
copiado e editado aqui & amp; rightarrow; link
Espero que isso ajude ... Boa sorte!