Boot no Linux: como aumentar a velocidade de inicialização do sistema operacional

por | 22/07/2022 | Configuração

Quando você liga seu PC, uma série de coisas acontece. Você pode visualizar várias informações, logos do fabricante, tela do GRUB, etc. O boot no Linux, dependendo do caso, pode inclusive demorar muito (assim como em outros S.Os.).

Geralmente, assim que você instala o sistema operacional, o Linux inicia de forma mais veloz. Com o tempo, porém, conforme mais programas vão sendo instalados, uma certa lentidão pode ocorrer.

Conforme você instala mais aplicativos, mais serviços vão sendo carregados durante o boot. Mais lenta a inicialização do sistema se torna. Mais tempo leva para a tela de login aparecer.

Nesse sentido, é essencial que você descubra quanto tempo leva, no total, para que seu sistema operacional inicialize. Com estes dados em mãos, é muito fácil tomar as medidas necessárias para corrigir o “problema”.

Além disso, é importante que você saiba que os procedimentos abaixo foram realizados em uma distro baseada no Ubuntu. Porém, como eles envolvem o uso do sistema init systemd, o qual é usado na maior parte das distros modernas, muito provavelmente podem ser executados em outras distros.

Como descobrir (e acelerar) o tempo de boot no Linux

Em primeiro lugar, antes de tomar quaisquer medidas para aumentar a velocidade de boot do sistema operacional, você deve descobrir quanto tempo este processo demora no seu computador.

E aqui, mais uma vez, vamos utilizar o systemd. Além disso, não deixe de dar uma conferida no artigo abaixo, para descobrir mais detalhes sobre este sistema:

Boot no Linux - Sistema operacional

Agora, antes de mais nada, vamos descobrir quanto tempo leva para nosso sistema iniciar. Gostaria de ressaltar que preparei um sistema especialmente para trabalhar neste guia.

Ou seja, junto com você, vou identificar onde está o “problema” e também corrigi-lo. Tenha cuidado, porém: não saia parando e/ou desativando serviços de qualquer modo, para evitar problemas maiores.

E para ainda mais segurança, crie um ponto de restauração no Linux, através do Timeshift.

Identificando os culpados

Bem, para descobrir o tempo de boot no Linux, digite o comando abaixo no seu terminal:

systemd-analyze

Logo a seguir, observe a saída. Você deverá visualizar uma tela semelhante à abaixo:

Boot no Linux - systemd-analyze

Cada um destes itens quer dizer algo muito importante. Confira alguns detalhes:

  • Tempo gasto pelo kernel: 6.258 segundos;
  • Tempo gasto pelo espaço do usuário: 1 min. e 24.729 segundos;

Ou seja, resumindo, o tempo total de inicialização foi em torno de um minuto e meio. Agora, vamos detalhar um pouco mais as coisas. Vamos encontrar os “culpados”. No terminal, execute o seguinte comando:

systemd-analyze blame

Agora você irá visualizar uma lista (talvez longa) de unidades do systemd:

Boot no Linux - systemd-analyze

Dessa forma, podemos facilmente identificar os serviços responsáveis pela demora na inicialização. Observe que só o Docker leva mais de 21 segundos, enquanto o Network Manager leva em torno de 13 segundos.

Só aqui, em teoria, já temos cerca de 30 segundos que podem ser economizados durante o boot. Portanto, vamos continuar.

Agora, execute o comando abaixo, para descobrir o momento em que os serviços foram iniciados durante o boot, bem como quanto tempo este processo levou:

systemd-analyze critical-chain

Agora, observe o resultado:

Boot no Linux - systemd-analyze

Neste caso, o Docker foi inicializado após mais de 1 minuto. O serviço levou, além disso, algo em torno de 21 segundos para ser iniciado. Percebeu um dos “problemas”, aqui?

Outro grande “vilão” (pelo menos na minha configuração atual – e possivelmente na sua também) é o Network Manager. Mais precisamente, o serviço “NetworkManager-wait-online.service” (veja na imagem acima).

Este serviço é responsável por ativar a rede. O Network Manager também está relacionado com a sua conexão com a internet, e infelizmente retarda o boot no Linux. Isto até o sistema estabelecer uma conexão, é claro.

Eliminando alguns culpados e reduzindo o tempo de boot no Linux

Agora, vamos começar a trabalhar em prol do aumento da velocidade do boot no Linux. Antes de qualquer coisa, vamos desativar o Docker e o “NetworkManager-wait-online.service”, para que eles não inicializem mais durante o boot.

E não, você não leu errado: vamos desativar o Network Manager também, pois não é necessário que ele inicialize tão cedo. Ao fazer isto, obviamente, você não terá acesso à internet antes do login.

Mas não se preocupe, a rede (e a internet, é claro) começará a funcionar alguns segundos após o login. E em relação ao Docker, bem, quando for necessário trabalhar com contêineres, você pode iniciá-lo através do comando systemctl.

Assim, para desativar os dois serviços, abra o terminal e digite os comandos abaixo:

sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl disable docker.service

Obs: lembre-se de fazer as alterações necessárias (por exemplo, caso seu sistema não conte com o Docker, elimine esta parte do comando).

Em seguida, reinicie o seu computador.

Obs: caso você deseje reativar os dois serviços acima, basta usar os comandos abaixo:

sudo systemctl enable NetworkManager-wait-online.service
sudo systemctl enable docker.service

Reduzindo o tempo de espera do GRUB

Depois de termos desativado os serviços necessários, vamos agora dar uma olhada no GRUB. Incluso em grande parte das distribuições GNU/Linux, o GRUB (GRand Unified Bootloader) é um boot loader, ou “carregador de inicialização”.

O boot loader por padrão conta com um tempo de espera de 10 segundos. Porém, este tempo pode ser reduzido, de forma a acelerar a velocidade de inicialização do Linux.

Você pode alterar o valor de timeout do GRUB, de 10 segundos para 2, por exemplo. Você pode até mesmo usar 0 (zero), aqui, porém fique ciente de que neste caso o S.O. default será iniciado de forma automática, e você não terá tempo para escolher outra opção.

Antes, porém, faça um backup do arquivo de configuração, através do seguinte comando:

sudo cp /etc/default/grub /etc/default/grub.bak

Assim, vamos usar o valor “2” no tempo de espera. Portanto, abra o arquivo de configuração do GRUB através do comando abaixo:

sudo nano /etc/default/grub

Com o arquivo aberto, procure a linha GRUB_TIMEOUT=”10″. Aqui, altere o valor (e mantenha as aspas) para 2. Veja na imagem abaixo:

GRUB - Editando timeout

Em seguida, grave e feche o arquivo. Finalmente, para aplicar as modificações, execute o seguinte comando:

sudo update-grub

Obs: você também pode usar, neste caso, uma aplicação gráfica. O GRUB Customizer também funciona, neste caso. Aqui, basta alterar o valor da opção “boot padrão de inicialização depois de”, na aba “Configurações gerais”.

Em seguida, reinicie sua máquina, lembrando que até agora ajustamos as configurações abaixo:

  • Desativado o serviço “NetworkManager-wait-online.service”;
  • Desativado o serviço “docker.service”;
  • Reduzido o tempo de espera do GRUB;

Impacto no tempo de boot no Linux até o momento

Chegou o momento de verificar se as alterações feitas até agora surtiram efeito. Portanto, vamos usar o comando systemctl novamente, conforme abaixo:

systemd-analyze

No meu caso, por exemplo, houve um ganho muito interessante, lembrando, porém, que estou fazendo as alterações com alguma parcimônia.

De qualquer forma, você agora pode observar que o tempo de inicialização foi reduzido de um minuto e meio (veja acima) para cerca de 1min. 13s:

systemd-analyze

Otimizando ainda mais o boot no Linux

Em seguida, vamos otimizar ainda mais o nosso sistema. Desta vez, através da geração de um gráfico, que permite visualização com um nível de detalhes muito maior. Use agora o seguinte comando:

systemd-analyze plot> boot.svg

O comando acima gerou um arquivo SVG (boot.svg). Lembre-se de que ele foi gerado no diretório onde você se encontra.

Boot

Você pode abrir este gráfico através de um editor de imagens qualquer. E ele é muito interessante, pois exibe uma espécie de “linha do tempo”, com um gráfico de barras e a duração de cada serviço.

O gráfico é grande, muito denso, e assim, será necessário que você use bastante o zoom do aplicativo gráfico de sua escolha. Porém, chama a atenção o fato do serviço “apt-daily.timer” tomar bastante tempo (pelo menos no meu caso).

De fato, o “”apt-daily.timer” não precisa ser carregado logo no boot. Ele ainda pode contar com um certo tempo de atraso. Assim, digite o comando abaixo, e vamos ajustar o serviço para ser iniciado 15 minutos após o boot:

sudo systemctl edit apt-daily.timer

Com o arquivo de configuração aberto, cole o seguinte conteúdo dentro dele, tornando-o padrão. Você deve adicionar o texto logo abaixo fora dos comentários (“#”), para que ele não seja desconsiderado:

 # apt-daily timer configuration override
 [Timer]
 OnBootSec=15min
 OnUnitActiveSec=1d
 AccuracySec=1h
 RandomizedDelaySec=30min

Agora, salve e feche o arquivo. A seguir, reinicie o seu sistema.

Removendo Snaps desnecessários

Em seguida, é preciso observar que o “snapd.service” também toma bastante tempo durante o boot no Linux, pelo menos em nosso caso (veja imagens acima).

Antes de partir para qualquer alternativa mais radical, porém, você deve verificar todos os Snaps que porventura possui instalados.

Geralmente, leva um certo tempo, durante o boot, para a montagem dos Snaps (isto sem falar no espaço ocupado no disco). Assim, verifique seu sistema em busca de pacotes “velhos” ou que você não usa mais:

snap list --all

Observe que aqui são listadas inclusive versões anteriores dos pacotes Snap. Verifique os códigos das versões, e as colunas “Rev” (Revisão) e “Notas”. Busque por Snaps “Desativados”.

Em seguida, no terminal, use um comando com a sintaxe abaixo para desinstalar Snaps que aparecem como “Desativado”:

sudo snap remove nomeDoPacote --revision=codigoDaRevisão

Agora vamos a um exemplo prático. No meu caso, para remover a revisão 115 do ONLYOFFICE, usei o comando abaixo:

sudo snap remove onlyoffice-desktopeditors --revision=115

E assim por diante. A seguir, reinicie novamente o computador.

E para saber mais a respeito deste formato de empacotamento, confira o artigo abaixo:

Conferindo o impacto no boot no Linux até agora

Se você chegou até aqui, é provável que tenha ganho alguns bons segundos (ou mais) na inicialização do seu sistema.

Outras coisas podem ser feitas, obviamente. Entretanto, que tal dar uma olhada nos ganhos até agora? Veja a imagem abaixo, portanto (comando systemd-analyze):

systemd-analyze

Agora, observe com mais detalhes o resultado obtido através do comando systemd-analyze blame:

Boot no Linux - systemd-analyze

Repare que o serviço “systemd-journal-flush.service” teve seu tempo muito reduzido. E isto se deve a dois comandos que executei há pouco (veja detalhes logo mais abaixo).

De qualquer forma, agora o mesmo sistema (de acordo com as imagens acima) leva cerca de 1min. e 1s. para iniciar (contra 1 minuto e meio anteriormente).

Contribuindo para isto tudo, temos o “systemd-journal-flush.service” levando cerca de 11 segundos (contra 33 segundos anteriormente) e o “snapd.service” demorando em torno de 17 segundos (contra 23 segundos anteriormente).

Finalizando os ajustes para acelerar o boot no Linux

Detalhando um pouco melhor: o “systemd-journal-flush.service” serve para liberar espaço utilizado pelos logs do systemd. Em suma, grandes arquivos de log, neste ponto, acabam deixando a inicialização mais lenta, pois todos eles são verificados durante o boot (novos dados também são adicionados, no boot).

Velocidade

Agora, que tal verificar quanto espaço em disco está sendo ocupado pelo sistema de logs do seu systemd?

Basta executar o seguinte comando:

journalctl --disk-usage

No meu caso, após a limpeza, o espaço ocupado foi reduzido de mais de 3 GB para cerca de 100 MB:

Archived and active journals take up 104.0M in the file system.

Assim, os comandos que você deve executar para resolver este problema (eu os executei há pouco) seguem abaixo:

sudo journalctl --rotate
sudo journalctl --vacuum-time=1d

Em relação à opção “–vacuum-time=1d”, estamos solicitando a eliminação de tudo com mais de 1 dia de “vida”. Altere o valor conforme desejar, mas fica aqui a sugestão.

Execute agora, novamente, o comando para verificar quanto de espaço esses logs ocupam no sistema:

journalctl --disk-usage

Perceba agora que, provavelmente, muito espaço em disco foi liberado.

Você também deve ter em mente que ferramentas como MySQL, Apache, Xampp e similares geralmente demoram mais para serem carregadas. Por outro lado, é sempre possível desativá-las através do comando systemctl disable.

Obviamente, estamos aqui lidando com um desktop. No caso de um servidor, por exemplo, serviços como estes geralmente são necessários e não podem ser desativados.

Além disso, a troca de um disco rígido tradicional por um SSD, por exemplo, geralmente proporciona ganhos significativos. Assim, tudo depende de testes, ferramentas e, claro, orçamento.

Conclusão

E assim chegamos ao final de mais um guia no blog TecLinux. Continuando com nossa “saga” envolvendo o systemd, system init padrão em um número bem grande de distros, demos uma olhada melhor em algumas formas de acelerar a inicialização do sistema.

Como você certamente percebeu, o processo de boot no Linux não é complicado. Apenas é preciso ter paciência, tempo para testes e disposição para ir mais fundo no sistema operacional.

Gostou do conteúdo? Deixe seu comentário, compartilhe seus resultados!

Compartilhe este conteúdo:

<a href="https://teclinux.com/author/marcos-zy/" target="_self">Marcos A.T. Silva</a>

Marcos A.T. Silva

Apaixonado por tecnologia desde tenra idade, trabalha com TI há mais de 20 anos. Tem no rock and roll (em suas mais variadas vertentes) uma válvula de escape, e adora escrever guias e tutoriais, além de ser um grande entusiasta do Linux e do software livre.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Pin It on Pinterest

Share This

Compartilhe

Compartilhe este post com seus amigos!