Para SysV init
, eu preciso /etc/inittab
respawning entradas getty, o /sbin/init
binário, os binários e bibliotecas compartilhadas para o shell, login
, o getty
, o / segurança / stuff sombra PAM, e alguns arquivos de dispositivos.
Pois upstart
preciso dos mesmos requisitos, mas em vez de /etc/inittab
, tenho alguns *.conf
arquivos em /etc/init
: um * .conf com o start on startup
qual define um nível de execução telinit
e um * .conf para cada tty que inicia / reaparece getty
nesse tty nos níveis de execução apropriados .
De que configuração e binários eu preciso systemd
init
?
A documentação que encontro parece focada em como usar um sistema já instalado para iniciar e interromper serviços.
Uma lista mínima de arquivos para copiar (exceto o kernel / initrd) de uma instalação do Arch ou do fedora em execução seria adequada, mas não consigo encontrar esse tipo de informação systemd
.
O que eu gostaria de saber é, pois systemd
, quais arquivos são necessários e o que eles devem conter para iniciar um shell de login depois que um initramfs faz sua switch_root
chamada para o systemd
/sbin/init
.
Exemplo para upstart
os binários e dois *.conf
arquivos:
Arquivo /etc/init/whatever.conf
:
iniciar na inicialização emite nível de execução tarefa roteiro telinit 2 script final
Arquivo /etc/init/tty1.conf
:
iniciar no nível de execução [12345] reaparecimento exec / sbin / agetty -8 --noclear 38400 tty1 linux
Exemplo para sysvinit
os binários e 1 arquivo conf chamado /etc/inittab
:
id: 2: initdefault: c1: 12345: respawn: / sbin / agetty 38400 tty1 linux
Agora estou atrás do systemd
equivalente.
Presumo que pelo menos 1 *.service
arquivo seja necessário em algum lugar, com uma [Service]
entrada contendo ExecStart=-/sbin/agetty --noclear %I linux
e Restart=always
, mas o que mais é necessário?
Respostas:
Primeiro de tudo,
systemd
não é um unix tradicionalinit
. Systemd é muito mais, por isso é um pouco injusto comparar os dois.Para responder à pergunta, o que parece ser necessário são alguns binários e os seguintes arquivos de configuração:
emissão
systemctl enable console-getty.service [email protected]
cria esses links simbólicos:NOTA : Para utilizar
systemd
os recursos especiais para iniciaragetty
dinamicamente, sob demanda ao pressionar Alt+ F3e assim por diante, parece que você também deve ter pelo menos esses dois arquivos:para onde
[email protected]
está um link simbólico[email protected]
.Conteúdo dos arquivos de configuração:
A
default.target
,getty.target
,sysinit.target
os arquivos podem estar vazios, exceto para o[Unit]
tag e (provavelmente)Description=xxx
.basic.target
também contém informações de dependência:Não tenho certeza se as referências a destinos que não existem como arquivos são necessárias ou não. Eles são descritos na
systemd.special(7)
página de manual.console-getty.service
: (Caso especial para agetty no console)[email protected]
: (configuração genérica para todos os serviços getty, exceto o console)Finalmente, você provavelmente precisará de alguns desses binários especiais (não tentei quais são cruciais):
Para resumir o processo de inicialização do systemd, acho que funciona algo como isto:
basic.target
(ou todos os*.target
arquivos?)WantedBy=
,Wants=
,Before=
,After=
... directivas na[Install]
secção dos*.service
e*.target
arquivos de configuração.*.service
s que devem iniciar (que não são serviços "especiais"), possuem uma[Service]
seção com umaExecStart=
diretiva que indica o executável para iniciar.fonte
[Install]
seção não é usada pela sequência de inicialização, apenas porsystemctl enable
. O que a inicialização analisa são os links simbólicos/etc/systemd/system/basic.target.wants/
criados porsystemctl enable
.systemd
cria automaticamente um getty quando você alterna para os terminais, até um determinado número máximo. O padrão é 6 (para que você obtenha automaticamente um getty para alt + f1 a alt + f6). Se você deseja alterar este parâmetro, você pode editar/etc/systemd/logind.conf
para alterar oNAutoVTs
parâmetro para outro número (máx. 12)Se você quer um getty para desovar mesmo se você não mudar manualmente você pode adicionar um link simbólico para
/usr/lib/systemd/system/[email protected]
o/etc/systemd/system/getty.target.wants/
diretório:isso resultará na
getty.target
necessidade de mais umgetty@
serviço. Um destino é uma coleção de serviços que precisam ser gerados, a substituição de níveis de execução que suporta dependências. O destino padrão depende degetty.target
Veja em systemd FAQ no ArchWiki
edit: pesquisei um pouco mais na documentação .
Na inicialização, o
systemd
daemon carrega todos os sistemas nodefault
destino e suas dependências. Um destino é definido pelos arquivosUm destino possui uma lista de serviços anexados especificados por links simbólicos nos diretórios
A
/etc
versão substitui os padrões de distribuição em/usr/lib
. Apenas um dos.target
arquivos é necessário, enquanto nenhum diretório é necessáriogetty
é apenas um dos serviços entre outros que podem ser executados por scripts init. Na distribuição que verifiquei (fedora, arch),getty
é executado de duas maneiras diferentes:/usr/lib/systemd/system/[email protected]
arquivo no qual o nome tty é substituído pelosystemd
nome do arquivo do link )logind
quando o usuário alterna para um terminal virtual (semelhante à maneira como o antigoinetd
trouxe os serviços somente quando chega uma solicitação).logind
é um daemon diferente distribuído comsystemd
e lê sua configuração no/etc/systemd/logind.conf
arquivoEspero que isso seja satisfatório.
fonte
systemd
. Estou pesquisando um pouco sobre isso e parece bem direto, uma vez que você entende como as coisas funcionamsystemd
seja hostil, como na realização de uma invasão hostil da maneira como um sistema aberto é iniciado. Isso afasta o GNU / Linux do Unix. Não estou dizendo que isso é uma coisa ruim, mas é muito diferente de como as coisas têm sido tradicionalmente. E pesquisar um pouco indica que não estou sozinha.