Difference between revisions of "Create UEFI boot USB"

From Alpine Linux
Jump to: navigation, search
(Create configuration files for boot loader: loader directory is not under EFI)
(make boot partition 512MiB only)
Line 12: Line 12:
{{Cmd | parted --script /dev/sdX mklabel gpt}}
{{Cmd | parted --script /dev/sdX mklabel gpt}}
{{Cmd | parted --script --align{{=}}optimal /dev/sdX mkpart ESP fat32 1MiB 100% }}
{{Cmd | parted --script --align{{=}}optimal /dev/sdX mkpart ESP fat32 1MiB 512MiB }}
{{Cmd | parted --script /dev/sdX set 1 boot on }}
{{Cmd | parted --script /dev/sdX set 1 boot on }}

Revision as of 16:17, 15 June 2016

This article explains how to create an UEFI boot USB with parted and gummiboot.

In this example we will use `/dev/sdX`. This will be different depending on your system.

Create GPT boot partition

Install 'parted'

apk add parted

Create a single UEFI boot partitions.

Warning: this will erase all content of your `/dev/sdX`. Make sure that you use correct device

parted --script /dev/sdX mklabel gpt

parted --script --align=optimal /dev/sdX mkpart ESP fat32 1MiB 512MiB

parted --script /dev/sdX set 1 boot on

Create fat32 filesystem

Create a fat32 system with the name `Alpine`.

mkfs.vfat -n Alpine /dev/sdX1

Copy content of ISO image to filesystem

It is possible to mount the iso image and copy files with `cp` or `rsync` and it is also possible to use `7z` to extract content from the iso. In this example I will use the `uniso` utility from alpine-conf package.

mount -t vfat /dev/sdX1 /mnt

cd /mnt && uniso < /path/to/alpine-3.4.0-x86_64.iso

Copy gummiboot efi binary

UEFI will look for a EFI/bootx64.efi as a fallback efi loader. We copy gummibootx64.efi to this location.

mkdir -p /mnt/EFI/Boot

apk add gummiboot

cp /usr/lib/gummiboot/gummibootx64.efi /mnt/EFI/Boot/bootx64.efi

Create configuration files for boot loader

We need create some configuration files for gummiboot.

mkdir -p loader/entries

Contents of loader/loader.conf

default grsec timeout 4

The options are taken from boot/syslinux/syslinux.cfg

Contents of loader/entries/grsec.conf

title Alpine Linux linux /boot/vmlinuz-grsec initrd /boot/initramfs-grsec options modloop=/boot/modloop-grsec modules=loop,squashfs,sd-mod,usb-storage quiet

Finally umount the disk

cd ~ && umount /mnt