Systemd-252

Introdução ao "systemd"

Enquanto o systemd foi instalado quando da construção do LFS, existem muitos recursos fornecidos pelo pacote que não foram incluídos na instalação inicial porque o Linux-PAM ainda não estava instalado. O pacote systemd precisa ser reconstruído para fornecer um serviço systemd-logind funcional, o qual fornece muitos recursos adicionais para pacotes dependentes.

Esse pacote é conhecido por construir e funcionar adequadamente usando uma plataforma LFS 11.3.

Informação do Pacote

  • Transferência (HTTP): https://github.com/systemd/systemd/archive/v252/systemd-252.tar.gz

  • Transferência (FTP):

  • Soma de verificação MD5 da transferência: b9456750a212dd54d81caeb3c38134b6

  • Tamanho da transferência: 11 MB

  • Espaço em disco estimado exigido: 307 MB (com os testes)

  • Tempo de construção estimado: 2,8 UPC (com os testes)

Transferências Adicionais

Dependências do "systemd"

Exigidas

Linux-PAM-1.5.2

Dependência de Tempo de Execução Recomendada

Opcionais

btrfs-progs-6.1.3, cURL-7.88.1, cryptsetup-2.4.3, git-2.39.2, GnuTLS-3.8.0, iptables-1.8.9, libgcrypt-1.10.1, libidn2-2.3.4, libpwquality-1.4.5, libseccomp-2.5.4, libxkbcommon-1.5.0, make-ca-1.12, p11-kit-0.24.1, pcre2-10.42, qemu-7.2.0, qrencode-4.1.1, rsync-3.2.7, sphinx-6.1.3, Valgrind-3.20.0, zsh-5.9 (para as completações do "zsh"), gnu-efi, kexec-tools, libbpf, libdw, libfido2, libmicrohttpd, lz4, quota-tools e tpm2-tss

Opcional (para reconstruir as páginas de manual)

docbook-xml-4.5, docbook-xsl-nons-1.79.2, libxslt-1.1.37 e lxml-4.9.2 (para construir o índice das páginas de manual do "systemd")

Observações de Usuário(a): https://wiki.linuxfromscratch.org/blfs/wiki/systemd

Instalação do "systemd"

Primeiro, corrija um problema de segurança no "systemd-coredump":

patch -Np1 -i ../systemd-252-security_fix-1.patch

Remova dois grupos desnecessários, render e sgx, das regras padrão do "udev":

sed -i -e 's/GROUP="render"/GROUP="video"/' \
      -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in

Reconstrua o systemd executando os seguintes comandos:

mkdir build &&
cd   build &&

meson --prefix=/usr                 \
      --buildtype=release           \
      -Ddefault-dnssec=no           \
      -Dfirstboot=false             \
      -Dinstall-tests=false         \
      -Dldconfig=false              \
      -Dman=auto                    \
      -Dsysusers=false              \
      -Drpmmacrosdir=no             \
      -Dhomed=false                 \
      -Duserdb=false                \
      -Dmode=release                \
      -Dpam=true                    \
      -Dpamconfdir=/etc/pam.d       \
      -Ddocdir=/usr/share/doc/systemd-252 \
      ..                            &&

ninja
[Nota]

Nota

Para os melhores resultados de teste, certifique-se de executar a suíte de testes a partir de um sistema que seja inicializado pela mesma versão do systemd que você estiver reconstruindo.

Para testar os resultados, emita: PATH+=:/usr/sbin ninja test.

Agora, como o(a) usuário(a) root:

ninja install

Explicações do Comando

--buildtype=release: Especifique um tipo de construção adequado para lançamentos estáveis do pacote, pois o padrão possivelmente produza binários não otimizados.

-Dpamconfdir=/etc/pam.d: Força os arquivos do "PAM" serem instalados em "/etc/pam.d" em vez de "/usr/lib/pam.d".

-Duserdb=false: Remove um processo de segundo plano que não oferece qualquer uso sob uma configuração do BLFS. Se você deseja habilitar o processo de segundo plano userdbd, [então] substitua "false" por "true" no comando "meson" acima.

-Dhomed=false: Remove um processo de segundo plano que não oferece qualquer uso sob uma configuração tradicional do BLFS, especialmente usando contas criadas com "useradd". Para habilitar o "systemd-homed", primeiro certifique-se de ter cryptsetup-2.4.3 e libpwquality-1.4.5 instalados e, em seguida, mude "false" para "true" no comando "meson" acima.

Configurando o "systemd"

O arquivo /etc/pam.d/system-session precisa ser modificado e um novo arquivo precisa ser criado para a finalidade de que o systemd-logind funcione corretamente. Execute os seguintes comandos como o(a) usuário(a) root:

grep 'pam_systemd' /etc/pam.d/system-session ||
cat >> /etc/pam.d/system-session << "EOF"
# Começo da adição do "Systemd"

session  required    pam_loginuid.so
session  optional    pam_systemd.so

# Fim da adição do "Systemd"
EOF

cat > /etc/pam.d/systemd-user << "EOF"
# Começo "/etc/pam.d/systemd-user"

account  required    pam_access.so
account  include     system-account

session  required    pam_env.so
session  required    pam_limits.so
session  required    pam_unix.so
session  required    pam_loginuid.so
session  optional    pam_keyinit.so force revoke
session  optional    pam_systemd.so

auth     required    pam_deny.so
password required    pam_deny.so

# Fim "/etc/pam.d/systemd-user"
EOF
[Atenção]

Atenção

Se atualizar a partir de uma versão anterior do "systemd" e um "initrd" for usado para inicialização do sistema, [então] você deveria gerar um novo "initrd" antes de reinicializar o sistema.

Conteúdo

Uma lista dos arquivos instalados, juntamente com as descrições curtas deles, pode ser encontrada em ../../../../lfs/view/11.3-systemd/chapter08/systemd.html#contents-systemd.

Listados abaixo estão os aplicativos recém-instalados, juntamente com descrições curtas.

Aplicativos Instalados: "homectl" (se cryptsetup-2.4.3 estiver instalado), "systemd-cryptenroll" (se cryptsetup-2.4.3 estiver instalado) e "userdbctl" (opcionalmente)

Descrições Curtas

homectl

é uma ferramenta para criar, remover, mudar ou inspecionar um diretório "home" gerenciado por systemd-homed; observe que é inútil para os(as) usuários(as) clássicos(as) do "UNIX" e diretórios "home" que estamos usando no livro LFS/BLFS

systemd-cryptenroll

É usado para registrar ou remover um sistema da criptografia completa do disco, bem como configurar e consultar chaves privadas e chaves de recuperação

userdbctl

inspeciona usuários(as), grupos e associações de grupos

pam_systemd.so

é um módulo "PAM" usado para registrar sessões de usuário(a) com o gerenciador de "login" do systemd, systemd-logind