edoceo

Gentoo Live USB

This document describes how to create a Gentoo Live USB. It's very similar to the Ubuntu Live USB process we described on an alternate page.

Introduction

Booting from a USB device is ofter faster than from CD and USB drives are easier to carry. You should know why you want and or need this. We used Gentoo 2008.0 as our image for booting and a Gentoo system for building on.

Prepare your System

Prepare you build system for the work we'll be doing. Download a copy of the latest Gentoo Live CD ISO, at this time 2008.0, store that ISO somewhere nice. Alternatively one could choose to use a different ISO image, maybe the minimal (which will fit on a 256MiB USB drive!). Plug in the USB Key device, in this article this is /dev/sda, adjust as necessary. Make a partition on the USB device that is at least 800MiB and format with ext2.

curl http://bouncer.gentoo.org/fetch/gentoo-2008.0-livecd/x86 > /tmp/livecd.iso
mkdir -p /mnt/gentoo_cd
mount -o loop /tmp/livecd.iso /mnt/gentoo_cd

cfdisk /dev/sda
mkfs.ext2 -b1024 -m0 -L'Gentoo Live USB' -O sparse_super  /dev/sda1
tune2fs -c0 -i0 /dev/sda1
mkdir -p /mnt/gentoo_usb
mount /dev/sda1 /mnt/gentoo_usb

Copy the Live CD to Live USB

We just clone the items from the Gentoo Live USB and change the the bootloader from isolinux to extlinux.

cp -avR /mnt/gentoo_cd/* /mnt/gentoo_usb/
cd /mnt/gentoo_usb
mv isolinux extlinux
mv extlinux/isolinux.cfg extlinux/extlinux.conf
rm extlinux/{boot.cat,elilo.efi,isolinux.bin}
extlinux -i ./extlinux

Edit the config file extlinux/extlinux.conf as necessary.

Modifying or Updating the Image

The filesystem is stored in the squashfs image and is therefore not open for direct update. Below we will mount the image, copy the contents out, chroot into that environment and perform necessary actions.

mount -o loop -t squashfs /mnt/gentoo_usb/image.squashfs /mnt/squashfs
mkdir /tmp/gentoo_usb_image
cp -aR /mnt/gentoo_usb/* /tmp/gentoo_usb_image/
mount -t proc none /tmp/gentoo_usb_image/proc
mount -o bind /dev /tmp/gentoo_usb_image/dev
chroot /tmp/gentoo_usb_image /bin/bash

Now that we are in the new environment it can be modified in almost any possible way. Once finished then re-package the directory into a squashfs image.

cd /tmp
mksquashfs gentoo_usb_image image.squashfs
cp image.squashfs /mnt/gentoo_usb

Now it's ready to boot!

Modifying the initrd Image

Extract the image, edit stuff as necessary and then re-save and compress.

mkdir /mnt/gentoo.initrd
cd /mnt/gentoo.initrd
gzip -cd /mnt/gentoo_usb/extlinux/gentoo.igz | cpio -div

Now re-compress

cd /mnt/gentoo.initrd
ls | cpio -o |gzip > /mnt/gentoo_usb/extlinux/gentoo.igz

For the Really Lazy

For those of you who are too lazy to try the above steps, or don't care about how it works, you can use these images. We'll update these as newer versions of Gentoo are released. Simply download the tarball, extract onto a bootable partition on a USB device.

See Also

Change Log

  • 2008-10-26 - Created /djb

Thanks / Shouts

Thanks to jamisnemo on #gentoo for encouraging us and validating the amd64 image.