4.3. Preparing Files for USB Memory Stick Booting

To prepare the USB stick, you will need a system where GNU/Linux is
already running and where USB is supported. With current GNU/Linux systems
the USB stick should be automatically recognized when you insert it. If
it is not you should check that the usb-storage kernel module is loaded.
When the USB stick is inserted, it will be mapped to a device named
/dev/sdX, where the “X” is a letter
in the range a-z. You should be able to see to which device the USB
stick was mapped by running the command dmesg after
inserting it. To write to your stick, you may have to turn off its write
protection switch.

Warning

The procedures described in this section will destroy anything already
on the device! Make very sure that you use the correct device name for
your USB stick. If you use the wrong device the result could be that all
information on for example a hard disk could be lost.

4.3.1. Preparing a USB stick using a hybrid CD or DVD image

Debian CD and DVD images can now be written directly to a USB stick,
which is a very easy way to make a bootable USB stick. Simply choose
a CD or DVD image (such as the netinst, CD-1, DVD-1, or netboot) that will fit
on your USB stick. See
Section 4.1, “Official Debian GNU/Linux CD/DVD-ROM Sets” to get a CD or DVD image.

The CD or DVD image you choose should be written directly to the USB stick,
overwriting its current contents. For example, when using an existing
GNU/Linux system, the CD or DVD image file can be written to a USB stick
as follows, after having made sure that the stick is unmounted:

#cp debian.iso /dev/sdX#sync

The
win32diskimager
utility can be used under other operating systems to copy the image.

Important

The image must be written to the whole-disk device and not a
partition, e.g. /dev/sdb and not /dev/sdb1.
Do not use tools like unetbootin which alter the image.

Important

Simply writing the CD or DVD image to USB like this should work fine
for most users. The other options below are more complex, mainly for
people with specialised needs.

The hybrid image on the stick does not occupy all the storage space, so
it may be worth considering using the free space to hold firmware files
or packages or any other files of your choice. This could be useful if
you have only one stick or just want to keep everything you need on one
device.

Create a second, FAT partition on the stick, mount the partition
and copy or unpack the firmware onto it. For example:

You might have written the mini.iso to the USB
stick. In this case the second partition doesn't have to be created as,
very nicely, it will already be present. Unplugging and replugging the
USB stick should make the two partitions visible.

There is an all-in-one file hd-media/boot.img.gz
which contains all the installer files (including the kernel)
as well as syslinux and its
configuration file
.

Note that, although convenient, this method does have one major
disadvantage: the logical size of the device will be limited to 1 GB,
even if the capacity of the USB stick is larger. You will need to
repartition the USB stick and create new file systems to get its full
capacity back if you ever want to use it for some different purpose.

To use this image simply extract it directly to your USB stick:

# zcat boot.img.gz > /dev/sdX

After that, mount the USB memory stick
(mount
/dev/sdX /mnt),
which will now have
a FAT filesystem
on it, and copy a Debian ISO image (netinst or full CD) to it.
Unmount the stick (umount /mnt) and you are done.

4.3.3. Manually copying files to the USB stick — the flexible way

If you like more flexibility or just want to know what's going on, you
should use the following method to put the files on your stick. One
advantage of using this method is that — if the capacity of your
USB stick is large enough — you have the option of copying any
ISO image, even a DVD image, to it.

4.3.3.1. Partitioning the USB stick

We will show how to set up the memory stick to use the first partition,
instead of the entire device.

Note

Since most USB sticks come pre-configured with a single FAT16
partition, you probably won't have to repartition or reformat the
stick. If you have to do that anyway, use cfdisk
or any other partitioning tool to create a FAT16 partition[3], install an MBR using:

# install-mbr /dev/sdX

The install-mbr command is contained in the
mbr Debian package. Then create the filesystem using:

# mkdosfs /dev/sdX1

Take care that you use the correct device name for your USB stick. The
mkdosfs command is contained in the
dosfstools Debian package.

In order to start the kernel after booting from the USB stick, we will
put a boot loader on the stick. Although any boot loader
(e.g. lilo) should work, it's convenient to use
syslinux, since it uses a FAT16 partition and can
be reconfigured by just editing a text file. Any operating system
which supports the FAT file system can be used to make changes to the
configuration of the boot loader.

To put syslinux on the FAT16 partition on your USB
stick, install the syslinux and
mtools packages on your system, and do:

# syslinux /dev/sdX1

Again, take care that you use the correct device name. The partition
must not be mounted when starting syslinux. This
procedure writes a boot sector to the partition and creates the file
ldlinux.sys which contains the boot loader code.

4.3.3.2. Adding the installer image

Mount the partition
(mount /dev/sdX1 /mnt)
and copy the following installer image files to the stick:

vmlinuz or linux (kernel binary)

initrd.gz (initial ramdisk image)

You can choose between either the text-based or the graphical version
of the installer. The latter can be found in the gtk
subdirectory. If you want to rename the files, please note that
syslinux can only process DOS (8.3) file names.

Next you should create a syslinux.cfg configuration
file, which at a bare minimum should contain the following line (change
the name of the kernel binary to “linux”
if you used a netboot image):

default vmlinuz initrd=initrd.gz

For the graphical installer you should add vga=788 to the
line. Other parameters can be appended as desired.

To enable the boot prompt to permit further parameter appending, add a
prompt 1 line.

If you used an hd-media image, you should now copy the ISO file of a
Debian ISO image[4] onto the stick. When you are done, unmount the USB memory stick
(umount /mnt).