Lanzamento do xestor de sistema systemd 252 con compatibilidade con UKI (Imaxe unificada do núcleo).

Despois de cinco meses de desenvolvemento, presentouse o lanzamento do xestor de sistema systemd 252. O cambio fundamental na nova versión foi a integración do soporte para un proceso de arranque modernizado, que permite verificar non só o núcleo e o cargador de arranque, senón tamén os compoñentes. do contorno básico do sistema mediante sinaturas dixitais.

O método proposto implica o uso dunha imaxe do núcleo unificada UKI (Imaxe do núcleo unificada) ao cargar, que combina un controlador para cargar o núcleo desde UEFI (esbozo de arranque UEFI), unha imaxe do núcleo de Linux e o ambiente do sistema initrd cargado na memoria, usado para a inicialización inicial na fase antes de montar o FS raíz. A imaxe UKI está empaquetada como un único ficheiro executable en formato PE, que se pode cargar mediante cargadores de arranque tradicionais ou chamarse directamente desde o firmware UEFI. Cando se chama desde UEFI, é posible verificar a integridade e fiabilidade da sinatura dixital non só do núcleo, senón tamén do contido do initrd.

Para calcular os parámetros dos rexistros TPM PCR (Trusted Platform Module Platform Configuration Register) utilizados para supervisar a integridade e xerar unha sinatura dixital da imaxe UKI, inclúese unha nova utilidade systemd-measure. A clave pública e a información de PCR que se acompaña na sinatura pódense incrustar directamente na imaxe de arranque de UKI (a chave e a sinatura gárdanse nun ficheiro PE nos campos '.pcrsig' e '.pcrkey') e extraídas dela por medio externo. ou utilidades internas.

En particular, as utilidades systemd-cryptsetup, systemd-cryptenroll e systemd-creds adaptáronse para utilizar esta información, coa que pode asegurarse de que as particións de disco cifradas estean unidas a un núcleo asinado dixitalmente (neste caso, o acceso á partición cifrada). só se proporciona se a imaxe UKI pasou a verificación mediante sinatura dixital baseada nos parámetros situados en TPM).

Ademais, inclúese a utilidade systemd-pcrphase, que permite controlar a vinculación de varias etapas de arranque a parámetros situados na memoria dos procesadores criptográficos que admiten a especificación TPM 2.0 (por exemplo, pode facer que a clave de descifrado da partición LUKS2 estea dispoñible só en a imaxe initrd e bloquear o acceso a ela en fases posteriores de descarga).

Algúns outros cambios:

  • Asegura que a configuración rexional predeterminada é C.UTF-8 a menos que se especifique unha configuración rexional diferente.
  • Agora é posible realizar unha operación preestablecida de servizo completa ("systemctl preset") durante o primeiro arranque. A habilitación dos predefinidos no momento do inicio require a creación coa opción "-Dfirst-boot-full-preset", pero está previsto que se active de forma predeterminada en futuras versións.
  • As unidades de xestión de usuarios inclúen un controlador de recursos da CPU, o que permitiu garantir que a configuración de CPUWeight se aplique a todas as unidades de segmento utilizadas para dividir o sistema en partes (app.slice, background.slice, session.slice) para illar recursos entre diferentes servizos de usuario, competindo polos recursos da CPU. CPUWeight tamén admite o valor "inactivo" para activar o modo de aprovisionamento de recursos axeitado.
  • Nas unidades temporais ("transitorias") e na utilidade systemd-repart, permítese a anulación de configuracións creando ficheiros desplegables no directorio /etc/systemd/system/name.d/.
  • Para as imaxes do sistema, establécese a marca de finalización do soporte, determinando este feito en función do valor do novo parámetro "SUPPORT_END=" no ficheiro /etc/os-release.
  • Engadíronse os axustes de "ConditionCredential=" e "AssertCredential=", que se poden usar para ignorar ou bloquear unidades se determinadas credenciais non están presentes no sistema.
  • Engadíronse as opcións "DefaultSmackProcessLabel=" e "DefaultDeviceTimeoutSec="" a system.conf e user.conf para definir o nivel de seguridade predeterminado de SMACK e o tempo de espera de activación da unidade.
  • Na configuración "ConditionFirmware=" e "AssertFirmware=", engadiuse a posibilidade de especificar campos SMBIOS individuais, por exemplo, para iniciar unha unidade só se o campo /sys/class/dmi/id/board_name contén o valor "Personalizado". Board", pode especificar "ConditionFirmware=smbios" -field(board_name = "Custom Board")".
  • Durante o proceso de inicialización (PID 1), engadiuse a posibilidade de importar credenciais desde campos SMBIOS (Tipo 11, "cadeas de provedores OEM") ademais da súa definición a través de qemu_fwcfg, o que simplifica a subministración de credenciais ás máquinas virtuais e elimina o necesidade de ferramentas de terceiros como cloud -init e ignition.
  • Durante o apagado, cambiouse a lóxica para desmontar sistemas de ficheiros virtuais (proc, sys) e gárdase no rexistro a información sobre os procesos que bloquean a desmontaxe dos sistemas de ficheiros.
  • O filtro de chamadas ao sistema (SystemCallFilter) permite o acceso á chamada ao sistema riscv_flush_icache por defecto.
  • O cargador de arranque sd-boot engade a posibilidade de arrincar en modo mixto, no que o núcleo Linux de 64 bits funciona desde o firmware UEFI de 32 bits. Engadiuse a capacidade experimental para aplicar automaticamente claves SecureBoot dos ficheiros atopados en ESP (partición do sistema EFI).
  • Engadíronse novas opcións á utilidade bootctl: "—all-architectures" para instalar binarios para todas as arquitecturas EFI admitidas, "—root=" e "—image=" para traballar cun directorio ou imaxe de disco, "—install-source =" para definir a fonte para a instalación, "-efi-boot-option-description=" para controlar os nomes das entradas de arranque.
  • O comando 'list-automounts' engadiuse á utilidade systemctl para mostrar unha lista de directorios montados automaticamente e a opción "--image=" para executar comandos en relación coa imaxe de disco especificada. Engadíronse as opcións "--state=" e "--type=" aos comandos "show" e "status".
  • systemd-networkd engadiu as opcións “TCPCongestionControlAlgorithm=” para seleccionar o algoritmo de control de conxestión TCP, “KeepFileDescriptor=” para gardar o descritor de ficheiros das interfaces TUN/TAP, “NetLabel=” para configurar NetLabels, “RapidCommit=” para acelerar a configuración mediante DHCPv6 (RFC 3315). O parámetro "RouteTable=" permite especificar os nomes das táboas de enrutamento.
  • systemd-nspawn permite o uso de rutas de ficheiro relativas nas opcións "--bind=" e "--overlay=". Engadiuse compatibilidade para o parámetro "rootidmap" á opción "--bind=" para vincular o ID de usuario root no contedor ao propietario do directorio montado no host.
  • systemd-resolved usa OpenSSL como o seu backend de cifrado por defecto (o soporte de gnutls consérvase como opción). Os algoritmos DNSSEC non compatibles agora trátanse como inseguros en lugar de devolver un erro (SERVFAIL).
  • systemd-sysusers, systemd-tmpfiles e systemd-sysctl implementan a capacidade de transferir a configuración a través dun mecanismo de almacenamento de credenciais.
  • Engadiuse o comando "compare-versions" a systemd-analyze para comparar cadeas cos números de versión (semellante a "rpmdev-vercmp" e "dpkg --compare-versions"). Engadiuse a capacidade de filtrar unidades por máscara ao comando 'systemd-analyze dump'.
  • Ao seleccionar un modo de suspensión de varias etapas (suspensión e despois hibernación), agora selecciónase o tempo que pasa no modo de espera en función da previsión da duración da batería restante. A transición instantánea ao modo de suspensión prodúcese cando queda menos do 5 % de carga da batería.
  • Engadiuse un novo modo de saída "-o short-delta" a 'journalctl', que mostra a diferenza horaria entre as diferentes mensaxes no rexistro.
  • systemd-repart engade soporte para crear particións co sistema de ficheiros Squashfs e particións para dm-verity, incluso con sinaturas dixitais.
  • Engadiuse a configuración "StopIdleSessionSec=" a systemd-logind para finalizar unha sesión inactiva despois dun tempo de espera especificado.
  • Systemd-cryptenroll engadiu unha opción "--unlock-key-file=" para extraer a clave de descifrado dun ficheiro en lugar de pedirlle ao usuario.
  • Agora é posible executar a utilidade systemd-growfs en ambientes sen udev.
  • systemd-backlight mellorou a compatibilidade con sistemas con varias tarxetas gráficas.
  • A licenza para os exemplos de código que se proporcionan na documentación cambiouse de CC0 a MIT-0.

Cambios que rompen a compatibilidade:

  • Ao comprobar o número de versión do núcleo usando a directiva ConditionKernelVersion, agora utilízase unha simple comparación de cadeas nos operadores '=' e '!=', e se non se especifica o operador de comparación, pódese usar a coincidencia de máscara globo usando o caracteres '*', '?' E '[', ']'. Para comparar versións de estilo stverscmp(), use os operadores '<', '>', '<=' e '>='.
  • A etiqueta SELinux usada para comprobar o acceso desde un ficheiro de unidade agora lese no momento en que se carga o ficheiro, en lugar de no momento da comprobación de acceso.
  • A condición "ConditionFirstBoot" agora desenvólvese no primeiro arranque do sistema só directamente na fase de inicio e devolve "false" ao chamar ás unidades despois de que se complete o arranque.
  • En 2024, systemd planea deixar de admitir o mecanismo de limitación de recursos cgroup v1, que estaba en desuso na versión 248 de systemd. Recoméndase aos administradores que teñan coidado antes de migrar os servizos baseados en cgroup v2 a cgroup v1. A diferenza fundamental entre cgroups v2 e v1 é o uso dunha xerarquía común de cgroups para todos os tipos de recursos, en lugar de xerarquías separadas para asignar recursos da CPU, para regular o consumo de memoria e para E/S. Xerarquías separadas orixinan dificultades para organizar a interacción entre controladores e custos adicionais de recursos do núcleo cando se aplican regras para un proceso referenciado en xerarquías diferentes.
  • No segundo semestre de 2023, pensamos acabar co soporte para xerarquías de directorios divididos, onde /usr se monta por separado da raíz, ou /bin e /usr/bin, /lib e /usr/lib están separados.

Fonte: opennet.ru

Engadir un comentario