init (Português) - ArchWiki

Jump to content

Status de tradução: Esse artigo é uma tradução de Init. Data da última tradução: 2019-11-11. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Artigos relacionados

- Processo de inicialização do Arch
- ConsoleKit

Atenção: O Arch Linux só tem suporte oficial para systemd. [1] Ao usar um sistema init diferente, por favor, mencione isso em solicitações de suporte.

Init é o primeiro processo iniciado durante a inicialização do sistema. É um processo daemon que continua em execução até que o sistema seja encerrado. Init é o ancestral direto ou indireto de todos os outros processos e adota automaticamente todos os processos órfãos. É iniciado pelo kernel usando um nome de arquivo embutido; Se o kernel não puder iniciá-lo, haverá um pânico. Normalmente, a inicialização é atribuída a identificador de processo 1.

Os init scripts (ou rc) são iniciados pelo processo init para garantir a funcionalidade básica no início e no encerramento do sistema. Isso inclui (des)montagem de sistema de arquivos e inicialização de daemons. Um gerenciador de serviços dá um passo além, fornecendo controle ativo sobre processos iniciados, ou supervisão de processos. Um exemplo é monitorar falhas e reiniciar processos de acordo.

Esses componentes combinam-se com o sistema init. Algumas entradas incluem o gerenciador de serviços no processo de inicialização ou possuem scripts de inicialização em relação próxima. Estes inits são abaixo referidos como integrados, embora as entradas em diferentes categorias possam depender explicitamente umas das outras.

## Inits (integrados)

- anopa — Sistema de inicialização construído em torno do conjunto de supervisão s6.

  https://jjacky.com/anopa/ || anopaAUR

- GNU Shepherd — Sistema de inicialização escrito em Guile.

  https://www.gnu.org/software/shepherd/ || shepherdAUR

- OpenRC — Sistema de inicialização baseado em dependência.

  https://www.gentoo.org/proj/en/base/openrc/ || openrcAUR openrc-arch-services-gitAUR

- systemd — Sistema de inicialização baseado em dependência com paralelização agressiva, supervisão de processo usando cgroups e a capacidade de depender de um ponto de montagem dado ou um serviço dbus.

  https://freedesktop.org/wiki/Software/systemd/ || systemd

## Inits

- BusyBox — Utilitários para sistemas de recuperação e embarcados.

  https://busybox.net/ || busybox

- ninit — Fork do minit

  http://riemann.fmi.uni-sofia.bg/ninit/ || ninitAUR[link quebrado: package not found]

- sinit — Inicialização simples inicialmente baseada no init mínimo de Rich Felker.

  https://core.suckless.org/sinit || sinitAUR

- SysVinit — Init tradicional do System V.

  https://savannah.nongnu.org/projects/sysvinit || sysvinitAUR

## Init scripts

- initscripts-fork — Fork mantido dos scripts SysVinit no Arch Linux.

  https://bitbucket.org/TZ86/initscripts-fork/overview || initscripts-forkAUR

- minirc — Script init mínimo projetado para BusyBox.

  https://github.com/hut/minirc/ || minirc-gitAUR

- spark-rc — Um script rc simples para iniciar seu sistema.

  https://gitlab.com/fbt/spark-rc || spark-rcAUR[link quebrado: package not found]

## Gerenciadores de serviços

- daemontools — Coleção de ferramentas para gerenciar serviços UNIX.

  https://cr.yp.to/daemontools.html || daemontoolsAUR[link quebrado: package not found]

- Monit — Monit é uma ferramenta de supervisão de processos para Unix e Linux. Com o monit, o status do sistema pode ser visualizado diretamente a partir da linha de comando ou através do servidor da Web HTTP(S) nativo.

  https://mmonit.com/monit/ || monit

- perp — Supervisor de processo persistente (serviço) e estrutura de gerenciamento para UNIX.

  http://b0llix.net/perp/ || perpAUR

- runit — Esquema de inicialização do UNIX com supervisão de serviço, uma substituição para o SysVinit e outros esquemas de inicialização.

  http://smarden.org/runit/ || runitAUR[link quebrado: package not found]

- s6 — Pequeno conjunto de programas para UNIX, projetado para permitir a supervisão de serviço na linha de daemontools e runit.

  https://skarnet.org/software/s6/ || s6AUR

## Configuração

### Migrar serviços em execução

Para executar daemons sob o novo init, salve uma lista de daemons em execução:

    $ systemctl list-units --state=running "*.service" > daemons.list

e configure os #Init scripts adequadamente. Veja também [2].

Nota: systemd-tmpfiles(8), módulos de kernel e sysctl também podem precisar de configuração.

### logind

logind exige systemd para ser o processo init. [3] Portanto, sessões locais e outras funcionalidades não estão disponíveis.

Dica: Uma versão autônoma do logind está disponível como elogind-gitAUR [4]

Permissões de dispositivo

Adicione usuários aos respectivos grupos de usuários para acesso ao dispositivo e reinicialize. A associação atual ao grupo deve primeiro ser verificada com `id usuário`.

    # usermod -a -G video,audio,power,disk,storage,optical,lp,scanner usuário

Veja também Usuários e grupos#Grupos pré-systemd. Para criar regras de grupo para usar com Polkit, veja Polkit#Bypass password prompt.

X sem root (1.16)

Como `Xorg.wrap` não verifica se logind está ativo [5], permissões de root para Xorg precisam se habilitadas manualmente:

    /etc/X11/Xwrapper.config

    needs_root_rights = yes

Gerenciamento de energia

Veja pm-utilsAUR e acpid para substituir gerenciamento de energia por systemd.

### Tarefas agendadas

Arch usa arquivos timer em vez do cron, por padrão. Veja archlinux-cronjobs para trabalhos de cron básicos.

### Dbus

As instâncias de usuário do dbus-daemon são iniciadas pelo systemd/User [6]. Ao solicitar IPC entre aplicativos de desktop, restaure `30-dbus.sh`:

    /etc/X11/xinit/xinitrc.d/30-dbus.sh

    #!/bin/bash

    # inicia uma instância de sessão dbus
    if [ -z "${DBUS_SESSION_BUS_ADDRESS-}" ] && type dbus-launch >/dev/null; then
      eval $(dbus-launch --sh-syntax --exit-with-session)
    fi

## Dicas e truques

### systemd-nspawn

systemd-nspawn é uma ferramenta para sistemas systemd. Desde o Linux 2.6.19, no entanto, é possível executar o systemd em um sistema não-systemd usando o espaço de nome de PID. Para isso, o kernel precisa ser configurado com `CONFIG_PID_NS` e `CONFIG_NAMESPACES`).

O espaço de nome de PID cria uma nova hierarquia de processos que começam com o PID 1. Além disso, o systemd exige que um sistema de arquivos raiz "chrootado" seja montado. Portanto, você precisa pelo menos fazer uma montagem de ligação, porque senão alguns serviços falharão com

    "Failed at step NAMESPACE spawning" due to "Invalid operation"

pois o systemd tenta remontar a raiz com a opção `private`.

Para configurar um chroot com um novo namespace PID, você pode usar o jchroot [7] [8]. Certifique-se de não montar `/proc` dentro da nova raiz antes de fazer o chroot, caso contrário, o systemd detectará o ambiente chroot. Você pode montá-lo depois que o systemd estiver em execução.

### Substituindo udev

Atenção: Substituir o udev não é necessário, já que systemd-udev é funcional sem systemd como PID 1. Algumas substituições como eudev também não podem coexistir com systemd – garanta um init alternativo está inicializado antes em sua instalação.

- eudev — O eudev é um fork do udev iniciado pelo projeto Gentoo. É principalmente projetado e testado com OpenRC.

  https://wiki.gentoo.org/wiki/Eudev || eudevAUR eudev-gitAUR

- mdev — Gerenciador de dispositivos para uso em sistemas embarcados.

  https://git.busybox.net/busybox/plain/docs/mdev.txt || busybox

- vdev — Um gerenciador de dispositivos virtuais para unix.

  https://github.com/jcnelson/vdev.git || vdev-gitAUR[link quebrado: package not found]

- smdev — O smdev é um programa simples para gerenciar nós de dispositivos. É principalmente compatível com o mdev, mas não possui todos os seus recursos.

  https://git.suckless.org/smdev/ || smdev-gitAUR[link quebrado: package not found]

## Veja também

- Debate sobre o sistema de inicialização do Debian
- Como executar o s6-svscan como processo 1
- Substitua o systemd com busybox + minirc
- Experimentos do Manjaro
- Init vs. runsv
- Desmistificando o sistema init
- Uma história de sistemas init modernos (1992-2015)
- Comparação de sistemas init (gentoo wiki)

Category:

- Init (Português)

Hidden category:

- Pages with broken package links