Windowsのセキュアブートがブート時に外部OSローダーコードを実行できないように、Linuxにも同様のオプションがありますか?私は周りを見回しましたが、検索すると、UEFI対応のWindowsマシンにLinuxをインストールする方法しか得られません。このオプションをLinuxマシンに導入する方法がわかりません。
セキュアブートを機能させるには、ハードウェアがセキュアブートをサポートし、OSがセキュアブートをサポートする必要があります。
ハードウェアの場合、UEFI設定メニューでチェックインでき、OSによって提供される証明書/キーを追加する必要があります
OSの場合、次のコマンドでサポートを確認できます。
[root@secureboot-guest ~]# cat /sys/kernel/security/securelevel
上記のコマンドの出力が「1」の場合、セキュアブートがサポートされており、OSによって有効になっています。
最初に、独自のキーを生成します
openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509\ -subj "/ CN = Kernel Key" -outform DER -out kernel.der\ -keyout kernel.key
CONFIG_EFI_STUBを使用してLinuxカーネルをコンパイルし、initramfsをそこに埋め込んで、以下の説明に従ってください。 https://prosauce.org/blog/2015/10/31/booting-linux-securely 次のスクリプトを使用:
/usr/src/linux-headers-$(uname -r)/ scripts/sign-file sha256 kernel.key kernel.der module.ko
次に、ラップトップ\ワークステーション用のカーネルcmdlineを含むファイルを作成し、1つのイメージを作成して、次のようにefiブートディレクトリにコピーします。
#objcopy\ --add-section .osrel =/etc/os-release --change-section-vma .osrel = 0x20000\ --add-section。 cmdline =/tmp/cmdline --change-section-vma .cmdline = 0x30000\ --add-section .linux =/boot/vmlinuz --change-section-vma .linux = 0x2000000\ --add-section .initrd =/boot/initrd.img --change-section-vma .initrd = 0x3000000\ /usr/lib/systemd/boot/efi/linuxx64.efi.stub linux .efi #mkdir -p /boot/efi/EFI/BOOT # sbsign --key /root/keys/ISK.key --cert /root/keys/ISK.pem --output /boot/efi/EFI/BOOT/BOOTX64.EFI linux.efi /boot/efi/EFI/BOOT/BOOTX64.EFI
独自のキーをMBファームウェアにインストールするには、次のようなコマンドを実行できます。
openssl x509 -inform der -in kernel.der -outform pem -out kernel.pem cert-to-efi-sig-list -g "$(uuidgen)" kernel.pem kernel。 esl sign-efi-sig-list -k KEK.key -c KEK.pem kernel kernel.esl kernel.auth