systemd-boot (Türkçe) - ArchWiki

Jump to content

# systemd-boot (Türkçe)

From ArchWiki

Related articles

- Arch boot process
- Secure Boot
- Unified Extensible Firmware Interface

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.

Note Bu makalenin tamamında `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.efi` dosyası `esp/EFI/systemd/systemd-bootx64.efi` ve `esp/EFI/BOOT/BOOTX64.EFI` konumlarına kopyalanacaktır.
- IA32 UEFI sistemlerde, `/usr/lib/systemd/boot/efi/systemd-bootia32.efi` dosyası `esp/EFI/systemd/systemd-bootia32.efi` ve `esp/EFI/BOOT/BOOTIA32.EFI` konumları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.

Note

- `bootctl install` komutu çalıştırıldığında, systemd-boot ESP'yi sırasıyla `/efi`, `/boot` ve `/boot/efi` konumlarında aramaya çalışır. Eğer `esp` farklı bir konuma bağlıysa, parametre olarak `--esp-path=esp` seç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'de `esp/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 -S` komutunu 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.

Note

- 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.

Note UEFI önyükleme yöneticisi bağımsız bir EFI çalıştırılabilir dosyasıdır ve sistemi başlatmak için herhangi bir sürümü kullanılabilir (kısmi güncellemeler geçerli değildir, çünkü pacman yalnızca systemd-boot yükleyicisini kurar, systemd-bootun kendisini çalıştırmaz.) Ancak yeni sürümler yeni özellikler ekleyebilir veya hataları giderebilir, bu nedenle systemd-bootu güncellemek iyi bir fikirdir.
Warning Eğer Secure Boot (Güvenli Önyükleme) etkinse, önyükleme yöneticisi güncellemesini imzalamanız gerekir. Bkz. #Secure Boot için İmzalama.

#### Manuel Güncelleme

systemd-boot'u güncellemek için bootctl kullanın:

    # bootctl update

Note Tıpkı `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.

Categories:

- Türkçe
- Boot loaders (Türkçe)

systemd-boot (Türkçe)
Add topic