创建 UEFI 安全启动 USB

来自 Alpine Linux
(重定向自 Create UEFI seureboot USB

本文解释了如何使用 parted 和 rEFInd 创建 UEFI 启动 USB。不幸的是,Alpine Linux 附带的 GRUB 版本无法工作,而 Gummiboot 仅在我测试的两台机器中的一台上工作。我将提交一个 rEFInd 软件包的 PR,并在给定时间的情况下更新这些说明以简化它们。

在本例中,我们将使用 /dev/sdX 和 $HOME。这将根据您的系统而有所不同。根据需要替换下面示例中的路径。

创建 GPT 启动分区

安装 parted

apk add parted

创建一个 UEFI 启动分区。

警告: 这将擦除您的 /dev/sdX 的所有内容。请确保您使用正确的设备。


parted --script /dev/sdX mklabel gpt parted --script --align=optimal /dev/sdX mkpart ESP fat32 1MiB 100% parted --script /dev/sdX set 1 boot on

创建 fat32 文件系统

创建一个名为 `Alpine` 的 fat32 系统。

mkfs.vfat -n ALPINE /dev/sdX1

复制 ISO 镜像内容到文件系统

可以挂载 iso 镜像并使用 cprsync 复制文件,也可以使用 7z 从 iso 中提取内容。在本例中,我将使用 uniso 实用程序,它来自 alpine-conf 软件包。

mount -t vfat /dev/sdX1 /mnt cd /mnt uniso < /path/to/alpine-3.8.2-x86_64.iso

创建 MOK 密钥

openssl req -new -x509 -newkey rsa:2048 -keyout $HOME/alpine_local.key -out $HOME/alpine_local.crt -nodes -days 3650 -subj "/CN=Alpine Local CA/" openssl x509 -in $HOME/alpine_local.crt -out $HOME/alpine_local.cer -outform DER

下载并安装 rEFInd

https://www.rodsbooks.com/refind/getting.html 下载 rEFInd 的二进制 zip 文件。在本例中,我们将使用当前版本的 rEFInd,refind-bin-0.11.4.zip。当您下载时,可能会有更新版本的 rEFInd 可用。

cd /mnt/efi/boot unzip /path/to/refind-bin-0.11.4.zip mv refind-bin-0.11.4/refind/* . rm -rf refind-bin-0.11.4

复制已签名的 shim

http://www.codon.org.uk/~mjg59/shim-signed/shim-signed-0.2.tgz[失效链接] 下载 Matthew J. Garrett 签名的 shim。在本例中,我们假设它存储在您的用户下载目录中。根据需要替换下面示例中的路径。

cd /mnt/efi/boot gunzip -c /path/to/shim-signed-0.2.tgz | tar x --strip-components=1 --no-same-owner

安装 Shim 和证书

cp $HOME/alpine_local.cer /mnt/efi/boot cp /mnt/efi/boot/refind_x64.efi /mnt/efi/boot/grubx64.efi cp /mnt/efi/boot/shim.efi /mnt/efi/boot/bootx64.efi

使用您的密钥签名 Bootloader 和内核

sbsign --key $HOME/alpine_local.key --cert $HOME/alpine_local.crt /mnt/efi/boot/grubx64.efi mv /mnt/efi/boot/grubx64.efi.signed /mnt/efi/boot/grubx64.efi sbsign --key $HOME/alpine_local.key --cert $HOME/alpine_local.crt /mnt/boot/vmlinuz-vanilla mv /mnt/boot/vmlinuz-vanilla.signed /mnt/boot/vmlinuz-vanilla

卸载分区

最后卸载磁盘

cd ~ && umount /mnt

安装密钥并注册哈希

将 USB 插入目标 PC 并启动。当提示时选择注册密钥,导航到 alpine_local.cer 并添加它。然后选择注册哈希,导航到 efi/boot/grubx64.efi 选择它并添加哈希。现在重新启动,如果运气好的话,它应该启动 Alpine。由于 refind 的二进制发行版已经使用作者的密钥签名,因此此步骤比需要的要复杂一些。一旦 rEFInd 被打包,它应该简化此步骤。