systemd-boot (Türkçe)
systemd-boot(7), eski adıyla gummiboot (Almanca "şişme bot" anlamına gelir) ve bazen sd-boot olarak da adlandırılan, yapılandırılması oldukça kolay bir UEFI önyükleme yöneticisidir. Önyükleme girdilerini seçmek için metin tabanlı bir menü ve çekirdek (kernel) komut satırı için bir düzenleyici sunar.
Unutulmamalıdır ki systemd-boot yalnızca, kurulduğu EFI sistem bölümünden (ESP) veya aynı disk üzerindeki Genişletilmiş Önyükleyici Bölümünden (Extended Boot Loader Partition - XBOOTLDR) EFI çalıştırılabilir dosyalarını (örn. Linux çekirdeği EFI boot stub, UEFI shell, GRUB veya Windows Önyükleme Yöneticisi) başlatabilir.
esp ifadesi EFI sistem bölümünün bağlama noktasını, boot ifadesi ise isteğe bağlı XBOOTLDR bölümünün bağlama noktasını temsil eder. Sistemin bağlama noktasına chroot yaptığınız varsayılmaktadır.Desteklenen Dosya Sistemleri
systemd-boot, dosya sistemi desteğini doğrudan donanım yazılımından (firmware) devralır (yani en azından FAT12, FAT16 ve FAT32). Ayrıca esp/EFI/systemd/drivers/ dizinine yerleştirilen tüm UEFI sürücülerini otomatik olarak yükler.
Kurulum
systemd-boot, base meta paketinin bir bağımlılığı olan systemd paketiyle birlikte gelir, bu nedenle ek bir paketi manuel olarak kurmanıza gerek yoktur.
UEFI Önyükleme Yöneticisini Kurma
systemd-boot kurulumunu yapabilmek için öncelikle sistemin UEFI modunda başlatıldığından ve UEFI değişkenlerine erişilebildiğinden emin olun. Bunu doğrulamak için efivar --list komutunu çalıştırabilir ya da eğer efivar kurulu değilse ls /sys/firmware/efi/efivars komutunu verebilirsiniz (eğer bu dizin mevcutsa, sistem UEFI modunda başlatılmış demektir).
systemd-boot sistemini ESP'ye kurmak için bootctl(1) aracını kullanın:
# bootctl install
Bu komut systemd-boot UEFI önyükleme yöneticisini ESP'ye kopyalayacak, onun için bir UEFI önyükleme girdisi oluşturacak ve bunu UEFI önyükleme sırasında ilk sıraya yerleştirecektir.
- x64 UEFI sistemlerde,
/usr/lib/systemd/boot/efi/systemd-bootx64.efidosyasıesp/EFI/systemd/systemd-bootx64.efiveesp/EFI/BOOT/BOOTX64.EFIkonumlarına kopyalanacaktır. - IA32 UEFI sistemlerde,
/usr/lib/systemd/boot/efi/systemd-bootia32.efidosyasıesp/EFI/systemd/systemd-bootia32.efiveesp/EFI/BOOT/BOOTIA32.EFIkonumlarına kopyalanacaktır.
Oluşturulan UEFI önyükleme girdisi "Linux Boot Manager" olarak adlandırılacak ve UEFI mimarisine bağlı olarak ESP üzerindeki \EFI\systemd\systemd-bootx64.efi veya \EFI\systemd\systemd-bootia32.efi dosyasına işaret edecektir.
-
bootctl installkomutu çalıştırıldığında, systemd-boot ESP'yi sırasıyla/efi,/bootve/boot/efikonumlarında aramaya çalışır. Eğerespfarklı bir konuma bağlıysa, parametre olarak--esp-path=espseçeneğini geçmeniz gerekir. (Detaylar için bootctl(1) § OPTIONS bölümüne bakın.) -
systemd-boot kurulumu yapmak, mevcut olan herhangi bir
esp/EFI/BOOT/BOOTX64.EFI(veya IA32 UEFI'deesp/EFI/BOOT/BOOTIA32.EFI) dosyasının (örneğin Microsoft'un ilgili dosyasının) üzerine yazacaktır. -
bootctl, arch-chroot(8)'un systemd dışı modunda olduğu gibi bir pid ad alanında (pid namespace) çalışırken UEFI değişkenleri/önyükleme girdileri üzerinde işlem yapmaktan kaçınır. Chroot ortamında önyükleme girdisini düzgünce oluşturmak için bunun yerine
arch-chroot -Skomutunu kullanın.
Kurulumu tamamlamak için systemd-boot sistemini yapılandırın.
XBOOTLDR Kullanarak Kurulum
Çekirdeği (kernel) ve initramfs dosyalarını ESP'den ayrı tutmak için "Linux extended boot" (XBOOTLDR) türünde ayrı bir /boot bölümü oluşturulabilir. Bu yöntem özellikle, halihazırda mevcut olan ve boyutu çok küçük olan bir ESP ile Windows yanına dual-boot kurulum yaparken oldukça kullanışlıdır. Grml veya Archiso kullanımı da diğer olası senaryolardır.
ESP'yi normal şekilde hazırlayın ve aynı fiziksel sürücü üzerinde XBOOTLDR için başka bir bölüm oluşturun. XBOOTLDR bölümünün GUID türü bc13c2ff-59e6-4262-a352-b275fd6f7172 olmalıdır [1] (gdisk için ea00 türü, fdisk için xbootldr türü). XBOOTLDR bölümünün boyutu, kurmayı planladığınız tüm çekirdekleri barındırabilecek kadar büyük olmalıdır.
- systemd-boot, ESP için yaptığı gibi bu bölüm üzerinde bir dosya sistemi kontrolü (fsck) yapmaz. Dolayısıyla, UEFI uygulamanızın okuyabildiği herhangi bir dosya sistemini kullanabilirsiniz.
- "Hızlı Önyükleme" (Fast Boot) modu etkinken UEFI, ESP dışındaki bölümleri yüklemeyi atlayabilir. Bu durum systemd-boot sisteminin XBOOTLDR bölümündeki girdileri bulamamasına yol açabilir; böyle bir durumda Fast Boot modunu devre dışı bırakın.
- systemd-boot sisteminin tanıyabilmesi için XBOOTLDR bölümü, ESP ile aynı fiziksel disk üzerinde bulunmalıdır.
Kurulum sırasında ESP'yi /mnt/efi konumuna ve XBOOTLDR bölümünü /mnt/boot konumuna bağlayın (mount).
Chroot ortamına girdikten sonra şu komutu kullanın:
# bootctl --esp-path=/efi --boot-path=/boot install
Kurulumu tamamlamak için systemd-boot sistemini yapılandırın.
UEFI Önyükleme Yöneticisini Güncelleme
systemd-boot sisteminin yeni bir sürümü çıktığında, UEFI önyükleme yöneticisi kullanıcı tarafından isteğe bağlı olarak yeniden kurulabilir. Bu işlem manuel veya otomatik olarak yapılabilir; iki yaklaşım aşağıda açıklanmıştır.
Manuel Güncelleme
systemd-boot'u güncellemek için bootctl kullanın:
# bootctl update
bootctl install komutunda olduğu gibi, systemd-boot ESP'yi /efi, /boot veya /boot/efi konumlarında bulmaya çalışacaktır. Farklı bir konum için --esp-path=esp parametresini geçmelisiniz.Otomatik Güncelleme
systemd-boot'u otomatik olarak güncellemek için ya bir systemd servisi ya da bir pacman hook (pacman kancası) kullanın. İki yöntem aşağıda açıklanmıştır.
systemd servisi
Sürüm 250'den itibaren systemd, systemd-boot-update.service servisiyle birlikte gelir. Bu servisi etkinleştirmek (enable), systemd-boot'un her açılışta aşağıdaki komutu çalıştırmasını sağlar:
# bootctl --variables=no --graceful update
Tıpkı manuel güncellemede olduğu gibi, bu servis de ESP'yi /efi, /boot veya /boot/efi konumlarında aramaya çalışır. Eğer /usr/lib/systemd/boot/efi/ dizininde daha yeni bir sürüm mevcutsa, ESP içindeki tüm kurulu systemd-boot sürümlerini güncelleyecektir. Kullanıcıların imajı Secure Boot ile kullanabilmesi için öncelikle .efi.signed ile biten bir systemd-boot dosyası arayacaktır.
pacman hook
systemd-boot-pacman-hookAUR paketi, systemd her yükseltildiğinde çalıştırılan bir pacman kancası ekler. Bu kanca yöntemi, systemd servisi yönteminden farklı olarak, önyükleme yöneticisini her açılışta değil, yalnızca systemd paketi güncellendiğinde hemen o an günceller.
AUR paketini kurmak yerine, aşağıdaki dosyayı manuel olarak /etc/pacman.d/hooks/ dizinine yerleştirmeyi de tercih edebilirsiniz:
/etc/pacman.d/hooks/95-systemd-boot.hook
[Trigger] Type = Package Operation = Upgrade Target = systemd [Action] Description = Gracefully upgrading systemd-boot... When = PostTransaction Exec = /usr/bin/systemctl restart systemd-boot-update.service
Secure Boot İçin İmzalama
Eğer Secure Boot etkinse, paketin her yükseltilmesinde önyükleme yöneticisini otomatik olarak imzalamak için bir pacman kancası eklemek isteyebilirsiniz:
/etc/pacman.d/hooks/80-secureboot.hook
[Trigger]
Operation = Install
Operation = Upgrade
Type = Path
Target = usr/lib/systemd/boot/efi/systemd-boot*.efi
[Action]
Description = Signing systemd-boot EFI binary for Secure Boot
When = PostTransaction
Exec = /bin/sh -c 'while read -r f; do /usr/lib/systemd/systemd-sbsign sign --private-key /yol/anahtar_dosyası.key --certificate /yol/sertifika_dosyası.crt --output "${f}.signed" "$f"; done;'
Depends = sh
NeedsTargets
/yol/anahtar_dosyası.key ve /yol/sertifika_dosyası.crt kısımlarını kendi imza anahtarınız ve sertifikanızla değiştirin. Bu kancayı daha iyi anlamak için systemd-sbsign(1) kılavuzuna başvurun.
Oluşturulan /usr/lib/systemd/boot/efi/systemd-boot*.efi.signed dosyası, bootctl install veya bootctl update tarafından otomatik olarak algılanacaktır. Bkz. bootctl(1) § SIGNED .EFI FILES.
Alternatif olarak sbctl aracını da kullanabilirsiniz.