Systemd-255

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 corretamente usando uma plataforma LFS 12.1.

Informação do Pacote

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

  • Transferência (FTP):

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

  • Tamanho da transferência: 15 MB

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

  • Tempo de construção estimado: 3,7 UPC (com testes usando quatro elementos de processamento da CPU)

Transferências Adicionais

Dependências do "systemd"

Recomendadas

[Nota]

Nota

Linux-PAM-1.6.0 não é estritamente necessário para construir o systemd, mas é o principal motivo para reconstruir o systemd no BLFS (ele já está construído no LFS de qualquer maneira) é para o processo de segundo plano systemd-logind e o módulo PAM pam_systemd.so. Linux-PAM-1.6.0 é exigido para eles. Todos os pacotes no livro BLFS com dependência do systemd esperam que tenham sido reconstruídos com Linux-PAM-1.6.0.

Opcionais

btrfs-progs-6.7.1, cURL-8.6.0, cryptsetup-2.7.0, git-2.44.0, GnuTLS-3.8.3, iptables-1.8.10, libgcrypt-1.10.3, libidn2-2.3.7, libpwquality-1.4.5, libseccomp-2.5.5, libxkbcommon-1.6.0, make-ca-1.13, p11-kit-0.25.3, pcre2-10.42, qemu-8.2.1, qrencode-4.1.1, rsync-3.2.7, sphinx-7.2.6, Valgrind-3.22.0, zsh-5.9 (para as completações do zsh), AppArmor, audit-userspace, bash-completion, jekyll, kexec-tools, libbpf, libdw, libfido2, libmicrohttpd, lz4, pefile, pyelftools, quota-tools, rpm, SELinux, systemtap, tpm2-tss e Xen

Opcional (para reconstruir as páginas de manual)

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

Observações de Editor(a): https://wiki.linuxfromscratch.org/blfs/wiki/Logind

Instalação do "systemd"

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

Agora corrija uma vulnerabilidade de segurança na verificação DNSSEC do systemd-resolved e um defeito que quebra a execução de systemd-analyze verify em uma unidade instanciada do systemd:

patch -Np1 -i ../systemd-255-upstream_fixes-1.patch

Reconstrua o systemd executando os seguintes comandos:

mkdir build &&
cd    build &&

meson setup ..                \
      --prefix=/usr           \
      --buildtype=release     \
      -Ddefault-dnssec=no     \
      -Dfirstboot=false       \
      -Dinstall-tests=false   \
      -Dldconfig=false        \
      -Dman=auto              \
      -Dsysusers=false        \
      -Drpmmacrosdir=no       \
      -Dhomed=disabled        \
      -Duserdb=false          \
      -Dmode=release          \
      -Dpam=enabled           \
      -Dpamconfdir=/etc/pam.d \
      -Ddev-kvm-mode=0660     \
      -Dnobody-group=nogroup  \
      -Dsysupdate=disabled    \
      -Dukify=disabled        \
      -Ddocdir=/usr/share/doc/systemd-255 &&

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: ninja test. Os testes chamados test-stat-util e test-netlink são conhecidos por falharem se alguns recursos do núcleo não estiverem habilitados. Se a suíte de teste for executada como o(a) usuário(a) root, alguns outros testes possivelmente falhem, porque dependem de várias opções de configuração do núcleo.

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=disabled: 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 que você tenha cryptsetup-2.7.0 e libpwquality-1.4.5 instalados e, em seguida, mude disabled para enabled no comando meson setup acima.

-Dukify=disabled: Remove um conjunto de comandos sequenciais para combinar um núcleo, um initramfs e uma linha de comando do núcleo, etc., em um aplicativo UEFI que pode ser carregado pelo firmware UEFI para iniciar o núcleo incorporado Linux. Ele não é necessário para inicializar um sistema BLFS com UEFI se seguir-se Usando o GRUB para Configurar o Processo de Inicialização com UEFI. E ele exige o módulo pefile do Python em tempo de execução, de forma que, se estiver habilitado, mas pefile não estiver instalado, na suíte de teste um teste para ele falhará. Para habilitar o systemd-ukify, instale o módulo pefile e, então, mude disabled para enabled no comando meson setup 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"
# Inicia adições do Systemd

session  required    pam_loginuid.so
session  optional    pam_systemd.so

# Termina adições do Systemd
EOF

cat > /etc/pam.d/systemd-user << "EOF"
# Inicia /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_loginuid.so
session  optional    pam_keyinit.so force revoke
session  optional    pam_systemd.so

auth     required    pam_deny.so
password required    pam_deny.so

# Termina /etc/pam.d/systemd-user
EOF

Como o(a) usuário(a) root, substitua o gerenciador systemd em execução (o processo init) pelo executável systemd recém-construído e instalado:

systemctl daemon-reexec
[Importante]

Importante

Agora certifique-se de que Shadow-4.14.5 já tenha sido reconstruído com suporte Linux-PAM-1.6.0 primeiro, depois deslogue-se e logue-se novamente. Isso garante a sessão de login em execução registrada com systemd-logind e uma instância do systemd por usuário(a) executando para cada usuário(a) titularizando uma sessão de login. Muitos pacotes do BLFS que listam o Systemd como uma dependência precisam da integração systemd-logind e (ou) de uma instância do systemd em execução por usuário(a).

[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/12.1-systemd/chapter08/systemd.html#contents-systemd.

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

Aplicativos Instalados: homectl (opcional), systemd-cryptenroll (se cryptsetup-2.7.0 estiver instalado) e userdbctl (opcional)

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