Há algum tempo para quem usa Fedora ou outras distribuições GNU/Linux consideradas “upstream”, algumas operações de administração de sistema ficaram diferentes, ou ainda, apresentam uma mensagem avisando que aquela maneira de fazer as coisas está “fora de uso”. Sim isto é o Systemd! Ele é um sistema de gerenciamento de serviços para o Linux compatível com System V e Scripts de init. Systemd é o novo sistem de inicialização do Fedora. Foi e ainda é desenvolvido por Lennart Poettering e Kay Sievers. O Systemd já é padrão no Fedora desde a versão 15 e em outras distribuições como OpenSuse, Mandriva, Arch Linux, também está disponível para ser usado no Debian, Ubuntu e Gentoo. Este artigo está longe de querer descrever o Systemd em todas as suas características e funcionalidades, minha ideia aqui é cobrir algumas tarefas corriqueiras de administradores de sistema, e na medida do possível, comparando com a forma System V, do ponto de vista de quem usa Fedora/Red Hat/CentOs e etc.
Serviços e Units
Serviços em sistemas que não utilizam o Systemd são scripts para inicialização de daemons que ficam em “/etc/init.d”, já nos sistemas que usam Systemd, são Units. Uma Unit pode ser um serviço, um socket, uma definição de path, uma configuração de montagem automática, ou seja, o Systemd através de Units padroniza a forma de utilização destes elementos. Utilizaremos como exemplo o serviço que controla o servidor openssh.
Arquivos | System V | Systemd |
Daemon | /etc/init.d/sshd (daemon) | /usr/lib/systemd/system/sshd.service (Unit) |
Configuração | /etc/sysconfig/sshd e /etc/ssh/sshd_config | /etc/sysconfig/sshd e /etc/ssh/sshd_config |
Binário | /usr/sbin/sshd | /usr/sbin/sshd |
No Systemd no
lugar do comando service, ou ainda “/etc/init.d/”,
o comando utilizado é o systemctl.
Para a sequência
de comandos abaixo:
$
service sshd status
$
service sshd start
$
service sshd stop
Com o Systemd
fica da seguinte forma:
$
systemctl status sshd.service
$
systemctl start
sshd.service
$
systemctl stop
sshd.service
Runlevels e Targets
Quando um Fedora
Linux era iniciado antes do Systemd ser padrão na distro, esse
normalmente inicializava em Runlevel 5, ou seja, em modo gráfico
(X11). Como sabemos, existiam basicamente 7 Runlevels, isso era
configurado para a inicialização padrão no arquivo /etc/inittab:
...
#
0 - halt (Do NOT set initdefault to this)
#
1 - Single user mode
#
2 - Multiuser, without NFS (The same as 3, if you do not have
#networking)
#
3 - Full multiuser mode
#
4 - unused
#
5 - X11
#
6 - reboot (Do NOT set initdefault to this)
id:5:initdefault:
... |
Em sistemas com o Systemd essa configuração é realizada com um link simbólico ou com a opção isolate no comando systemctl
Para configurar o sistema para inicializar em modo gráfico (equivalente ao Runlevel 5):
$ln -sf /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
Ou
$ systemctl isolate graphical.target
Para configurar o sistema para inicializar em modo multiusuário sem o modo gráfico (equivalente ao Runlevel 3):
$ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
Ou
$ systemctl isolate multi-user.target
Uma tabela de “equivalência”:
System V | Systemd |
Runlevel 0 (Halt)
|
|
Runlevel 1 (Single User)
|
|
Runlevel 3 (Multiuser)
|
|
Runlevel 5 (Gráfico)
|
|
Runlevel 6 (Reboot)
|
|
$ chkconfig sshd on
Para habilitar a Unit sshd.service no Target atual (Systemd):
$ systemctl enable sshd.service
Criando uma Unit para montar uma partição de arquivos dentro do home do usuário
Como sempre estou reinstalando meu Linux, e como meu notebook tem mais de um SO, tenho em meu HD uma partição de arquivos. Em um passado não muito distante eu colocaria esta configuração no arquivo /etc/fstab, não que isso não funcione agora, mas a maneira correta e elegante de se fazer essa configuração é criando uma Unit para montagem e outra para o automount.
Criando a Unit home-penasio-Arquivos.mount para montar uma partição /dev/sda6 em /home/penasio/Arquivos:
Em /etc/systemd/system, criar o arquivo home-penasio-Arquivos.mount com o seguinte conteúdo:
[Unit]
Description=Meu
diretorio de Arquivos
[Mount]
What=/dev/sda6
Where=/home/penasio/Arquivos
Type=ntfs-3g
Options=defaults |
Para o automount, criar também a Unit home-penasio-Arquivos.automount com o seguinte conteúdo:
[Unit]
Description=Automount
meu Arquivos
[Automount]
Where=/home/penasio/Arquivos
[Install]
WantedBy=graphical.target
|
Habilitando o automount na inicialização
$ systemctl enable home-penasio-Arquivos.automount
Bom, basicamente eram estes aspectos do Systemd que eu queria falar, pois são recorrentes pra quem é administrador de sistemas, e este nem sempre tem tempo para vasculhar várias páginas para juntar informações úteis na hora do aperto. Espero ter sido feliz na escolha dos itens descritos.
Referências
https://fedoraproject.org/wiki/Systemd/pt-brhttp://en.wikipedia.org/wiki/Lennart_Poettering
http://en.wikipedia.org/wiki/Kay_Sievers
http://0pointer.de/blog/projects/systemd.html
http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks
Comentários