<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dallbee</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dallbee"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Dallbee"/>
	<updated>2026-05-05T17:00:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Bootloaders&amp;diff=19577</id>
		<title>Bootloaders</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Bootloaders&amp;diff=19577"/>
		<updated>2021-06-01T03:13:02Z</updated>

		<summary type="html">&lt;p&gt;Dallbee: Added details on using EFI Boot Stub for loading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page shows the basic steps you need to perform, if you for any reason want to switch bootloaders or apply some manual configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rEFInd&amp;lt;/code&amp;gt; is an easy to use EFI boot menu that allows booting different operating systems.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;Syslinux&amp;lt;/code&amp;gt; is the default light-weight bootloader used in Alpine.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;Grub&amp;lt;/code&amp;gt; is a standard linux boot loader.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;EFI Boot Stub&amp;lt;/code&amp;gt; allows booting linux directly from a motherboard supporting UEFI or another bootloader.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= rEFIind =&lt;br /&gt;
&lt;br /&gt;
For (U)EFI systems, the &amp;lt;code&amp;gt;refind&amp;lt;/code&amp;gt; package can provide a graphical EFI boot menu that allows to boot operating systems that are found on the available partitions.&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;refind&amp;lt;/code&amp;gt; is not yet available in the used alpine release, it may be installed in another dual/multi-booted linux distribution.&lt;br /&gt;
&lt;br /&gt;
For example, with a Debian based distribution, it can be installed to the EFI partition like this:&lt;br /&gt;
 &lt;br /&gt;
 apt install refind             # installs the debian package&lt;br /&gt;
 refind-install --alldrivers    # installs refind to the EFI partitioon&lt;br /&gt;
&lt;br /&gt;
(The --alldrivers option includes all filesystem drivers instead of only the one needed to load the currently running kernel, to allow finding and booting operating systems from more partitions.)&lt;br /&gt;
&lt;br /&gt;
And a first (default) boot menu line needs to be configured with Alpine&#039;s default boot parameters. Assuming the bootable partition is mounted at &amp;lt;code&amp;gt;/media/sdXY&amp;lt;/code&amp;gt; it can be done like this (at time of writing):&lt;br /&gt;
 echo &#039;&amp;quot;Alpine&amp;quot; &amp;quot;modules=loop,squashfs,sd-mod,usb-storage quiet initrd=\boot\intel-ucode.img initrd=\boot\amd-ucode.img initrd=\boot\initramfs-lts&amp;quot;&#039; &amp;gt; /media/sdXY/boot/refind_linux.conf&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
&lt;br /&gt;
# At the time of writing, it was still needed to use backslashes in the .conf file. &lt;br /&gt;
# The path in the config file needs to be relative to the partition that the kernel resides on. If &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; resides on its own separate partition, then &amp;lt;code&amp;gt;\boot&amp;lt;/code&amp;gt; needs to be removed from the paths.                                                                                               }}&lt;br /&gt;
&lt;br /&gt;
= Installing Syslinux =&lt;br /&gt;
&lt;br /&gt;
If you want to switch from another bootloader back to Syslinux, or if you for some reason want to install Syslinux manually, the following steps are required.&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;syslinux&amp;lt;/code&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apk add syslinux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using GPT partitions, install the GPT MBR onto the drive you want to install the bootloader on (in this case &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dd bs=440 count=1 conv=notrunc if=/usr/share/syslinux/gptmbr.bin of=/dev/sda&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or if you&#039;re using DOS partitions, install the DOS MBR instead:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dd bs=440 count=1 conv=notrunc if=/usr/share/syslinux/mbr.bin of=/dev/sda&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- See also: http://www.syslinux.org/wiki/index.php?title=Mbr --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next install the required Syslinux binaries. Despite being called &amp;lt;code&amp;gt;extlinux&amp;lt;/code&amp;gt;, Syslinux supports booting from FAT12/16/32, NTFS, ext2/3/4, Btrfs, XFS, and UFS/FFS filesystems.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;extlinux --install /boot&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The configuration file is located in &amp;lt;code&amp;gt;/boot/extlinux.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
Alpine ships with a script called &amp;lt;code&amp;gt;update-extlinux&amp;lt;/code&amp;gt; which automatically (re)generates this file, for example on updates to Syslinux.&lt;br /&gt;
The settings for this script can be found in &amp;lt;code&amp;gt;/etc/update-extlinux.conf&amp;lt;/code&amp;gt;, including the option to disable automatic overwriting of &amp;lt;code&amp;gt;/boot/extlinux.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
You can also place additional menu entries in the &amp;lt;code&amp;gt;/etc/update-extlinux.d/&amp;lt;/code&amp;gt; directory, e.g. for dual booting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EFI ==&lt;br /&gt;
&lt;br /&gt;
{{Todo|Work in progress. This should at least get you started.}}&lt;br /&gt;
&lt;br /&gt;
Assuming &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; is a FAT32 partition of type EF00 and &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; belongs to the rootfs created after running &amp;lt;code&amp;gt;setup-disk&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /mnt/EFI/syslinux&lt;br /&gt;
cp /usr/share/syslinux/efi64/* /mnt/EFI/syslinux/&lt;br /&gt;
cp /boot/extlinux.conf /mnt/EFI/syslinux/syslinux.cfg&lt;br /&gt;
cp /boot/vmlinuz* /mnt/&lt;br /&gt;
cp /boot/initramfs* /mnt/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may need to modify &amp;lt;code&amp;gt;/mnt/EFI/syslinux/syslinux.cfg&amp;lt;/code&amp;gt; to change the paths to absolute paths (just add a / in front of the vmlinuz/initramfs entries),&lt;br /&gt;
or copy the files to &amp;lt;code&amp;gt;/mnt/EFI/syslinux&amp;lt;/code&amp;gt; instead (XXX: untested).&lt;br /&gt;
&lt;br /&gt;
= GRUB =&lt;br /&gt;
&lt;br /&gt;
To install GRUB in BIOS mode, (optionally) remove the Syslinux package and install the required GRUB packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apk del syslinux&lt;br /&gt;
apk add grub grub-bios&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For EFI, install Grub&#039;s EFI package instead. Note that &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; has to be an EFI compatible filesystem like FAT32.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apk add grub-efi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next install the MBR and GRUB binaries to disk for BIOS mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install /dev/vda&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For EFI mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --target=x86_64-efi --efi-directory=/boot&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GRUB ships with an automatic config generator, including some automatic detection of other operating systems installed on the device:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-mkconfig -o /boot/grub/grub.cfg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This script can be configured via the &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt; file.&lt;br /&gt;
See [https://www.gnu.org/software/grub/manual/html_node/Simple-configuration.html] for a list of available options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= EFI Boot Stub =&lt;br /&gt;
&lt;br /&gt;
To boot directly from your motherboard&#039;s UEFI boot menu, a boot entry needs&lt;br /&gt;
to be created with either a UEFI shell or &#039;&#039;efibootmgr&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== efibootmgr ==&lt;br /&gt;
&lt;br /&gt;
Install efibootmgr:&lt;br /&gt;
&amp;lt;pre&amp;gt;apk add efibootmgr&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a boot entry. It&#039;s recommended to do this in a script, as efibootmgr&lt;br /&gt;
does not allow editing entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
params=&amp;quot;root=/dev/sda3 rw \&lt;br /&gt;
  initrd=intel_ucode.img \&lt;br /&gt;
  initrd=initramfs-lts \&lt;br /&gt;
  modules=sd-mod,usb-storage,ext4 \&lt;br /&gt;
  quiet&amp;quot;&lt;br /&gt;
&lt;br /&gt;
efibootmgr --create --label &amp;quot;Alpine Linux&amp;quot; \&lt;br /&gt;
  --disk /dev/sda --part 1 \&lt;br /&gt;
  --loader /vmlinuz-lts \&lt;br /&gt;
  --unicode &amp;quot;${params}&amp;quot; \&lt;br /&gt;
  --verbose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; contains the EFI partition and &amp;lt;code&amp;gt;/dev/sda3&amp;lt;/code&amp;gt; contains the root partition.&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
The kernel contains the [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n254 exhaustive list] of ways to specify the block device. For a more robust boot entry, it is recommended to use a persistent name such as the PARTUUID.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Optionally, set the newly created entry as the default:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;efibootmgr -n XXXX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;code&amp;gt;XXXX&amp;lt;/code&amp;gt; is the boot number of the new entry.&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
The loader and initrd file arguments are relative to the EFI partition. In a default installation, alpine places these files in &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt;, while EFI is mounted to &amp;lt;code&amp;gt;/boot/efi/&amp;lt;/code&amp;gt;. You can either update fstab to mount EFI at &amp;lt;code&amp;gt;/boot/&amp;lt;/code&amp;gt;, or manually copy them to &amp;lt;code&amp;gt;/boot/efi/&amp;lt;/code&amp;gt;.                                                                                           }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= External Links =&lt;br /&gt;
* [https://www.denx.de/wiki/U-Boot/ReleaseCycle U-Boot Release Cycle]&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:Booting]]&lt;/div&gt;</summary>
		<author><name>Dallbee</name></author>
	</entry>
</feed>