Instalação do systemd no Debian (update)


Veremos aqui uma atualização do artigo que trata da instalação do systemd no Debian.

O systemd é um novo sistema de inicialização extremamente rápido e eficiente e que tem como adeptas distros como o Arch Linux, Fedora, entre outras.

O Systemd no modo mais fácil.

Os passos a seguir são de carater experimental, já que o sistema de inicialização padrão do Debian é o SystemV, o popular sysvinit, siga-o por sua conta e risco!

Embora não seja recomendado na Debian Wiki, de carona na coragem do amigo hiltongil que após a 1ª leitura desse how-to resolveu instalar o pacote systemd-sysv e substituir o sysvinit, resolvi fazer o mesmo aqui e tenho que destacar que nenhuma alteração foi necessária, nem no arquivo /etc/default/grub tampouco no arquivo /etc/systemd/system.conf (embora seja recomendável modificar esse último), os quais serão citados no método alternativo, segue os passos e imagens:

# apt-get update
# apt-get install systemd-sysv systemd-gui libpam-systemd

Para o Debian Jessie/Testing ou SID/Unstable, use:

# apt-get update
# apt-get install systemd-sysv systemd-ui libpam-systemd

Observem que ao solicitar a instalação do pacote systemd-sysv é exibido o seguinte alerta quanto a substituição do pacote sysvinit:

Você está prestes a fazer algo destrutivo.
Para continuar digite a frase ‘Sim, faça o que eu digo!’

Este slideshow necessita de JavaScript.

Isto é de suma importância!!!

Após a instalação do pacote systemd-sysv é necessário travá-lo (mantê-lo com a tag hold) de forma a impedir que o sysvinit seja reinstalado o que acarretará na remoção do systemd, para tal faremos assim:

# echo "systemd-sysv hold"|dpkg --set-selections
# apt-get update
# apt-get dist-upgrade

Se não aparecer qualquer mensagem pertubadora informando que o systemd-sysv será removido e o sysvinit tomará seu lugar, você configurou corretamente.

Essa manha passada, descrevi numa antiga dica do VOL:

Excluindo pacotes da lista de atualizações em distros Debian-like

Revertendo as coisas…

Para reverter as coisas à sua ordem natural, ou seja, o sysvinit no lugar do systemd-sysv, executamos os seguintes comandos:

# echo "systemd-sysv install"|dpkg --set-selections
# apt-get update
# apt-get dist-upgrade

Método Alternativo: Systemd e Sysvinit lado a lado.

Diferentemente do método anterior, neste não haverá substituição ou remoção de pacotes essenciais, mas apenas a instalação de pacotes e modificações em arquivos de configuração, comecemos pela instalação do pacote systemd:

# apt-get update
# apt-get install systemd

Em seguida modificamos a linha GRUB_CMDLINE_LINUX_DEFAULT no arquivo /etc/default/grub, antes a mesma encontrava-se assim:

GRUB_CMDLINE_LINUX_DEFAULT="quiet gfxpayload=1024x768x16"

Eu poderia deixá-la como visto abaixo, porém, seriam suprimidas diversas informações que talvez fossem necessárias num sistema de testes:

GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/lib/systemd/systemd"

Conforme dito acima, optei por um boot mais informativo, e para tanto retirei a opção quiet e adicionei o comando init=/bin/systemd que chama o systemd como sistema de inicialização padrão, seguido de suas opções padrão para mensagens no boot systemd.log_target=kmsg e systemd.log_level=debug, com isso a linha GRUB_CMDLINE_LINUX_DEFAULT ficou assim:

GRUB_CMDLINE_LINUX_DEFAULT="init=/bin/systemd systemd.log_target=kmsg systemd.log_level=debug"

grub-systemd-3

Em seguida, executa-se o comando abaixo para atualizar as novas configurações do Grub:

# update-grub

grub-systemd-4

Caso queiram verificar as novas configurações do Grub, usem:

# cat /boot/grub/grub.cfg | less

grub-systemd-5

E por fim habilita-se as opções de log no arquivo /etc/systemd/system.conf, aqui habilitei as seguintes linhas:

LogLevel=debug
LogTarget=syslog-or-kmsg
LogColor=yes
SysVConsole=yes

grub-systemd-6

Abaixo vejam meu Debian Wheezy rodando com systemd sobre o kernel Liquorix 3.8.8:

Informações gerais do Sistema...
Informações gerais do Sistema…
opção systemctl list-units...
opção systemctl list-units…
opção systemctl list-units...
opção systemctl list-units…

Escolhendo qual sistema utilizar via Grub

Esse segundo método é muito interessante pois nos dá mais opções, aqui podemos por exemplo na tela do Grub, teclar ” e ” na linha referente ao kernel a ser iniciado, mover-se até a linha começada por linux, exemplo:

linux	/boot/vmlinuz-3.8-10.dmz.1-liquorix-686 root=UUID=296dbdb7-6e46-45fc-8dd7-551d1ba466ca ro quiet init=/bin/systemd systemd.log_target=kmsg systemd.log_level=debug

E modificá-la para:

linux	/boot/vmlinuz-3.8-10.dmz.1-liquorix-686 root=UUID=296dbdb7-6e46-45fc-8dd7-551d1ba466ca ro quiet

Feito isto bastará teclar Ctrl + x e em seguida seu Debian iniciará seu Debian com o Sysvinit!

Obviamente isso é uma solução temporária, pois o que vale é o que está definido em /etc/default/grub, ou seja, após um novo reboot, o sistema a ser iniciado é o que está definido no arquivo citado.

Revertendo aos valores padrão…

Comece pela edição da linha GRUB_CMDLINE_LINUX_DEFAULT no arquivo /etc/default/grub, retornando-a para os valores padrão, ou seja, a retirada das opções indicadas anteriormente, salve o arquivo e execute no terminal:

# update-grub

Após o reinício (normal) de seu sistema remova o pacote systemd:

# apt-get --purge remove systemd

Gerenciando Serviços.

Com o systemd, os comandos invoke-rc.d, update-rc.d e service ainda podem ser executados diretamente, porém os mesmos ou chamam o comando systemctl, ou são por este chamados (caso do update-rc.d):

# invoke-rc.d rsync stop
# invoke-rc.d rsync start
# service sudo start
# service sudo stop
# systemctl enable squid.service
# systemctl status squid.service
# systemctl start squid.service
# systemctl stop squid.service
# systemctl reload squid.service
# systemctl restart squid.service

Nos Debians Testing e SID os serviços são facilmente gerenciados graças ao pacote systemd-ui, cujo executável é o systemdadm, visto abaixo numa instalação do Debian Jessie XFCE:

serviços ativos.
serviços ativos.
serviços ativos e inativos.
serviços ativos e inativos.
serviço habilitado.
serviço habilitado.

Performance.

Não era necessário dizer, mas assim como no caso do Arch Linux, o boot em meu Debian Wheezy ficou infinitamente mais rápido e ficaria ainda mais se eu não tivesse habilitado aquelas informações extras mais acima!

Referências.

systemd – system and service manager

Systemd Integration

Instalação do systemd no Debian (update)

17 comentários sobre “Instalação do systemd no Debian (update)

    1. edps disse:

      Há um ganho sim, principalmente se deixar a opção quiet na linha do Grub.

      Vale a pena o teste até porque com uma pequena modificação na linha do Grub você retorna ao padrão.

      * e dá para fazê-lo (temporariamente) até diretamente na tela do Grub, basta teclar ” e ” ir até a linha começada por ” linux ” retirar as opções aqui propostas e teclar ” Ctrl + x ” feito isso o boot iniciará com o sysvinit.

      Eu devo acrescentar novas coisas nesse artigo e tendo feito isso dou um reload no mesmo.

      Um abraço.

      Curtir

  1. Maneiro já andava com vontade de testar o systemd aqui faz um tempão mas tava meio receoso. Segui o tutorial e tá tudo certinho. Apenas tive que apreder algumas coisas como o reboot e halt. Mas não consegui ter sucesso para fazer a máquina iniciar em runlevel 3 você faz ideia de como fazer isso?

    Curtir

    1. edps disse:

      Obrigado pelo comentário.

      Não entendi esse lance do init 3, porque o Debian não faz distinção do do ao 5, é tudo a mesma coisa.

      Porém executando o seguinte comando:

      # systemctl list-unit-files

      Você encontra isso:

      runlevel0.target disabled
      runlevel1.target disabled
      runlevel2.target disabled
      runlevel3.target disabled
      runlevel4.target disabled
      runlevel5.target disabled
      runlevel6.target disabled

      Acho que para todas as suas dúvidas as soluções estão aqui:

      http://fedoraproject.org/wiki/Systemd
      http://www.dynacont.net/documentation/linux/Useful_SystemD_commands/

      Curtir

  2. hiltongil disse:

    Fazendo alguns testes percebi uma coisa: a) seguindo a instalação do systemd como informada no artigo tive alguns pequenos probleminhas. Por exemplo, para reiniciar no XFCE os botões não estavam dando certo. Também no terminal comando como reiniciar e halt não funcionavam. Era preciso substituir pelos correspondentes: systemdctl reboot etc.

    Todavia, realizando alguns testes em outro PC fiz a instalação dos pacotes: systemd libsystemd-daemon0 libsystemd-journal0 libsystemd-login0 systemd-gui systemd-sysv libsystemd-id128-0 (PS: como uso o aptosid o repositório habilitado é o SID, portanto não sei se os mesmos pacotes estão disponíveis nos demais repositórios), após isso reiniciei a máquina e tava tudo certinho. Não foi necessário editar a linha no grub e os comandos como reboot e halt bem como os botões de desligar e reiniciar estão ok. (Se não me engano é o pacote systemd-sysv o responsável por isso).

    Teste em outras máquinas esse método e tudo funcionou 100%. Se os pacotes estiverem disponível em todos os repositórios acho que essa forma é ainda mais simples.

    Curtir

    1. edps disse:

      Mas acontece que (pelos menos no Wheezy), instalar o pacote systemd-sysv implicará na remoção do sysvinit, daí o motivo de eu não ter incluido essa alternativa, você estará trocando um pelo outro, se funcionou muito bom!

      Realmente o systemd (na minha opinião) melhora a inicialização do sistema, mas no Debian ele peca numa coisa, serviços são ativados automaticamente porque ele chama o update-rc.d, já nas outras distros você tem que fazer na unha o que é bom pois deixa o sistema mais leve e rápido com serviços ativos apenas aqueles que você configurou.

      Curtir

    2. edps disse:

      Indo de carona na sua coragem, removi aquelas entradas do grub, removi todos os pacotes instalados nessa dica e instalei o systemd-sysv.

      De fato funciona! e não foi necessário alterar ou modificar nada!

      Vou adicionar essas informações nesse how-to e inserir as imagens do processo de instalação e a temerosa mensagem na hora da substituição do sysvinit.

      intÉ!

      Curtir

      1. hiltongil disse:

        Beleza =]
        A dica de trancar o pacote caiu como uma luva aqui… cada vez que eu rodava o dist-upgrade ele queria remover o systemd.
        Como qualquer mudança acredito que de início poderão ocorrer alguns probleminhas mas que não devem ser muito difíceis de resolver. Por exemplo como utilizo o Truecrypt notei que ele não tava montado a unidade criptografada. Dai dei uma pesquisada e achei como contornar a situação na wiki do Arch.
        Espero que o Debian adote o systemd como default as vantagens da inicialização são perceptíveis. Mas também entendo que até que o procedimento esteja bem testado e documentado isso dificilmente irá acontecer.
        Todavia, esse howto já entrou na minha “lista padrão” de procedimentos pós-instalação do aptosid.
        Parabéns.

        Curtir

      2. edps disse:

        Valeu brother, o triste é que me parece (já li em algum lugar) que o Debian adotará o UpStart do Ubuntu em lugar do Sysvinit.

        O UpStart é o mesmo caso do Systemd, ele remove o Sysvinit e além disso trás algumas frescurites do Ubuntu rs, como o Plymouth.

        Um abraço.

        Curtir

      3. Olá Amigo Edps! Mais uma vez seus tutoriais surpreendentes! Bem vamos as duvidas.
        Primeiro queria saber se estou fazendo algo de errado na segunda dica, pois quando rolei o Grub com a modificação meu sistema não inicializou mais. Retornei o boot ao modo padrão mas fiquei imaginando. Seria meu Hardware ou burrice minha mesmo? ahahahaha (O Computador em questão é um DELL Core 2 Duo)
        E uma segunda dúvida, o Upstart é mais rápido que o adotado pelo Debian atualmente?

        Curtir

      4. edps disse:

        Até agora ninguém me reportou erro algum, experimente modificar o arquivo de configuração do Grub (/etc/default/grub), adicionando ao final do mesmo apenas isso após o ro:

        quiet init=/bin/systemd

        ou apenas:

        init=/bin/systemd

        * nesse último o boot será aquela sopa de letrinhas! rsrs

        E após modificar, execute:

        # update-grub

        Curtir

      5. hiltongil disse:

        Estranho… de repente pode inserir as linhas no grub: GRUB_CMDLINE_LINUX_DEFAULT=”init=/bin/systemd systemd.log_target=kmsg systemd.log_level=debug”

        Dai tenta verificar o que pode estar ocasionando essa demora. Nas máquinas que testei (quatro até o momento) todas ficaram sensivelmente mais rápidas. Deve ter alguma coisa acontecendo por aí =]

        Curtir

      6. edps disse:

        A sugestão dada pelo @hiltongil seria a mesma que eu iria lhe passar, usar aquelas opções no Grub lhe trarão mais informações de modo a depurar onde estão os gargalos.

        Aqui testei no VirtualBox, 2 instalações em meu PC e 1 num NetBook e não tive problema algum.

        Curtir

Deixe um comentário