创建 UEFI 安全启动 USB
本文解释了如何使用 parted 和 rEFInd 创建 UEFI 启动 USB。不幸的是,Alpine Linux 附带的 GRUB 版本无法工作,而 Gummiboot 仅在我测试的两台机器中的一台上工作。我将提交一个 rEFInd 软件包的 PR,并在给定时间的情况下更新这些说明以简化它们。
在本例中,我们将使用 /dev/sdX 和 $HOME。这将根据您的系统而有所不同。根据需要替换下面示例中的路径。
创建 GPT 启动分区
安装 parted
apk add parted
创建一个 UEFI 启动分区。

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 镜像并使用 cp 或 rsync 复制文件,也可以使用 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 被打包,它应该简化此步骤。