Create a Bootable Compact Flash
This process applies to Alpine Linux 1.9.0 or later, and results in a run-from-ram style installation.
Contents
Requirements
In order to follow this document, you will need:
- Alpine Linux CD-ROM (Download a .iso file containing an Alpine release.)
- Computer with CF card reader
- CF card
The following part describes various ways how to create bootable USB stick with Alpine Linux.
Clone ISO image content to USB stick (Alpine Linux from 3.3.0 and later)
From Alpine Linux 3.3.0, the generated ISO's are a hybridISO, which means they contain a valid MBR and can be raw copied directly to the USB stick, Hard Drive (If you really know what you're doing), or burnt to a CD/DVD.
If the USB stick is in a Unix/Linux/OSX system, you will need to find out what the USB device is. There are various utilities to determine the device name (e.g. /dev/sdx) for your USB device. One way is:
$ sudo fdisk -l
If it is still unclear which is your USB's device name, in Linux you could try sudo lsblk -a
; or use parted (sudo parted -l
).
Then, in order to dd the iso, ensure that your usb drive is not mounted, as various desktop environments automatically mount usb pen drives:
$ sudo umount /dev/sdx
Next, change to the directory where your Alpine .iso file is located, for example:
$ cd ~/Downloads

Then you can use dd to copy the iso to it. Change alpine.iso
in the following command to the name of your .iso file; and change /dev/sdx
to the name of your pen drive's device name. The following command may take a few minutes to execute:
$ sudo dd if=alpine.iso of=/dev/sdx && sync
Copy ISO content to USB stick as individual files

The following procedure is for Alpine Linux distribution itself, if you are using other Linux distro or other operating system you should know the best how to install syslinux and where mbr.bin file is located on your filesystem.
- If you created a new partition above, format the CF Card with a FAT32 filesystem (replacing sda with your CF Card name):
apk add dosfstools
mkdosfs -F32 /dev/sda1
- Install syslinux and MBR (replacing sda with your CF Card name):
apk add syslinux
dd if=/usr/share/syslinux/mbr.bin of=/dev/sda
syslinux /dev/sda1
- Copy the files to the CF Card (replacing sda with your CF Card name):
mkdir -p /media/sda1 mount -t vfat /dev/sda1 /media/sda1 cd /media/cdrom cp -a .alpine-release * /media/sda1/ umount /media/sda1
- (Optional) Remove any apkovl files that were transfered as part of the copy process. This should be done if you wish to have a fresh install. Replace sda with your CF Card name)
mount -t vfat /dev/sda1 /media/sda1 rm /media/sda1/*.apkovl.tar.gz umount /media/sda1
Create bootable USB stick from ISO on Windows
Additionally to the method above for Linux systems, there is also the Rufus program available, which allows writing such bootable USB flash drives under Windows.
- Partition scheme:
MBR
- Target system:
BIOS or UEFI
- File system:
FAT32
- Cluster size:
4096 bytes (default)
Troubleshooting
Wrong Device Name
If you cannot boot from the CF Card and you see something like:
Mounting boot media failed. initramfs emergency recovery shell launched. Type 'exit' to continue boot
then it is likely that the device name in syslinux.cfg is wrong. You should replace the device name in this line:
append initrd=/boot/grsec.gz alpine_dev=usbdisk:vfat modules=loop,cramfs,sd-mod,usb-storage quiet
with the proper device name.
- For boot from USB, the device name should be 'usbdisk' (as shown above)
- For other options, you can run
cat /proc/partitions
to see the available disks (i.e. 'sda' or 'sdb')
Non-FAT32 Filesystems
When your CF Card is formatted with a filesystem other than FAT32, you might have to specify the necessary filesystem modules in the boot parameters.
To do so, mount the CF Card and change the syslinux.cfg file line from
append initrd=/boot/grsec.gz alpine_dev=usbdisk:vfat modules=loop,cramfs,sd-mod,usb-storage quiet
to
append initrd=/boot/grsec.gz alpine_dev=usbdisk:ext3 modules=loop,cramfs,sd-mod,usb-storage,ext3 quiet
in the case of an ext3 formatted partition. A similar procedure might apply to other filesystems (if they are supported by syslinux and the Alpine Linux kernel).
DMA Support
Many CF card readers don't support DMA correctly, so you may need to add nodma to the append line of the syslinux.cfg file.
See Also
Alpine Linux has some special applications that helps you to use it in the way you want.
Some of the first scripts you are suggested to use is:
- setup-alpine (Configures all basic things on your Alpine Linux)
- setup-acf (was named setup-webconf before Alpine 1.9 beta 4) (Configures ACF (webconfiguration) so you can manage your box through https)
Other useful pages
- Configure Networking
- Setting up a ssh-server (Using ssh is a good way to administer your box remotely)
- Package Management (apk) (How to add/remove packages on your Alpine)
- Init System (rc) (Configure a service to automatically boot at next reboot)
- Alpine local backup (lbu) (Permanently store your modifications in case your box needs reboot)