LiveUSB/HOWTO

From Gentoo Wiki
< LiveUSB
Revision as of 11:17, 13 October 2013 by SwifT (Talk | contribs)

Jump to: navigation, search

This HOWTO explains how to create a Gentoo Linux LiveUSB or, in other words, how to emulate an x86 or AMD64 Gentoo Linux LiveCD using a USB flash drive.

Introduction

The LiveUSB

This HOWTO explains how to create a Gentoo Linux LiveUSB or, in other words, how to emulate an x86 or AMD64 Gentoo Linux LiveCD using a USB flash drive. This is particularly useful for installing Gentoo Linux on a modern laptop with no CD-ROM drive.

Note
The sys-boot/unetbootin package provides a much easier alternative to create a bootable USB stick from any bootable CD image.

Although the instructions found in this document aim at emulating a Gentoo Linux LiveCD using a USB flash drive, they should work for any arbitrary block device as long as you adjust the device names accordingly.

Using the Gentoo LiveDVD

When using the LiveDVD (rather than the LiveCDs), then it is sufficient to directly copy the ISO contents on the USB device. The dd command can be used to accomplish this. For instance, assuming the USB device is at /dev/sdc:

root # dd if=/path/to/livedvd.iso of=/dev/sdc

On Windows, the dd command is also available through various projects, such as GNUWin32 or Chrysocome.

The remainder of this document assumes that the source ISO used is not the Gentoo LiveDVD.

Prerequisites

In order to use a Gentoo Linux LiveUSB you need the following:

  • Bootable USB flash drive with at least 1GB
  • i686 or x86_64 computer with support for booting from USB

You will also need access to the following for creating the LiveUSB:

  • A computer running Gentoo Linux (or alternatively another Linux distribution)

Preparing the USB flash drive

Partitioning the drive

Warning
These instructions will erase all data from the USB flash drive. Make sure to backup your data first.
Important
This HOWTO assumes that the /dev/sdc device node corresponds to your USB flash drive. If you have other SCSI-like devices make sure to use the correct device node.

Create a FAT16 partition on your USB flash drive and mark it bootable using fdisk . An example partitioning scheme can be seen below:

Note
If your key is 4GB or larger, use partition type b (W95 FAT32).
root # fdisk -l /dev/sdc
Disk /dev/sdc: 2063 MB, 2063597056 bytes
255 heads, 63 sectors/track, 250 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
  
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1         250     2008124+   6  FAT16

Creating the filesystem

Create a FAT16 filesystem on the USB flash drive using mkdosfs :

Note
If your key is 4GB or larger, use -F 32 to create a FAT32 filesystem.
root # emerge --ask sys-fs/dosfstools
root # mkdosfs -F 16 /dev/sdc1
mkfs.fat 3.0.22 (2013-07-19)

Installing a Master Boot Record

Install the precompiled Master Boot Record (MBR) from syslinux on the USB flash drive:

root # emerge --ask --verbose sys-boot/syslinux
root # dd if=/usr/share/syslinux/mbr.bin of=/dev/sdc
0+1 records in
0+1 records out
440 bytes (440 B) copied, 0.00522668 s, 84.2 kB/s

Copying the files to your key

Mounting the Gentoo Linux Installation CD

Download the Gentoo Weekly Minimal Install CD for your architecture from your local Gentoo Linux mirror site and mount the ISO image on /mnt/cdrom as shown below:

CodeMounting the Gentoo Linux Installation CD ISO image

## (Create the /mnt/cdrom mount point if needed)
# mkdir -p /mnt/cdrom
# mount -o loop,ro -t iso9660 /path/to/iso.iso /mnt/cdrom
Note
If you receive a Could not find any loop device error message when mounting the iso, you need to enable the Loopback device support option in your kernel configuration.

Mounting the LiveUSB

Mount the newly formatted USB flash drive on /mnt/usb as shown below:

root # mkdir -p /mnt/usb
root #
mount -t vfat /dev/sdc1 /mnt/usb

Copying the files

Copy the files from the Gentoo Linux Installation CD to the LiveUSB. The files need to be reordered a bit as we will be using the syslinux bootloader instead of isolinux :

root # cp -r /mnt/cdrom/* /mnt/usb
root #
mv /mnt/usb/isolinux/* /mnt/usb
root #
mv /mnt/usb/isolinux.cfg /mnt/usb/syslinux.cfg
root #
rm -rf /mnt/usb/isolinux*
root #
mv /mnt/usb/memtest86 /mnt/usb/memtest

You can now unmount the ISO image:

root # umount /mnt/cdrom

Adjusting the bootloader configuration

Adjust the syslinux configuration file using sed as shown below. The slowusb parameter will introduce some extra delays before attempting to mount the filesystem. This is needed to allow the USB flash drive to settle upon detection.

root # sed -i -e "s:cdroot:cdroot slowusb:" -e "s:kernel memtest86:kernel memtest:" /mnt/usb/syslinux.cfg

Installing a bootloader

Unmounting the drive

Make sure you unmount the USB flash drive before installing the bootloader:

root # umount /mnt/usb

Installing syslinux

Finally install the syslinux bootloader on the USB flash drive:

root # syslinux /dev/sdc1
Important
You will need to rerun syslinux /dev/sdc1 each time you modify the syslinux.cfg file for the configuration changes to take affect.
Note
If this is the first time you have used syslinux, you will need to edit /etc/mtools/mtools.conf on your host. Simply commenting out SAMPLE FILE will suffice for the purpose of this guide.

Using the LiveUSB

Booting

Insert the USB flash drive and turn on the computer, making sure the BIOS is set to boot from USB. If all goes well you should be presented with a standard syslinux prompt.

You should be able to follow the generic installation instructions found in the Gentoo Handbook from here on.

Acknowledgements

We would like to thank the following authors and editors for their contributions to this guide:

  • brix
  • neysx