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:
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