systemd no Sabayon - Adicionando serviços manualmente

Publicado por Alberto Federman Neto. em 04/04/2014

[ Hits: 6.945 ]

Blog: https://ciencialivre.blog/

 


systemd no Sabayon - Adicionando serviços manualmente



O procedimento foi testado em Sabayon, mas pode ser adaptado para outros GNU/Linux.

Recentemente, o Sabayon migrou completamente de OpenRC e SysVinit, para systemd:
Se você usa systemd, deve ter notado que ele é mais complicado e sua configuração não é tão fácil.

Por exemplo, ao migrar, você pode ter notado que serviços que antes carregavam no boot, agora não carregam mais! Isso ocorre, porque os serviços não são "verdadeiros serviços de boot", mas pacotes que você queria carregar ou iniciar!

No meu Sabayon, isso aconteceu com:
  • ntpd (sincronizador de tempo);
  • verynice (controlador de memória de processos);
  • hald (carregador de dispositivos USB)
  • preload (carregador de aplicativos em memória).

Após verificar e ler vários tutoriais, vi que haviam várias maneiras, mas a maioria, algo complexas, para colocar serviços manualmente em systemd.

A partir desses tutoriais, elaborei uma maneira relativamente simples e prática, de fazê-lo. Vamos ver como se resolve:

Procedimentos

1. Instale o pacote mlocate:

# equo i mlocate

Agora, poderá achar os diretórios onde estão os executáveis, configs, serviços etc, facilmente.

2. Localize os serviços que quer ativar no boot. Exemplo: ntpd e verynice (todos, em systemd, tem extensão .service):

locate ntpd.service verynice.service
 /usr/lib64/systemd/system/ntpd.service
 /usr/lib64/systemd/system/verynice.service


Vemos, então, que quase todos os serviços "padrão", estão no diretório /usr/lib64/systemd/system.

3. Para adicionar um serviço "padrão", que seu sistema já tem, mas não está iniciando no boot, é simples, é com o comando abaixo.

No nosso exemplo:

# systemctl enable ntpd.service
# systemctl enable verynice.service


E pronto, é só reiniciar o micro.

A propósito, aproveitando a oportunidade, a opção enable inicia o serviço no boot, a opção start inicia no comando, a opção "stop" para o serviço.

Para tirá-lo do boot, a opção é disable.
A opção load o carrega na RAM, mas não o executa; reload para recarregar, e restart para reiniciá-lo.

Assim, vimos como colocar para iniciar no boot os serviços "padrão", isto é, os que o systemd os reconhece, diretamente.

4. Ocorre que nem tudo que você colocou no seu OpenRC anterior, agora vai rodar. Para mim, em Sabayon, o pacote preload e o serviço hald não iniciavam.

Elaborei um jeito, relativamente simples, de colocá-los no boot.

Primeiro, como a sintaxe é algo complexa, vamos usar um arquivo .service existente, como "gabarito" para editarmos o nosso.

Vá para a pasta onde a maioria dos serviços estão (veja 2) e abra um editor de texto (para facilitar, gráfico), em modo root.

Usei o Kate, mas você pode usar o que quiser: GEdit, KWrite, mesmo nano ou Vim, se estiver acostumado.

cd /
$ cd usr/lib64/systemd/system
$ kdesu kate


5. No editor, abra um arquivo simples de algum serviço. No nosso exemplo, abri o verynice.service, como "template":

[Unit]
Description=A tool for dynamically adjusting the nice-level of processes

[Service]
ExecStart=/usr/sbin/verynice

[Install]
WantedBy=multi-user.target

6. Localize (veja 2) onde está o executável do serviço que quer configurar, no caso, o preload:

locate preload

Entre diversas linhas, verá:

 /etc/preload.conf
 /etc/conf.d/preload
 /etc/init.d/preload
 /etc/logrotate.d/preload
 /etc/runlevels/boot/preload


Por aí, pode verificar que a configuração principal do preload está em /etc/conf.d/preload e o executável dele, em /etc/init.d/preload.

7. Com o editor (veja item 5), edite o arquivo verynice, deixando-o assim:

[Unit]
Description=Auto load packages in RAM

[Service]
EnvironmentFile=/etc/conf.d/preload
ExecStart=/etc/init.d/preload
ExecReload=/etc/init.d/preload
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Note que mais linhas foram colocadas. Para assegurar que o preload ache as configurações nas pastas adequadas, e possa também reiniciar ou ficar ativo.

Salve o arquivo, obrigatoriamente com o nome e extensão preload.service.

A partir de agora, você pode usar esse arquivo (mais complexo que o do verynice) que fez para o preload, como "template" para você adicionar outros serviços que queira.

8. Agora, é só adicionar com um comando análogo ao usado no item 3:

# systemctl enable preload.service

O próprio sistema fará os links simbólicos adequados para o diretório primeiro da hierarquia do systemd, que é /etc/systemd/system.

9. A partir de agora, usando o preload.service (item 8) como "template" e editando-o (item 7), faça os arquivos e adicione (item 8) os outros serviços que quiser iniciar no boot.

10. Para ver os serviços, o comando:

systemctl -a

Mostrará todos eles, ativos, não iniciados, etc. Para localizar um deles (ex.: o verynice) você pode usar o comando combinado:

systemctl -a | grep verynice
 verynice.service                                                                loaded active   running   
 A tool for dynamically adjusting the nice-level of processes


Outra maneira, é com o comando e opção status. Assim:

systemctl status

Mostrará todos os serviços carregados e iniciados, inclusive os de camada de hardware. Bem completo.

Se quiser circunscrever, ex: para verynice e preload:

systemctl status verynice preload
 verynice.service - A tool for dynamically adjusting the nice-level of processes
    Loaded: loaded (/usr/lib64/systemd/system/verynice.service; enabled)
    Active: active (running) since Qui 2014-04-03 16:35:07 BRT; 12min ago
  Main PID: 4656 (verynice)
    CGroup: /system.slice/verynice.service
            └─4656 /usr/sbin/verynice
 
 
 preload.service - Package Loader
    Loaded: loaded (/usr/lib64/systemd/system/preload.service; enabled)
    Active: active (running)  since Qui 2014-04-03 16:35:07 BRT; 12min ago
   Process: 4657 ExecStart=/etc/init.d/preload
  Main PID: 4657
    CGroup: /system.slice/preload.service


Ainda mais uma opção. O comando:

systemctl -t service

...mostrará os serviços e o estado deles, carregados, ativos, inativos, etc...:

 UNIT                                                                                 LOAD   ACTIVE SUB     DESCRIPTION
 avahi-daemon.service                                                                 loaded active running Avahi mDNS/DNS-SD Stack
 colord.service                                                                       loaded active running Manage, Install and Generate Color Profiles
 cpufrequtils.service                                                                 loaded active exited  CPU frequency scaling via cpufrequtils
 cups.service                                                                         loaded active running CUPS Printing Service
 dbus.service                                                                         loaded active running D-Bus System Message Bus
 getty@tty1.service                                                                   loaded active running Getty on tty1
 kdm.service                                                                          loaded active running KDM Display Manager
 kernel
 NetworkManager.service                                                               loaded active running Network Manager
 ntpd.service                                                                         loaded active running Network Time Service
 polkit.service                                                                       loaded active running Authorization Manager
 preload.service                                                                      loaded active exited  Package Loader
 rtkit-daemon.service                                                                 loaded active running RealtimeKit Scheduling Policy Service
 syslog-ng.service                                                                    loaded active running System Logger Daemon
 systemd-fsck-root.service                                                            loaded active exited  File System Check on Root Device
 systemd-fsck@dev-disk-by\x2...55e3d1\x2df011\x2d46fd\x2d810a\x2d5d084be2f371.service loaded active exited  File System Check on /dev/disk/by-uuid/2755e3d1-f011-46fd-810a-5d084be2f371
 systemd-journald.service                                                             loaded active running Journal Service
 systemd-logind.service                                                               loaded active running Login Service
 systemd-random-seed.service                                                          loaded active exited  Load/Save Random Seed
 systemd-remount-fs.service                                                           loaded active exited  Remount Root and Kernel File Systems
 systemd-sysctl.service                                                               loaded active exited  Apply Kernel Variables
 systemd-tmpfiles-setup-dev.service                                                   loaded active exited  Create static device nodes in /dev
 systemd-tmpfiles-setup.service                                                       loaded active exited  Recreate Volatile Files and Directories
 systemd-udev-settle.service                                                          loaded active exited  udev Wait for Complete Device Initialization
 systemd-udev-trigger.service                                                         loaded active exited  udev Coldplug all Devices
 systemd-udevd.service                                                                loaded active running udev Kernel Device Manager
 systemd-update-utmp.service                                                          loaded active exited  Update UTMP about System Reboot/Shutdown
 systemd-user-sessions.service                                                        loaded active exited  Permit User Sessions
 systemd-vconsole-setup.service                                                       loaded active exited  Setup Virtual Console
 udisks2.service                                                                      loaded active running Disk Manager
 ufw.service                                                                          loaded active exited  Uncomplicated Firewall
 upower.service                                                                       loaded active running Daemon for power management
 user@1000.service                                                                    loaded active running User Manager for 1000
 verynice.service                                                                     loaded active running A tool for dynamically adjusting the nice-level of processes
 vixie-cron.service                                                                   loaded active running Vixie Cron Daemon
 x-setup.service


Mais alguns tutoriais, com detalhes de mais comandos de systemd:
Outras dicas deste autor

Rescatux e SuperGRUB2 - Recuperação emergencial de boot e/ou de GRUB

KeyTouch - Configurando teclados multimídia sem driver específico

Sabayon e Gentoo - Atualizar Portage em um único comando

Otimizando os locais (países) para português e Brasil no Sabayon Linux

Como liberar espaço em partições cheias no Mandriva Linux

Leitura recomendada

Configurando o teclado para brasileiro no Slackware 13 de maneira fáci

Como dar Permissão de Execução a Arquivo (script ou binário) no GNU/Linux - Abordagem Prática

Corrigindo BUG NVidia vs. Asus

Personalização do XFCE

Configurando o layout do teclado rapidamente

  

Comentários
[1] Comentário enviado por mcnd2 em 04/04/2014 - 12:51h

Ótima dica.

Agora com systemd puro, temos um material para tentar sanar alguns problemas.

Grande contribuição no momento de transição definitivamente do 'openrc' e 'sysvnit' para o 'systemd'.

Favoritado...

[2] Comentário enviado por albfneto em 05/04/2014 - 10:07h

Obrigado mcnd2.
Resolveu aquele problema chato no seu Sabayon

[3] Comentário enviado por mcnd2 em 06/04/2014 - 11:18h

Ainda não! Tô ficando doido com isso, rS!...

[4] Comentário enviado por albfneto em 07/04/2014 - 17:47h

COMPLEMENTOS DA DICA:

A) Sôbre os Serviços de Hardware:

Bom, lembre que Systemd controla muito hardware... quando você faz um comando para ver todos os serviços:

$ systemctl -a | more

verá que os primeiros serviços da lista, que aparecem, cheios de números, não mexa neles, são de PCI, identificação de CDROM etc...

eles não existiam em OpenRC, mas não devem ser mexidos nem desativados. a não ser que conheça muito hardware.


B) Removendo Serviços definitivamente:

Agora vamos focar em Serviços, que vc sabe que não precisa, e tirá-los definitivamente. Suponha que o comando:

# systemctl disable nomedo.service

Não o tirou e após o boot, ele voltou, mesmo inativo, mas está carregado, loaded.

Você não quer. Existe um jeito drástico, o comando:

# systemctl mask nomedo.service

mas só faça isso se tiver certeza que não precisa do serviço, pq isto o "mata" no systemd, o envia para dev/null, portanto acabou, só re-instalando systemd para recolocá-lo.

no meu exemplo, usei para tirar todos os serviços de LVM, visto que não uso LVM (não gosto, é muito instável):

sudo systemctl mask lvm2-activation-net.service
Senha:
ln -s '/dev/null' '/etc/systemd/system/lvm2-activation-net.service'

sudo systemctl mask lvm2-activation-early.service
ln -s '/dev/null' '/etc/systemd/system/lvm2-activation-early.service'

sudo systemctl mask lvm2-activation.service
ln -s '/dev/null' '/etc/systemd/system/lvm2-activation.service'

C) Serviço kmod-static-nodes Falha.

Esse é o serviço para criar uma lista volátil e temporária de nós estáticos de kernel, antes do boot, para possibilitar o uso do pacote kmod (um gerenciador de módulos de kernel)

Não se preucupe, se ele falhar. Ele tem uns requisitos de sistema, que se não forem satisfeitos, ele falha, para permitir que o kmod seja usado.

http://caixaseca.blogspot.com.br/2013_10_01_archive.html

Se você usa o Kmod, Deixe-o rodando, mesmo que falhe.

Ou edite o arquivo do serviço, ou crie um link simbólico adequado, seguindo estas instruções do Usuário de Sabayon Italiano Sabayonino:

https://forum.sabayon.org/viewtopic.php?f=52&t=31486&p=170031&hilit=kmod#p170031

[5] Comentário enviado por JJSantos em 08/04/2014 - 22:06h

Vou ler depois. Pois deu problema no systemd...



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts