ブートローダーに GRUB を使った方法については記述済みですが、このたび systemd-boot を使った方法を試みたので、それを記録します。
ArchWiki にはいろんなことがいっぱい書いてあって、結論的に何をどうすべきなのか?わかりにくかったので、最低こうすればよいというものを記述してみました。
参考:https://zenn.dev/imzrust/articles/28f8f5babd23ed
1.セキュアブートを無効にする
UEFIの設定項目は、マザーボードのメーカーにより異なっているが、secure-boot を disable に設定する他、Windows OS Configuration の項目も disable にしなければならないものもあるようだ。この項目が disable にできない場合は、standard やカスタムでも可能のようだ。
https://bbs.archlinux.org/viewtopic.php?id=296318
2.通常通りインストールを進める
ブートローダの設定までは今まで通りに進める
3.GRUB の代わりに systemd-boot の設定
(1)bootctl のインストール
# bootctl install
(2) 起動エントリの指定
# nano /boot/loader/loader.conf
default arch
editor no
# nano /boot/loader/entries/arch.conf
title Arch Linux linux /vmlinuz-linux initrd /amd-ucode.img initrd /initramfs-linux.img options root=UUID=********-****-****-****-************ rw
※ UUID は blkid コマンドで調査し、コピペすればよい。
ほぼ同じ内容で
# nano /boot/loader/entries/arch-fallback.conf
title Arch Linux (fallback initramfs)
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux-fallback.img
options root=UUID=********-****-****-*-*********
rw
これまでの操作で /boot 以下のファイルの配置は次のとおりになる。
$ tree /boot
/boot
├── amd-ucode.img
├── EFI
│ ├── BOOT
│ │ └── BOOTX64.EFI
│ ├── Linux
│ └── systemd
│ └── systemd-bootx64.efi
├── initramfs-linux-fallback.img
├── initramfs-linux.img
├── loader
│ ├── entries
│ │ ├── arch.conf
│ │ └── arch-fallback.conf
│ ├── entries.srel
│ ├── keys
│ ├── loader.conf
│ └── random-seed
└── vmlinuz-linux
(3)自動更新
systemd-bootに更新があると、自動的に更新するようサービスを有効化します。
# systemctl enable systemd-boot-update
しかし、セキュアブートを有効にしている場合は更新のたびに
# nano /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 i; do sbsign --key /boot/loader/keyfile.key --cert /boot/loader/certificate.crt "$i"; done;'
Depends = sh
Depends = sbsigntools
NeedsTargets
なお、keyfile や certificte.crtはまだ作成していない(文鎮化が怖い)が、とりあえず起動に支障はないようだ。
警告: 一部のファームウェアは Microsoft の鍵で署名されており、セキュアブートが有効化されると Microsoft の鍵によって検証されます。デバイスが検証できないと、そのデバイスが文鎮化してしまう可能性があります。Microsoft の鍵抜きであなたの鍵を登録するには、
# sbctl enroll-keys
を実行してください。ただし、あなたが何をしようとしているのか理解している場合に限り、これを行ってください。ArchWikiより
その後は umount /mnt/boot /mnt 後にリブートすればよい。
Comments powered by CComment