Create a Bootable Device: Difference between revisions

From Alpine Linux
(Added manual steps to create bootable USB)
(fixed typo, reverted the note)
 
(87 intermediate revisions by 23 users not shown)
Line 1: Line 1:
= Alpine on USB =
This page is about preparing customizable boot device using a writable filesystem i.e. non-iso9660 and the installation of Alpine Linux in [[Diskless Mode|diskless mode]] on it.  
== Manual Process ==
=== What you will need ===
* USB memory stick
* Computer
* Alpine Linux CD
CD images can be downloaded from the Alpine Linux Web site (http://wiki.alpinelinux.org).
=== Prepare to modify USB Stick ===
* Insert the Alpine Linux CD into a computer.
* Boot the computer from the Alpine Linux CD.
This step may require changes to the BIOS settings to select booting from CD.
* Login with the username '''root'''. No password is needed.
* Insert the USB stick into the computer.
* Determine the name Alpine Linux uses for your USB stick. The following step is one way to do this.


After inserting the USB stick, run the command: '''dmesg'''. At the end of this command you should see the name of your USB stick, likely starting with '''sd'''.
This allows <code>[[Alpine_local_backup|Local Backup Utility]](lbu)</code> utility to store local customizations using [[Diskless Mode#Apkovl|apkovl]] files and [[Diskless Mode#Local Package Cache|local package cache]] in the customizable boot device. It also allows upgrading the kernel modules and firmware, that is used to boot the diskless system, with the [[Diskless Mode#Upgrading_a_Diskless_System|update-kernel]] script.


The remainder of these instructions will assume that your USB device is called '''/dev/sda'''
{{Note|Some of these instructions are exclusively for x86_64 and x86. For ARM boards see [[Alpine_on_ARM#Preparing_installation_media|Alpine on ARM]].}}
=== Modify partitions ===
'''fdisk /dev/sda'''
* '''p''' Print list of partitions
* '''d''' Delete all partitions (this may take a few steps)
* '''n''' Create a new partition
* '''p''' A primary partition
* '''1''' Partition number 1
* Use defaults for first and last cylinder (just press [Enter]).
* '''t''' Change partition type
* '''c''' Type: Win95 FAT32 (LBA)
* '''a''' Make the partition bootable (set boot flag)
* '''1''' Partition number 1
* '''w''' Write your changes to the device


* Remove and reinsert your USB stick
== Requirements ==


=== Install Syslinux on device ===
* An Alpine Linux [[Installation#Preparing_installation_media|Installation Media]], can be CD/DVD/USB or an <code>.iso</code>file like <code>alpine-standard-{{AlpineLatest}}-x86_64.iso</code> or an compressed tarball file like <code>alpine-rpi-{{AlpineLatest}}-aarch64.tar.gz</code> containing the desired Alpine release ([https://alpinelinux.org/downloads/ Download]) on an existing Alpine Linux machine.
'''apk add syslinux dosfstools'''
* A device like an USB drive (flash, external HD, card reader, etc.) or a CF "CompactFlash", or SDcard which will be used as a customizable boot device.
'''dd if=/usr/share/syslinux/mbr.bin of=/dev/sda'''
  '''mkdosfs -F32 /dev/sda1'''
  '''syslinux /dev/sda1'''
=== Copy Alpine Linux to device ===
'''mount -t vfat /dev/sda1 /media/usb'''
'''cd /media/cdrom
'''cp -a * .alpine-release /media/usb'''
'''sync'''
=== Modify the syslinux.cfg file ===
* Change the line "default generic-hd" to say "default generic-usb".


== Automated Process ==
== Preparing customizable boot device ==
Starting (and apparently ending) with Alpine 1.9 alpha 13 we distribute both a .img file and a exe file containing USB images.


Please note that writing the Alpine 1.9 image to your USB stick will overwrite all its existing content.
[[Alpine_setup_scripts#setup-bootable|Setup-bootable]] script is the preferred method to create a directly customizable boot device on a FAT32 filesystem. For other filesystems refer [[#Manually copying Alpine files|Manually copying Alpine files]].  


The images are premade the same size as the .iso image + 8MB for an apk overlay. This means that no matter wither you have an 8GB memory stick or a 512MB memory stick, you will only have 8MB free when booting from it.
=== Using setup-bootable  ===


Download the latest Alpine 1.9:
Follow the below steps to use the <Code>Setup-bootable</Code> script to create a directly customizable boot device on a FAT32 filesystem. If you have an existing Alpine Linux machine and <code>iso</code> file, proceed directly to step 2.
* Linux users: [[Downloads|download]] .img file  containing Alpine ''(e.g. {{Latest_1.9_alpine_gz-mirror}}{{Latest_1.9_alpine_img-filename}})''
* Windows users: [[Downloads|download]] .img file containing Alpine ''(e.g. {{Latest_1.9_alpine_gz-mirror}}{{Latest_1.9_alpine_exe-filename}})''
* Get a USB-mem with at least 400MB of free space


=== Installing to media ===
# Complete the [[Installation|Installation]] until the [[Installation#Base_configuration|base configuration]] step by booting from an Alpine Linux [[Installation#Preparing_installation_media|Installation Media]]. Perform the initial execution of <Code>setup-alpine</Code> as described in the base configuration step answering "none" to all disk-related questions.
==== Linux users ====
# Ensure that customizable boot device is already plugged in or installed. Install the necessary tools to prepare the customizable bootable device so that it doesn't have weird stuff that affects later:{{Cmd|# apk add dosfstools wipefs util-linux}}
* Run the following command:
#: {{Warning|Do not proceed if you're unsure of device name or if you have valuable data on your USB drive.The instructions in this section use {{Path|/dev/sda}}. Alter the device name i.e {{Path|/dev/sda}} as needed. }}
  dd if=/path/to/img/file of=/dev/sdX
# Run <Code>lsblk</Code> to identify the device name for your bootable device. Let's say it's /dev/sda for this example, change as needed. Issue the below command to nuke EVERYTHING on the disk /dev/sda:{{Cmd|# wipefs --all /dev/sda}}
* Where sdX is your USB devive. You can find your USB device by inserting it into your computer and run the following command:
# [[Setting_up_disks_manually#Creating_partitions|Create a partition]] sda1 with the desired size, set the type to win95 fat, and set the bootable flag on it. [[Setting_up_disks_manually#Formatting_partitions|Format]] the newly created partition: {{cmd|# mkfs.vfat /dev/sda1}}
  dmesg
# Figure out where your install media files are mounted. if you run a {{ic|mount}} command, you should see a read only('''ro''') mount for something like '''/media/cdrom''' or '''/media/usb''' or something else, depending on your environment. Let's use '''/media/cdrom''' for the install media files  and '''/dev/sda1''' for the customizable boot device:{{Cmd|# setup-bootable -v /media/cdrom /dev/sda1}} Alternatively, if you have <code>.iso</code> file, issue the command: {{Cmd|# setup-bootable -v <code>alpine-standard-{{AlpineLatest}}-x86_64.iso</code> /dev/sda1}}
* This command will tell you the device name of your newly inserted USB device.
# Once the above steps are complete, [[Installation#Reboot|reboot]] the system with only the Customizable boot device inserted and Proceed to [[#Finishing diskless installation|Finishing diskless installation]] section to complete the diskless installation.
* Please note that most desktop environments automatically mounts inserted USB devices. You should unmount it before running the "dd" command above


==== Windows users ====
=== Manually copying Alpine files ===
[[{{ns:image}}:USB-extract.png]]
* Download the self extracting exe file (packaged with 7zip), and run it as administrator
* It will self exctract to a temporary location and launch an image writing program
[[{{ns:image}}:USB-write.png]]
* Select the removable drive letter you want to use, and click the "Write" button
* Wait until its finished, and you will have your usb drive ready to use.


== Boot Alpine ==
If you do not want to use <Code>Setup-bootable</Code> script or need non-FAT32 partitions, you can manually create a customizable boot device by manually copying Alpine Linux Files from the ISO/tarball and install the bootloader to make the device bootable.
Put your AlpineLinux-USB in a computer that can boot from USB.<BR>
'''''Note:''' You might need to change boot-order in your BIOS-settings in order to boot from USB.''


When your computer has booted you will get prompted for a username.<BR>
This method is written for copying files from an Alpine ISO file but also works for Alpine tarballs (.tar.gz files) with a one line tweak (see below).
On a clean AlpineLinux you just enter ''root'' and no password and you will get logged on to your Alpine linux.


{{Installing_Alpine_see_also}}
# Install some prerequisites. (If you're not currently using Alpine Linux then you probably have these installed already, otherwise you'll have to figure out how to install them.)
#: {{Cmd|apk add dosfstools syslinux}}
# Set the environment variable 'mydev' to the [https://en.wikipedia.org/wiki/Device_file device file] name of the USB stick that Alpine Linux is to be installed to:
#: {{Warning | BE SURE TO GET THIS RIGHT OR ELSE YOU COULD OVERWRITE THE WRONG DISK! }}
#: {{Note|If USB stick's device name ends in a digit, you might have to replace all instances of <code>${mydev}1</code> with <code>${mydev}p1</code> below.}}
#: {{Cmd|<nowiki>mydev=/dev/sda</nowiki>}}
# Make sure that the target drive's existing partitions, if any, are not mounted:
#: {{Cmd|umount -q $mydev?}}
# Copy and paste the following as a single command to wipe the target drive, create an MBR partition table, and create a single FAT32 partition (you can ignore any "Partition #1 contains a vfat signature." warning message):
#: {{Cmd|<nowiki>fdisk -w always $mydev <<EOF
  o
  n
  p
  1
  2048
  -0
  t
  0c
  a
  w
EOF</nowiki>}}
# Format the new FAT32 partition with a FAT32 filesystem:
#: {{Cmd|<nowiki>mkdosfs -F32 ${mydev}1</nowiki>}}
# Copy the [https://wiki.syslinux.org/wiki/index.php?title=Mbr syslinux executable boot code] into the bootstrap code area of the MBR boot sector (if you're not currently using Alpine Linux you may need to adjust the path to syslinux's mbr.bin file):
#: {{Cmd|<nowiki>dd bs=440 count=1 conv=notrunc if=/usr/share/syslinux/mbr.bin of=$mydev</nowiki>}}
# Install the syslinux bootloader files onto the FAT32 filesystem. (Ignore the "Hidden (2048) does not match sectors (62)" messages - modern systems use the partition table. If you are getting "no previous syslinux boot sector found" error, try adding <code>--install</code> flag):
#: {{Cmd|syslinux ${mydev}1}}
# Copy the Alpine files to the FAT32 filesystem (to copy the contents of an Alpine {{Path|.tar.gz}} tarball instead, see next item):
#: {{Cmd|<nowiki>mydevname=$(basename $mydev)1
mkdir -p /media/$mydevname
mount -t vfat ${mydev}1 /media/$mydevname
cp -aT /media/cdrom /media/$mydevname  # -T to copy hidden files
umount /media/$mydevname</nowiki>}}
# If you instead want to copy the contents of an Alpine {{Path|.tar.gz}} tarball, do this:
#: {{Cmd|<nowiki>mydevname=$(basename $mydev)1
mytarball=/path/to/alpine-tarball.tar.gz
mkdir -p /media/$mydevname
mount -t vfat ${mydev}1 /media/$mydevname
tar -p -s --atime-preserve --same-owner --one-top-level=/media/$mydevname -zxvf $mytarball
umount /media/$mydevname</nowiki>}}
# (''Optional'') Remove any .apkovl overlay files that were transferred as part of the copy process. Do this if you want an unmodified, vanilla install.
#: {{Cmd|<nowiki>mount -t vfat ${mydev}1 /media/$mydevname
rm /media/$mydevname/*.apkovl.tar.gz
umount /media/$mydevname</nowiki>}}
# Proceed to [[#Finishing diskless installation|Finishing diskless installation]] section to complete the diskless installation.
 
== Finishing diskless installation ==
 
Boot using the customizable boot device i.e previously created Alpine Linux bootable USB medium. Prepare customizable boot device to hold local customizations before running the <code>setup-alpine</Code> script to finish the installation.
First find out where booted USB media is mounted, the location could vary.
# mount | grep /media
/dev/sda1 on /media/sda1 type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro)
Create local directory on USB media to hold [[Local_APK_cache|Local Package Cache]] for storing the apk files.
 
# mount -o remount,rw /media/sda1
# mkdir /media/sda1/cache
# setup-apkcache /media/sda1/cache
# ls -l /etc/apk/cache
lrwxrwxrwx    1 root    root            17 Oct 19 13:16 /etc/apk/cache -> /media/sda1/cache
 
Run <code>setup-alpine</Code> once again to complete the [[#Installation_Step_Details|Installation]] until the [[#Base_configuration|base configuration]] step. When the ''' Disk & Install''' option appears, accept the choices as follows:{{Cmd|<nowiki>Which disk(s) would you like to use? (or '?' for help or 'none') [none]
Enter where to store configs ('floppy', 'sda1', 'usb' or 'none') [sda1]:
Enter apk cache directory (or '?' or 'none') [/media/sda1/cache]:</nowiki>}}
 
After the installer finished you can see how many created/modified files are detected and will be added to the backup:
# lbu status
# lbu status | wc -l
59
# lbu commit
# ls -l /media/sda1/*apkovl.tar.gz
-rwxr-xr-x    1 root    root          9591 Oct 19 15:23 /media/sda1/foo.apkovl.tar.gz
 
Now all the customization are saved into the ''foo.apkovl.tar.gz'' compressed tarball on the customizable boot device itself.
 
Test/verify by rebooting and seeing that your alpine setup is preserved in the customizable boot device.
 
== Troubleshooting ==
 
=== Wrong Device Name ===
 
If you cannot boot from the boot device 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 {{Path|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 <code>cat /proc/partitions</code> to see the available disks (i.e. 'sda' or 'sdb')
 
===Non-FAT32 Filesystems  ===
 
When the boot device is formatted with a filesystem other than those supported by default, the necessary initfs features need to be added to the modloop using [[Diskless_Mode#Upgrading_a_Diskless_System|<code>update-kernel</code>]] script.
 
Mount the boot device and edit the {{Path|syslinux.cfg}} file.
 
Then locate the "append" line, and change the <code>alpine_dev=</code> setting to match the used filesystem and add the filesystem's kernel module to the <code>modules=</code> list.
 
For example, change
append [...] alpine_dev=usbdisk:vfat modules=loop,cramfs,sd-mod,usb-storage quiet
to
append [...] alpine_dev=usbdisk:'''ext4''' modules=loop,cramfs,sd-mod,usb-storage''',ext4''' quiet
in the case of an ext4 formatted partition. (Or correspondingly for other filesystems, if they are supported by syslinux and the Alpine Linux kernel.)
 
=== Slow USB Devices ===
 
Specifying the 'waitusb=X' option at the end of the syslinux.cfg line might help with certain USB devices that take a bit longer to register. X stands for the amount of seconds kernel will wait before looking for the installation media.
append initrd=/boot/grsec.gz alpine_dev=usbdisk:vfat modules=loop,cramfs,sd-mod,usb-storage quiet '''waitusb=3'''
 
=== CF card readers ===
 
Some CF card readers have problems with the faster CF cards on the market. If you experience problems booting the CF card even after checking BIOS settings, you may need to use an older card.
 
Also, 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 ==
* [[Diskless Mode]]
* [[Local APK cache|Local Package Cache]]
* [[Alpine local backup]]
* [[Diskless_Mode#Upgrading_a_Diskless_System|<code>update-kernel</code> script]]
 
[[Category:Installation]][[Category:Diskless]]

Latest revision as of 10:06, 28 March 2025

This page is about preparing customizable boot device using a writable filesystem i.e. non-iso9660 and the installation of Alpine Linux in diskless mode on it.

This allows Local Backup Utility(lbu) utility to store local customizations using apkovl files and local package cache in the customizable boot device. It also allows upgrading the kernel modules and firmware, that is used to boot the diskless system, with the update-kernel script.

Note: Some of these instructions are exclusively for x86_64 and x86. For ARM boards see Alpine on ARM.

Requirements

  • An Alpine Linux Installation Media, can be CD/DVD/USB or an .isofile like alpine-standard-3.22.1-x86_64.iso or an compressed tarball file like alpine-rpi-3.22.1-aarch64.tar.gz containing the desired Alpine release (Download) on an existing Alpine Linux machine.
  • A device like an USB drive (flash, external HD, card reader, etc.) or a CF "CompactFlash", or SDcard which will be used as a customizable boot device.

Preparing customizable boot device

Setup-bootable script is the preferred method to create a directly customizable boot device on a FAT32 filesystem. For other filesystems refer Manually copying Alpine files.

Using setup-bootable

Follow the below steps to use the Setup-bootable script to create a directly customizable boot device on a FAT32 filesystem. If you have an existing Alpine Linux machine and iso file, proceed directly to step 2.

  1. Complete the Installation until the base configuration step by booting from an Alpine Linux Installation Media. Perform the initial execution of setup-alpine as described in the base configuration step answering "none" to all disk-related questions.
  2. Ensure that customizable boot device is already plugged in or installed. Install the necessary tools to prepare the customizable bootable device so that it doesn't have weird stuff that affects later:

    # apk add dosfstools wipefs util-linux

    Warning: Do not proceed if you're unsure of device name or if you have valuable data on your USB drive.The instructions in this section use /dev/sda. Alter the device name i.e /dev/sda as needed.

  3. Run lsblk to identify the device name for your bootable device. Let's say it's /dev/sda for this example, change as needed. Issue the below command to nuke EVERYTHING on the disk /dev/sda:

    # wipefs --all /dev/sda

  4. Create a partition sda1 with the desired size, set the type to win95 fat, and set the bootable flag on it. Format the newly created partition:

    # mkfs.vfat /dev/sda1

  5. Figure out where your install media files are mounted. if you run a mount command, you should see a read only(ro) mount for something like /media/cdrom or /media/usb or something else, depending on your environment. Let's use /media/cdrom for the install media files and /dev/sda1 for the customizable boot device:

    # setup-bootable -v /media/cdrom /dev/sda1

    Alternatively, if you have .iso file, issue the command:

    # setup-bootable -v alpine-standard-3.22.1-x86_64.iso /dev/sda1

  6. Once the above steps are complete, reboot the system with only the Customizable boot device inserted and Proceed to Finishing diskless installation section to complete the diskless installation.

Manually copying Alpine files

If you do not want to use Setup-bootable script or need non-FAT32 partitions, you can manually create a customizable boot device by manually copying Alpine Linux Files from the ISO/tarball and install the bootloader to make the device bootable.

This method is written for copying files from an Alpine ISO file but also works for Alpine tarballs (.tar.gz files) with a one line tweak (see below).

  1. Install some prerequisites. (If you're not currently using Alpine Linux then you probably have these installed already, otherwise you'll have to figure out how to install them.)

    apk add dosfstools syslinux

  2. Set the environment variable 'mydev' to the device file name of the USB stick that Alpine Linux is to be installed to:
    Warning: BE SURE TO GET THIS RIGHT OR ELSE YOU COULD OVERWRITE THE WRONG DISK!

    Note: If USB stick's device name ends in a digit, you might have to replace all instances of ${mydev}1 with ${mydev}p1 below.

    mydev=/dev/sda

  3. Make sure that the target drive's existing partitions, if any, are not mounted:

    umount -q $mydev?

  4. Copy and paste the following as a single command to wipe the target drive, create an MBR partition table, and create a single FAT32 partition (you can ignore any "Partition #1 contains a vfat signature." warning message):

    fdisk -w always $mydev <<EOF o n p 1 2048 -0 t 0c a w EOF

  5. Format the new FAT32 partition with a FAT32 filesystem:

    mkdosfs -F32 ${mydev}1

  6. Copy the syslinux executable boot code into the bootstrap code area of the MBR boot sector (if you're not currently using Alpine Linux you may need to adjust the path to syslinux's mbr.bin file):

    dd bs=440 count=1 conv=notrunc if=/usr/share/syslinux/mbr.bin of=$mydev

  7. Install the syslinux bootloader files onto the FAT32 filesystem. (Ignore the "Hidden (2048) does not match sectors (62)" messages - modern systems use the partition table. If you are getting "no previous syslinux boot sector found" error, try adding --install flag):

    syslinux ${mydev}1

  8. Copy the Alpine files to the FAT32 filesystem (to copy the contents of an Alpine .tar.gz tarball instead, see next item):

    mydevname=$(basename $mydev)1 mkdir -p /media/$mydevname mount -t vfat ${mydev}1 /media/$mydevname cp -aT /media/cdrom /media/$mydevname # -T to copy hidden files umount /media/$mydevname

  9. If you instead want to copy the contents of an Alpine .tar.gz tarball, do this:

    mydevname=$(basename $mydev)1 mytarball=/path/to/alpine-tarball.tar.gz mkdir -p /media/$mydevname mount -t vfat ${mydev}1 /media/$mydevname tar -p -s --atime-preserve --same-owner --one-top-level=/media/$mydevname -zxvf $mytarball umount /media/$mydevname

  10. (Optional) Remove any .apkovl overlay files that were transferred as part of the copy process. Do this if you want an unmodified, vanilla install.

    mount -t vfat ${mydev}1 /media/$mydevname rm /media/$mydevname/*.apkovl.tar.gz umount /media/$mydevname

  11. Proceed to Finishing diskless installation section to complete the diskless installation.

Finishing diskless installation

Boot using the customizable boot device i.e previously created Alpine Linux bootable USB medium. Prepare customizable boot device to hold local customizations before running the setup-alpine script to finish the installation.

First find out where booted USB media is mounted, the location could vary.

# mount | grep /media
/dev/sda1 on /media/sda1 type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro)

Create local directory on USB media to hold Local Package Cache for storing the apk files.

# mount -o remount,rw /media/sda1
# mkdir /media/sda1/cache
# setup-apkcache /media/sda1/cache
# ls -l /etc/apk/cache
lrwxrwxrwx    1 root     root            17 Oct 19 13:16 /etc/apk/cache -> /media/sda1/cache

Run setup-alpine once again to complete the Installation until the base configuration step. When the Disk & Install option appears, accept the choices as follows:

Which disk(s) would you like to use? (or '?' for help or 'none') [none] Enter where to store configs ('floppy', 'sda1', 'usb' or 'none') [sda1]: Enter apk cache directory (or '?' or 'none') [/media/sda1/cache]:

After the installer finished you can see how many created/modified files are detected and will be added to the backup:

# lbu status
# lbu status | wc -l
59
# lbu commit
# ls -l /media/sda1/*apkovl.tar.gz
-rwxr-xr-x    1 root     root          9591 Oct 19 15:23 /media/sda1/foo.apkovl.tar.gz

Now all the customization are saved into the foo.apkovl.tar.gz compressed tarball on the customizable boot device itself.

Test/verify by rebooting and seeing that your alpine setup is preserved in the customizable boot device.

Troubleshooting

Wrong Device Name

If you cannot boot from the boot device 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 the boot device is formatted with a filesystem other than those supported by default, the necessary initfs features need to be added to the modloop using update-kernel script.

Mount the boot device and edit the syslinux.cfg file.

Then locate the "append" line, and change the alpine_dev= setting to match the used filesystem and add the filesystem's kernel module to the modules= list.

For example, change

append [...] alpine_dev=usbdisk:vfat modules=loop,cramfs,sd-mod,usb-storage quiet

to

append [...] alpine_dev=usbdisk:ext4 modules=loop,cramfs,sd-mod,usb-storage,ext4 quiet

in the case of an ext4 formatted partition. (Or correspondingly for other filesystems, if they are supported by syslinux and the Alpine Linux kernel.)

Slow USB Devices

Specifying the 'waitusb=X' option at the end of the syslinux.cfg line might help with certain USB devices that take a bit longer to register. X stands for the amount of seconds kernel will wait before looking for the installation media.

append initrd=/boot/grsec.gz alpine_dev=usbdisk:vfat modules=loop,cramfs,sd-mod,usb-storage quiet waitusb=3

CF card readers

Some CF card readers have problems with the faster CF cards on the market. If you experience problems booting the CF card even after checking BIOS settings, you may need to use an older card.

Also, 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