Como melhorar o tempo de boot do Linux Mint 19.1 Cinnamon

Galera, postei aqui em avançado porque acredito que isso não seja adequado para iniciantes. Mas, podem mover, caso esteja errado. Vamos lá:

Tenho um dell inspiron 14 3443. Este laptop tem 8GB de memória RAM DDR3L single channel (kinda sucks, right), i5 5200u, placa de vídeo nvidia GeForce 820m e HD de 1TB 5200rpm.

Atualmente, minha instalação do Linux Mint 19.1 Cinnamon com quase NADA instalado (nem chrome) - na real, só instalei um programa pra compartilhar mouse e teclado entre meu laptop e meu PC com Windows 10 por conta de comodidade. Além disso, só instalei os pacotes do Update Manager e o driver da nvidia - está demorando quase um minuto e meio desde o momento que aperto o botão, passando pela inserção da senha, até carregar o desktop. Se quiserem, podem descontar 4s considerando como tempo que eu digito a senha (que é tempo demais), ainda assim, ele demoraria cerca de um minuto e 20 segundos

Eu sei que não é uma configuração top e sei que o fato de ser uma máquina single channel e HD de 5200rpm dificulta ainda mais. Porém, é de longe uma configuração ruim e eu acredito que deveria estar com mais desempenho. Falando em desempenho, o firefox, por exemplo, inicia em quase 10s. É muito tempo.

Sei que são totalmente diferentes, mas o windows 10, na mesma máquina, liga e abre os programas consideravelmente mais rápido. Eu sei, eu sei… o Windows meio que não desliga, salva o estado no HD e atua como se estivesse em estado de hibernação. Eu sei de tudo isso, galera.

Gostaria de saber o que eu poderia fazer A NÃO SER UPGRADE DE HARDWARE para melhorar essa situação, porque eu não tenho dúvida de que o Linux pode fazer melhor do que isso, inclusive batendo o Windows 10. Quero aprender a usar Linux pra ver se realmente ele é melhor. Então estou disposto a fazer tudo que NÃO ENVOLVA GRANA. Não no momento (não tô podendo).

Quais informações precisam?

Bora me ajudar?

VALEEEEEEEEEEEEEEU!

Se a questão é tempo de boot, então precisamos de:

  1. Saída do comando systemd-analyse para o tempo de boot
  2. Saída do comando systemd-analyze blame para o tempo necessário em cada serviço

um pequeno equivoco na grafia.
systemd-analyze em vez de systemd-analyse blame.

:+1:

Ok, vamos lá. Fiz o que pediu e contei o boot no cronômetro também (just for the records).

O que eu medi no cronômetro foi:

0 - 3: some a logo da Dell (parece de boa);

3 - 12: aparece a splash do Mint;

12 - 53: para aparecer a tela de login;

53 - 78: mostra o desk (já descontado 4s da digitação da senha)

OBS.: Os tempos estão em segundos!

Agora, eis as saídas para:

systemd-analyze:

Startup finished in 5.340s (kernel) + 35.226s (userspace) = 40.566s
graphical.target reached after 28.893s in userspace

(Chega perto do que eu cronometrei.)

systemd-analyze blame

16.447s systemd-journal-flush.service
11.607s apt-daily-upgrade.service
10.872s dev-sda2.device
8.783s lvm2-monitor.service
7.521s keyboard-setup.service
7.274s systemd-tmpfiles-setup-dev.service
5.043s networkd-dispatcher.service
5.019s ubuntu-system-adjustments.service
4.303s NetworkManager.service
3.491s udisks2.service
3.349s gpu-manager.service
3.193s thermald.service
2.892s grub-common.service
2.270s systemd-tmpfiles-setup.service
2.269s ModemManager.service
2.075s accounts-daemon.service
1.462s systemd-resolved.service
1.288s apparmor.service
1.232s boot-efi.mount
1.199s apport.service
1.161s systemd-logind.service
1.160s lm-sensors.service
1.159s speech-dispatcher.service
1.156s bluetooth.service
1.153s hddtemp.service
1.152s avahi-daemon.service
1.143s alsa-restore.service
1.114s rsyslog.service
1.104s pppd-dns.service
1.062s systemd-sysctl.service
1.051s wpa_supplicant.service
880ms setvtrgb.service
862ms systemd-modules-load.service
859ms kmod-static-nodes.service
816ms systemd-fsck@dev-disk-by\x2duuid-975D\x2d3D58.service
714ms colord.service
559ms systemd-remount-fs.service
556ms sys-kernel-debug.mount
554ms dev-hugepages.mount
554ms dev-mqueue.mount
472ms polkit.service
360ms networking.service
351ms swapfile.swap
309ms systemd-journald.service
287ms blk-availability.service
278ms systemd-random-seed.service
188ms systemd-timesyncd.service
182ms upower.service
157ms systemd-update-utmp.service
136ms lightdm.service
135ms plymouth-quit-wait.service
110ms systemd-udev-trigger.service
104ms [email protected]
82ms systemd-udevd.service
42ms ufw.service
28ms rtkit-daemon.service
13ms plymouth-start.service
11ms plymouth-read-write.service
10ms systemd-rfkill.service
8ms kerneloops.service
7ms dns-clean.service
6ms ureadahead-stop.service
4ms systemd-update-utmp-runlevel.service
4ms console-setup.service
4ms systemd-user-sessions.service
4ms systemd-backlight@backlight:intel_backlight.service
3ms sys-kernel-config.mount
3ms systemd-backlight@leds:dell::kbd_backlight.service
2ms sys-fs-fuse-connections.mount
2ms nvidia-persistenced.service
1ms openvpn.service

Tá aí, galelvis. Valeu pela força desde já!

Agora sabemos os serviços que são iniciados junto com o sistema.

Para desabilitar um serviço, o que significa que ele não será iniciado junto com o sistema, tu deves usar o comando systemctl disable nome.do.serviço.
Quanto menos serviços iniciando junto com o sistema mais rápida é a inicialização, teoricamente, pois há menos coisas para carregar.
Mas, muito cuidado para não desabilitar um serviço de importância crítica.

Aqui entram algumas perguntas do tipo:

  • Tu usas sua placa bluetooth?
  • Tu usas placa de telefone (chip de celular no computador)?

Se a resposta for não, poderás ganhar algum tempo desabilitando os serviços relacionados, na verdade segundos, poucos. Percebo a maioria dos serviços listados como importantes, então provavelmente não há onde ganhar muitos segundos nesse nível, o nível do sistema de inicialização.

1 curtida

Parte II

Depois que ti digitas a senha, existe uma segunda fila de inicialização. Essa é lista de serviços que são inicializados junto com o seu ambiente, no caso o Cinnamon.

Existe no Cinnamon um local próprio para verificar o que é inicializado junto com o ambiente, já vi em vídeos do canal do @Dio . Mas, como não sou usuário do Cinnamon, não sei bem como acessar este local em específico.
Mas, nesse local poderás verificar se há algum programa que não gostarias que fosse inicializado junto com a interface, e facilmente poderás desabilitar a inicialização de qualquer componente.

Esse é o nível de interface. Até com nas interfaces mais mínimas é possível estabelecer que alguns programas sejam inicializados assim que ela for inicializada, e ela é inicializada assim que o usuário pressiona entrar depois de inserir corretamente o usuário e a senha no gerenciador de login.

1 curtida

Muito grato pelas respostas e explicações.

Mas ainda paira uma dúvida: como saber o que desativar de fato? Digo, como detectar que não precisaria de algo? No meu caso, por exemplo, não utilizaria o serviço de telefonia móvel, então é certeza de que posso desativar mas e o restante? Tentei olhar a man page de algumas das saídas para ler mais e não ha entrada.

Onde consigo ler sobre cada saída do systemd-analyze blame?

Novamente, muito obrigado!

Aí entra o fator experiência+pesquisa.
Para MUITAS coisas, uma fonte absolutamente interessante é a Arch Wiki.

Veja, essa parte de mudança na lista de inicialização não é um tópico de iniciantes (o iniciante vai, no máximo, reclamar do ou elogiar o tempo de boot “da distribuição”).

Cada serviço está ligado à alguma funcionalidade do sistema, então o conhecimento das funcionalidades está ligado ao seu poder de adicionar ou retirar um serviço da inicialização. E essas saídas do blame não estão necessariamente descritas no man, uma vez que não são programas, mas unidades no sistema de inicialização. Tente localizar qual é o programa relacionado à cada unidade antes, e vá pesquisando.

O serviço ligado à telefonia móvel, por exemplo, é o ModemManager (v. Mobile broadband modem - ArchWiki). Então, se for de teu interesse retirar esse serviço da lista de inicialização: systemctl disable ModemManager.service.