systemd

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
systemd
Debian Unstable Systemd Boot (2015).png
Arranque do systemd no Debian GNU/Linux
Autor Lennart Poettering, Kay Sievers Harald Hoyer, Daniel Mack, Tom Gundersen e David Herrmann
Desenvolvedor Lennart Poettering, Kay Sievers, Harald Hoyer, Daniel Mack, Tom Gundersen, David Herrmann, e outros
Lançamento 30 de março de 2010 (6 anos)
Versão estável 215 (3 de julho de 2014; há 3 anos)
Linguagem C[1]
Sistema operativo Linux
Gênero(s) daemon init
Licença LGPL 2.1+ (software livre)
Estado do desenvolvimento Ativo
Tamanho ~2.5 MB
Página oficial freedesktop.org/.../systemd/
Componentes do systemd A arquitetura de systemd como é usado por Tizen. Vários componentes, incluindo serviços de telefonia, bootmode, dlog e tizen são de Tizen e não são componentes do systemd. [2]

systemd é um sistema de init usado em distribuições Linux para inicializar o espaço do usuário e gerenciar todos os processos posteriormente, em vez dos sistemas de inicialização UNIX SystemV ou Berkeley Software Distribution (BSD). O nome systemd adere à convenção Unix de dar nomes aos daemons adicionando a letra d.[3] É publicado como software livre e de código aberto nos termos da Licença Pública Geral Menor GNU (LGPL) versão 2.1 ou posterior. [4] Um dos principais objetivos do systemd é unificar configurações básicas de Linux e comportamentos de serviço em todas as distribuições. [5]

A partir de 2015, a maioria das distribuições Linux adotaram o systemd como seu sistema init padrão. [6] A crescente adoção de systemd tem sido controversa, com os críticos argumentando que o software violou a filosofia Unix tornando-se cada vez mais complexa, e que as distribuições foram forçados a adotá-lo devido à dependência de vários outros softwares sobre ele, incluindo, o ambiente de trabalho do GNOME 3.

systemd inicializa uma plataforma, mas também serve para consolidar o registro de eventos e pode substituir o syslog. Devido a ele substituir dois sistemas administrativos, para administradores de sistema isto significa que o número de mecanismos internos do kernel que ele trata oferece uma curva de aprendizagem excessiva.

O systemd é mantido por Lennart Poettering e Kay Sievers, com muitos outros contribuintes.[7] Ele é publicado como um software livre sob os termos da GNU Lesser General Public License versão 2.1 ou superior.

Design[editar | editar código-fonte]

Lennart Poettering e Kay Sievers, os engenheiros de software que trabalham para a Red Hat, que inicialmente desenvolveu o systemd, procuraram superar a eficiência do daemon init de várias maneiras. Eles queriam melhorar a estrutura de software para expressar dependências, para permitir que mais processamento fosse feito simultaneamente ou em paralelo durante a inicialização do sistema e para reduzir a sobrecarga computacional do shell.

Poettering descreve o desenvolvimento do sistema como "nunca terminado, nunca completo, mas acompanhando o progresso da tecnologia". Em maio de 2014, Poettering definiu ainda mais o sistema como tendo como objetivo unificar "diferenças sem sentido entre distribuições", fornecendo as três funções gerais a seguir:

  • Um gerente de sistema e serviço (gerencia tanto o sistema, como aplicando várias configurações, e seus serviços)
  • Uma plataforma de software (serve como base para o desenvolvimento de outro software)
  • A cola entre aplicações e o kernel (fornece várias interfaces que expõem as funcionalidades fornecidas pelo kernel)

systemd não é apenas o nome do daemon init, mas também se refere a todo o pacote de software em torno dele, que, além do daemon systemit init, inclui os daemons journald, logind e networkd, e muitos outros componentes de baixo nível. Em janeiro de 2013, Poettering descreveu systemd não como um programa, mas sim um grande pacote de software que inclui 69 binários individuais. Como um conjunto de software integrado, o systemd substitui os scripts de inicialização e os níveis de execução controlados pelo daemon tradicional do init, juntamente com os scripts de shell executados sob seu controle. O systemd também integra muitos outros serviços que são comuns em sistemas Linux ao lidar com logins de usuários, console de sistema, hotplugging de dispositivos (ver udev), execução agendada (substituindo cron), logging, hosts e locales.

Como o daemon init, o systemd é um daemon que gerencia outros daemons, que, incluindo o systemd, são processos em segundo plano. systemd é o primeiro daemon a iniciar durante a inicialização e o último daemon a terminar durante o desligamento. O daemon systemd serve como raiz da árvore de processos do espaço do usuário; O primeiro processo (PID 1) tem um papel especial nos sistemas Unix, pois recebe um sinal SIGCHLD quando um processo do daemon (que se separou do seu pai) termina. Portanto, o primeiro processo é particularmente adequado para a finalidade de monitorar os daemons; systemd tenta melhorar nessa área específica sobre a abordagem tradicional, que normalmente não reiniciaria os daemons automaticamente, mas só os lançaria uma vez sem monitoramento adicional.

systemd executa elementos de sua sequência de inicialização em paralelo, o que é mais rápido do que a seqüência de inicialização tradicional abordagem seqüencial. [13] Para a comunicação entre processos (IPC), o systemd disponibiliza soquetes de domínio Unix e D-Bus para os daemons em execução. O estado do systemd também pode ser preservado em uma snapshot para futura recuperação.

Ficheiros de unidade[editar | editar código-fonte]

Systemd registra as instruções de inicialização para cada daemon em um arquivo de configuração (conhecido como um "arquivo de unidade") que usa uma linguagem declarativa, substituindo os scripts de shell de inicialização por daemon tradicionalmente usados. Os tipos de arquivo de unidade incluem service, socket, device, mount, automount, swap, target, caminho, timer (que pode ser usado como tipo agendador cron job), snapshot, slice e scope.

Componentes centrais e bibliotecas[editar | editar código-fonte]

Seguindo sua abordagem integrada, o systemd também fornece substitutos para vários daemons e utilitários, incluindo os scripts de shell de inicialização, pm-utils, inetd, acpid, syslog, watchdog, cron e atd. Os principais componentes do systemd incluem o seguinte:

systemd é um gerenciador de sistemas e serviços para sistemas operacionais Linux.

systemctl pode ser usado para intro-inspecionar e controlar o estado do sistema systemd e gerenciar serviços.

systemd-analyze pode ser usado para determinar as estatísticas de desempenho de inicialização do sistema e recuperar outras informações de estado e rastreamento do sistema e do gerenciador de serviços.

systemd rastreia processos usando o subsistema cgroups do kernel do Linux em vez de usar identificadores de processo (PIDs); Assim, os daemons não podem "escapar" do systemd, nem mesmo por bifurcação dupla. systemd não só usa cgroups, mas também systemd-nspawn e machinectl, dois programas utilitários que facilitam a criação e gerenciamento de containers Linux. Desde a versão 205, o systemd também oferece ControlGroupInterface, que é uma API para os cgroups do kernel do Linux. Os cgroups do kernel do Linux são adaptados para suportar kernfs, e estão sendo modificados para suportar uma hierarquia unificada.

Componentes auxiliares[editar | editar código-fonte]

Além de seu principal objetivo de fornecer um sistema de init Linux alternativo, o conjunto de sistemas fornece funcionalidades adicionais, incluindo os seguintes componentes:

consoled[editar | editar código-fonte]

systemd-consoled foi um daemon do console do usuário, com a intenção de substituir o suporte do terminal virtual do kernel do Linux por um componente de espaço de usuários mais capacitado. Sua versão preliminar foi lançada em outubro de 2014, como parte da versão 217 do sistema. Systemd-consoled foi removido do systemd em 29 de julho de 2015 por David Herrmann.

journald[editar | editar código-fonte]

systemd-journald é um daemon responsável pelo registro de eventos, com arquivos binários anexados apenas servindo como seus arquivos de log. O administrador do sistema pode escolher se deseja registrar eventos do sistema com systemd-journald, syslog-ng ou rsyslog. A corrupção e a ofuscação do formato binário levou a um debate muito aceso.

logind[editar | editar código-fonte]

systemd-logind é um daemon que gerencia logins do usuário e assentos de várias maneiras. Trata-se de um gerenciador de logon integrado que oferece melhorias multiseat e substitui o ConsoleKit, que não é mais mantido. Para os window managers X11 a substituição para logind requer uma quantidade mínima de portabilidade. Ele foi integrado na versão systemd 30.

networkd[editar | editar código-fonte]

networkd é um daemon para lidar com a configuração das interfaces de rede; Na versão 209, quando foi integrado pela primeira vez, o suporte foi limitado a endereços estaticamente atribuídos e suporte básico para configuração de ponte. Em julho de 2014, a versão 215 do sistema foi lançada, adicionando novos recursos, como um servidor DHCP para hosts IPv4 e suporte a VXLAN.

timedated[editar | editar código-fonte]

systemd-timedated é um daemon que pode ser usado para controlar configurações relacionadas ao tempo, como a hora do sistema, o fuso horário do sistema ou a seleção entre o UTC e o relógio do sistema de fuso horário local. É acessível através de D-Bus. Ele foi integrado na versão systemd 30.

udevd[editar | editar código-fonte]

udev é um gerenciador de dispositivos para o kernel do Linux, que manipula o diretório /dev e todas as ações do espaço do usuário ao adicionar / remover dispositivos, incluindo o carregamento do firmware. Em abril de 2012, a árvore de origem para udev foi mesclada na árvore de origem systemd.

libudev[editar | editar código-fonte]

É a biblioteca padrão para utilizar udev, que permite que aplicativos de terceiros consultem recursos udev.

systemd-boot[editar | editar código-fonte]

systemd-boot é um gerenciador de inicialização, anteriormente conhecido como gummiboot. Kay Sievers fundiu-lo em systemd com rev 220.

Front-ends gráficos[editar | editar código-fonte]

Captura de tela do systemd-ui, um frontend baseado em GTK+ para systemd

Algumas interfaces gráficas estão disponíveis, incluindo:

Systemd-ui[editar | editar código-fonte]

Também conhecido como systemadm, é um front-end gráfico simples baseado em GTK+ para systemd. Ele fornece uma interface de usuário simples para gerenciar serviços e um agente gráfico para solicitar senhas do usuário. A partir de 2014, o programa systemadm recebeu pouco desenvolvimento ou manutenção nos últimos anos, porque o foco do desenvolvimento mudou para ferramentas de linha de comando como systemctl e systemd-analyze.

Systemd-kcm[editar | editar código-fonte]

Fornece um frontend do systemd gráfico para o desktop KDE Plasma 5. Ele se integra na janela de configurações do sistema e permite monitorar e controlar as unidades systemd e sessões de logind, bem como a edição gráfica de arquivos de configuração. Systemd-kcm foi renomeado para SystemdGenie e agora é um aplicativo autônomo.

Referências

  1. "systemd", Analysis Summary (Ohloh), http://www.ohloh.net/p/systemd, visitado em 2011-06-16 
  2. Vincent, John E. «The End of Linux - blog dot lusis». blog.lusis.org. Consultado em 29 de dezembro de 2016 
  3. «Control Centre: The systemd Linux init system - The H Open: News and Features». 14 de outubro de 2012. Consultado em 29 de dezembro de 2016 
  4. Poettering, Lennart. «systemd Status Update». 0pointer.de. Consultado em 29 de dezembro de 2016 
  5. «InterfaceStabilityPromise». www.freedesktop.org. Consultado em 29 de dezembro de 2016 
  6. «Linux 101: Get the most out of Systemd | Linux Voice». www.linuxvoice.com. Consultado em 29 de dezembro de 2016 
  7. "README", systemd (freedesktop.org), http://cgit.freedesktop.org/systemd/systemd/tree/README, visitado em 2012-09-09