UKI (Birleşik Çekirdek Görüntüsü) desteğiyle systemd sistem yöneticisi 252'nin piyasaya sürülmesi

Beş aylık geliştirme sürecinin ardından, sistem yöneticisi systemd 252'nin sürümü sunuldu.Yeni sürümdeki en önemli değişiklik, yalnızca çekirdeği ve önyükleyiciyi değil aynı zamanda bileşenleri de doğrulamanıza olanak tanıyan modernleştirilmiş bir önyükleme işlemi desteğinin entegrasyonuydu. dijital imzaları kullanan temel sistem ortamının.

Önerilen yöntem, yükleme sırasında çekirdeği UEFI'den (UEFI önyükleme saplaması) yüklemek için bir işleyiciyi, bir Linux çekirdek görüntüsünü ve belleğe yüklenen initrd sistem ortamını birleştiren birleşik bir çekirdek görüntüsü UKI'nin (Birleşik Çekirdek Görüntüsü) kullanılmasını içerir. kök FS'yi monte etmeden önceki aşamada ilk başlatma için. UKI görüntüsü, geleneksel önyükleyiciler kullanılarak yüklenebilen veya doğrudan UEFI ürün yazılımından çağrılabilen, PE formatında tek bir yürütülebilir dosya olarak paketlenir. UEFI'den çağrıldığında, yalnızca çekirdeğin değil aynı zamanda initrd'nin içeriğinin dijital imzasının bütünlüğünü ve güvenilirliğini doğrulamak mümkündür.

Bütünlüğü izlemek ve UKI görüntüsünün dijital imzasını oluşturmak için kullanılan TPM PCR (Güvenilir Platform Modülü Platform Yapılandırma Kaydı) kayıtlarının parametrelerini hesaplamak için yeni bir yardımcı sistemd-ölçüsü dahil edilmiştir. İmzada kullanılan genel anahtar ve beraberindeki PCR bilgileri, doğrudan UKI önyükleme görüntüsüne gömülebilir (anahtar ve imza, '.pcrsig' ve '.pcrkey' alanlarındaki bir PE dosyasına kaydedilir) ve harici olarak buradan çıkarılabilir. veya dahili yardımcı programlar.

Özellikle systemd-cryptsetup, systemd-cryptenroll ve systemd-creds yardımcı programları bu bilgiyi kullanacak şekilde uyarlanmıştır; bu sayede şifrelenmiş disk bölümlerinin dijital olarak imzalanmış bir çekirdeğe bağlanmasını sağlayabilirsiniz (bu durumda şifrelenmiş bölüme erişim). yalnızca UKI görüntüsünün TPM'de bulunan parametrelere dayalı olarak dijital imzayla doğrulamayı geçmesi durumunda sağlanır).

Ek olarak, çeşitli önyükleme aşamalarının TPM 2.0 spesifikasyonunu destekleyen kripto işlemcilerin belleğinde bulunan parametrelere bağlanmasını kontrol etmenize olanak tanıyan systemd-pcrphase yardımcı programı dahildir (örneğin, LUKS2 bölüm şifre çözme anahtarını yalnızca initrd görüntüsünü alın ve daha sonraki indirme aşamalarında ona erişimi engelleyin).

Diğer bazı değişiklikler:

  • Ayarlarda farklı bir yerel ayar belirtilmediği sürece varsayılan yerel ayarın C.UTF-8 olmasını sağlar.
  • Artık ilk önyükleme sırasında eksiksiz bir hizmet ön ayarı işlemi ("systemctl ön ayarı") gerçekleştirmek mümkündür. Ön ayarların önyükleme sırasında etkinleştirilmesi, "-Dfirst-boot-full-preset" seçeneğiyle oluşturmayı gerektirir, ancak gelecek sürümlerde varsayılan olarak etkinleştirilmesi planlanmaktadır.
  • Kullanıcı yönetimi birimleri, kaynakları izole etmek için sistemi parçalara (app.slice, arka plan.slice, session.slice) bölmek için kullanılan tüm dilim birimlerine CPUWeight ayarlarının uygulanmasını sağlamayı mümkün kılan bir CPU kaynak denetleyicisi içerir. CPU kaynakları için rekabet eden farklı kullanıcı hizmetleri. CPUWeight ayrıca uygun kaynak sağlama modunu etkinleştirmek için "boşta" değerini de destekler.
  • Geçici ("geçici") birimlerde ve systemd-repart yardımcı programında, /etc/systemd/system/name.d/ dizininde açılır dosyalar oluşturularak ayarların geçersiz kılınmasına izin verilir.
  • Sistem görüntüleri için, destek sona erdi bayrağı ayarlanır ve bu durum, /etc/os-release dosyasındaki yeni "SUPPORT_END=" parametresinin değerine göre belirlenir.
  • Sistemde belirli kimlik bilgileri mevcut değilse birimleri yok saymak veya çökertmek için kullanılabilecek "ConditionCredential=" ve "AssertCredential=" ayarları eklendi.
  • Varsayılan SMACK güvenlik düzeyini ve ünite etkinleştirme zaman aşımını tanımlamak için system.conf ve user.conf'a “DefaultSmackProcessLabel=” ve “DefaultDeviceTimeoutSec=” ayarları eklendi.
  • “ConditionFirmware=” ve “AssertFirmware=” ayarlarında, bireysel SMBIOS alanlarını belirtme yeteneği eklendi; örneğin, bir üniteyi yalnızca /sys/class/dmi/id/board_name alanı “Custom” değerini içeriyorsa başlatmak için. Board”da “ConditionFirmware=smbios” -field(board_name = "Custom Board")" seçeneğini belirleyebilirsiniz.
  • Başlatma işlemi sırasında (PID 1), kimlik bilgilerinin sanal makinelere sağlanmasını basitleştiren ve cloud -init ve ateşleme gibi üçüncü taraf araçlara ihtiyaç var.
  • Kapatma sırasında, sanal dosya sistemlerinin (proc, sys) bağlantısını kesme mantığı değiştirildi ve dosya sistemlerinin bağlantısının kaldırılmasını engelleyen işlemler hakkındaki bilgiler günlüğe kaydediliyor.
  • Sistem çağrısı filtresi (SystemCallFilter), varsayılan olarak riscv_flush_icache sistem çağrısına erişime izin verir.
  • SD-boot önyükleyici, 64-bit Linux çekirdeğinin 32-bit UEFI belleniminden çalıştırıldığı karma modda önyükleme yapma olanağı sağlar. ESP'de (EFI sistem bölümü) bulunan dosyalardan SecureBoot anahtarlarının otomatik olarak uygulanmasına yönelik deneysel yetenek eklendi.
  • Bootctl yardımcı programına yeni seçenekler eklendi: Desteklenen tüm EFI mimarileri için ikili dosyaları yüklemek için “—all-architectures”, bir dizin veya disk görüntüsüyle çalışmak için “—root=” ve “—image=”, “—install-source =” kurulum kaynağını tanımlamak için, "-efi-boot-option-description=" önyükleme girişi adlarını kontrol etmek için.
  • Otomatik olarak bağlanan dizinlerin bir listesini görüntülemek için systemctl yardımcı programına 'list-automounts' komutu ve belirtilen disk görüntüsüyle ilgili komutları yürütmek için '--image=' seçeneği eklendi. ‘Show’ ve ‘status’ komutlarına “--state=” ve “--type=” seçenekleri eklendi.
  • systemd-networkd, TCP tıkanıklık kontrol algoritmasını seçmek için “TCPCongestionControlAlgorithm=”, TUN/TAP arayüzlerinin dosya tanımlayıcısını kaydetmek için “KeepFileDescriptor=”, NetLabels'i ayarlamak için “NetLabel=”, DHCPv6 aracılığıyla yapılandırmayı hızlandırmak için “RapidCommit=” seçeneklerini ekledi (RFC3315). “RouteTable=” parametresi yönlendirme tablolarının adlarının belirtilmesine olanak sağlar.
  • systemd-nspawn, "--bind=" ve "--overlay=" seçeneklerinde ilgili dosya yollarının kullanılmasına izin verir. Kapsayıcıdaki kök kullanıcı kimliğini ana bilgisayar tarafındaki takılı dizinin sahibine bağlamak için "--bind=" seçeneğine 'rootidmap' parametresi desteği eklendi.
  • systemd-resolved, varsayılan olarak şifreleme arka ucu olarak OpenSSL'yi kullanır (gnutls desteği bir seçenek olarak korunur). Desteklenmeyen DNSSEC algoritmaları artık hata (SERVFAIL) döndürmek yerine güvensiz olarak değerlendiriliyor.
  • systemd-sysers, systemd-tmpfiles ve systemd-sysctl, ayarları bir kimlik bilgisi depolama mekanizması aracılığıyla aktarma yeteneğini uygular.
  • Dizeleri sürüm numaralarıyla karşılaştırmak için systemd-analyze yardımcı programına 'compare-versions' komutu eklendi ('rpmdev-vercmp' ve 'dpkg --compare-versions'a benzer). 'systemd-analyze dump' komutuna birimleri maskeye göre filtreleme yeteneği eklendi.
  • Çok aşamalı bir uyku modu (askıya al-sonra hazırda beklet) seçildiğinde, bekleme modunda geçirilen süre artık kalan pil ömrü tahminine göre seçiliyor. Pil şarjı %5'ten az kaldığında uyku moduna anında geçiş gerçekleşir.
  • Günlükteki farklı mesajlar arasındaki zaman farkını görüntüleyen 'journalctl'e yeni bir çıkış modu "-o short-delta" eklendi.
  • systemd-repart, Squashfs dosya sistemiyle bölümler ve dijital imzalar da dahil olmak üzere dm-verity için bölümler oluşturmaya yönelik destek ekler.
  • Belirli bir zaman aşımından sonra etkin olmayan bir oturumu sonlandırmak için systemd-logind'e "StopIdleSessionSec=" ayarı eklendi.
  • Systemd-cryptenroll, şifre çözme anahtarını kullanıcıya sormak yerine bir dosyadan çıkarmak için bir "--unlock-key-file=" seçeneği ekledi.
  • Udev'in olmadığı ortamlarda systemd-growfs yardımcı programını çalıştırmak artık mümkün.
  • systemd-backlight, birden fazla grafik kartına sahip sistemler için geliştirilmiş desteğe sahiptir.
  • Dokümantasyonda verilen kod örneklerinin lisansı CC0'dan MIT-0'a değiştirildi.

Uyumluluğu bozan değişiklikler:

  • ConditionKernelVersion yönergesini kullanarak çekirdek sürüm numarasını kontrol ederken, '=' ve '!=' operatörlerinde artık basit bir dize karşılaştırması kullanılıyor ve karşılaştırma operatörü hiç belirtilmemişse, glob-mask eşleştirmesi kullanılarak kullanılabilir. '*', '?' ve '[', ']' karakterleri. Stverscmp() işlevi stilindeki sürümleri karşılaştırmak için '', '=' operatörlerini kullanmalısınız.
  • Bir birim dosyadan erişimi kontrol etmek için kullanılan SELinux etiketi artık erişim kontrolü sırasında değil, dosya yüklendiğinde okunuyor.
  • "ConditionFirstBoot" koşulu artık sistemin ilk önyüklemesinde yalnızca doğrudan önyükleme aşamasında tetikleniyor ve önyükleme tamamlandıktan sonra birimleri çağırırken "false" değerini döndürüyor.
  • Systemd, 2024 yılında, systemd sürüm 1'de kullanımdan kaldırılan cgroup v248 kaynak sınırlama mekanizmasını desteklemeyi bırakmayı planlıyor. Yöneticilerin, cgroup v2 tabanlı hizmetleri cgroup v1'ye geçirmeden önce dikkatli olmaları tavsiye edilir. Cgroups v2 ve v1 arasındaki temel fark, CPU kaynaklarını tahsis etmek, bellek tüketimini düzenlemek ve G/Ç için ayrı hiyerarşiler yerine tüm kaynak türleri için ortak bir cgroups hiyerarşisinin kullanılmasıdır. Ayrı hiyerarşiler, işleyiciler arasındaki etkileşimi organize etmede zorluklara ve farklı hiyerarşilerde referans verilen bir süreç için kurallar uygulanırken ek çekirdek kaynağı maliyetlerine yol açar.
  • 2023'ün ikinci yarısında, /usr'un kökten ayrı olarak bağlandığı veya /bin ile /usr/bin'in, /lib ile /usr/lib'in ayrıldığı bölünmüş dizin hiyerarşileri desteğini sonlandırmayı planlıyoruz.

Kaynak: opennet.ru

Yorum ekle