Difference between revisions of "Remastering the Install ISO"

From ArchWiki
Jump to: navigation, search
(use https for links to archlinux.org)
m (modified genisoimage command so it works in folders other than ~/cusomiso)
 
(55 intermediate revisions by 16 users not shown)
Line 1: Line 1:
 
[[Category:Getting and installing Arch]]
 
[[Category:Getting and installing Arch]]
 
+
[[ru:Building a Live CD]]
== Introduction ==
+
{{Related articles start}}
Remastering the official Arch Linux install ISO image is not necessary for most applications. However, in some circumstances it is desirable. A short, and non-inclusive list includes:
+
{{Related|Archiso}}
* Basic hardware is not supported by the core install. (A rare circumstance)
+
{{Related articles end}}
 +
Remastering the official Arch Linux install ISO image is not necessary for most applications. However, it may be desirable in some cases.
 +
 +
* Basic hardware is not supported by the core install. (rare)
 
* Installation on a non-internet capable machine.
 
* Installation on a non-internet capable machine.
* Deployment of Arch Linux on many similar machines, requiring the same installation procedure, and the administrator does not have the time (or desire) to install each machine manually.
+
* Deployment of Arch Linux on many similar machines, requiring the same installation procedure.
  
== Preparation ==
+
As these ISOs are bootable, they can also be used for system rescue, testing, project demos, and more.
To remaster the Arch Linux ISO, you will need a copy of the original ISO image. Download it from the [https://www.archlinux.org/download/  download page]
+
  
{{ Tip | remember that # means that it must be done by root, while $ means that it should be done by a user.}}
+
== Archiso ==
 +
 
 +
It is often preferable to rebuild the installation ISO with [[Archiso]], instead of remastering an existing ISO.
 +
 
 +
== Manually ==
 +
 
 +
=== How it works ===
 +
 
 +
The installer ISO contains two separate archlinux systems. One for 32 bit (i686) and one for 64 bit (x86_64). The root filesystems of those systems are stored in {{ic|arch/i686/airootfs.sfs}} and {{ic|arch/x86_64/airootfs.sfs}}. The kernels and initramfs are in {{ic|arch/boot/i686}} and {{ic|arch/boot/x86_64}}. This means in order to fully remaster the ISO, you have to do your changes for both the 32 bit and the 64 bit system.
 +
 
 +
When booting, the initramfs will search for the device it was booted from via its label, {{ic|ARCH_201410}} for example, and will mount the root filesystem for the correct architecture.
 +
 
 +
=== Extracting the ISO ===
 +
 
 +
To remaster the Arch Linux ISO, you will need a copy of the original ISO image. Download it from the [https://www.archlinux.org/download/ download page]
  
 
Now, create a new directory to mount the ISO:
 
Now, create a new directory to mount the ISO:
 +
 
  # mkdir /mnt/archiso
 
  # mkdir /mnt/archiso
  
Mount the ISO to this directory (note: It being an image, the resulting mount is read-only):
+
Mount the ISO to this directory (due to the nature of ISOs, the result is read-only):
 +
 
 
  # mount -t iso9660 -o loop /path/to/archISO /mnt/archiso
 
  # mount -t iso9660 -o loop /path/to/archISO /mnt/archiso
  
Now that the ISO is mounted, we must copy its contents to another directory, where they can be edited:
+
Copy the contents to another directory, where they can be edited:
 +
 
 
  $ cp -a /mnt/archiso ~/customiso
 
  $ cp -a /mnt/archiso ~/customiso
  
== Customizations ==
+
{{Note|Make sure {{ic|customiso}} does not exist beforehand, otherwise this will create a subdirectory called {{ic|archiso}} inside {{ic|customiso}}}}
'''5.''' Edit the contents of ~/customiso as needed.
+
 
*Some helpful hints:
+
=== Customization ===
** The kernels (IDE and scsi) that are booted by the cd are found at {{ic|isolinux/vmlinuz}} and {{ic|isolinux/vmlinuz_scsi}}, you may want to replace them with home-brewed ones. I recommend that you do not use your own, completely new, configs, but instead fetch the ones out of the kernels that already exist and edit as desired, this can be done using {{ic|scripts/extract-ikconfig}} from any kernel source tree
+
 
** Kernel sources, as well as default Arch kernel configs, which are used if a user chooses to build a kernel at install time are located at {{ic|arch/}}
+
==== Modifying the x86_64 system ====
** The filesystem you are given while in the install environment is at {{ic|root-image.fs.sfs}}, if you'd like to edit this:
+
Change into the directory of the x86_64 system:
a. Copy it to another location
+
 
cp root-image.fs.sfs ~
+
  $ cd ~/customiso/arch/x86_64
 +
 
 +
Unsquash {{ic|airootfs.sfs}} (to {{ic|squashfs-root}}):
 +
 
 +
  $ unsquashfs airootfs.sfs
 +
 
 +
{{Note|You need {{Pkg|squashfs-tools}} in order to do that.}}
 +
 
 +
Now you can modify the content of the system in {{ic|squashfs-root}}. You can also chroot into this system to install packages etc.:
 +
 
 +
  # arch-chroot squashfs-root /bin/bash
 +
 
 +
{{Note|{{ic|arch-chroot}} is part of the package {{Pkg|arch-install-scripts}}}}
 +
{{Note|If the {{ic|arch-chroot}} script is not available in your system (e.g, when remastering arch-based distros), mount the api file systems and copy over your DNS details. See [[Chroot#Using chroot]].}}
 +
 
 +
To be able to install package, you have to initialise the pacman keyring:
 +
 
 +
  (chroot) # pacman-key --init
 +
  (chroot) # pacman-key --populate archlinux
 +
 
 +
{{Note|This step can take quite a while, be patient. (see [[Pacman-key#Initializing the keyring|Pacman-Key]])}}
 +
 
 +
If the kernel or initrd is updated, additional steps are required. In this case you have to install {{Pkg|archiso}} inside the chroot and change the content of {{ic|/etc/mkinitcpio.conf}}:
 +
 
 +
  (chroot) # pacman -Syu --force archiso linux
 +
  (chroot) # nano /etc/mkinitcpio.conf
 +
 
 +
Change the line that says {{ic|1=HOOKS="...}} to:
 +
 
 +
  HOOKS="base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard"
 +
 
 +
Now update the initramfs:
 +
 
 +
  (chroot) # mkinitcpio -p linux
 +
 
 +
When you are done, create a list of all installed packages, clean the pacman cache and exit the chroot:
 +
 
 +
  (chroot) # LANG=C pacman -Sl | awk '/\[installed\]$/ {print $1 "/" $2 "-" $3}' > /pkglist.txt
 +
  (chroot) # pacman -Scc
 +
  (chroot) # exit
 +
 
 +
If you updated the kernel or the initramfs, copy them over to the system:
 +
 
 +
  $ cp squashfs-root/boot/vmlinuz-linux ~/customiso/arch/boot/x86_64/vmlinuz
 +
  $ cp squashfs-root/boot/initramfs-linux.img ~/customiso/arch/boot/x86_64/archiso.img
 +
 
 +
Move the list of packages:
 +
 
 +
  $ mv squashfs-root/pkglist.txt ~/customiso/arch/pkglist.x86_64.txt
 +
 
 +
Now recreate {{ic|airootfs.sfs}}:
 +
 
 +
  $ rm airootfs.sfs
 +
  $ mksquashfs squashfs-root airootfs.sfs
 +
 
 +
Cleanup:
 +
 
 +
  # rm -r squashfs-root
 +
 
 +
Now update the MD5 checksum of {{ic|airootfs.sfs}}:
 +
 
 +
  $ md5sum airootfs.sfs > airootfs.md5
 +
 
 +
==== Modifying the i686 system ====
 +
 
 +
Follow the same steps as for the x86_64 system but with the following differences:
 +
 
 +
# In every command use {{ic|i686}} instead of {{ic|x86_64}}
 +
# When doing the chroot, use this command instead:
 +
 
 +
  # setarch i686 arch-chroot squashfs-root /bin/bash
 +
 
 +
{{Note|If you do not have the arch-chroot script, put {{ic|setarch i686}} before the line where you do {{ic|chroot}}}}
 +
 
 +
==== Modifying the EFI boot image ====
 +
 
 +
If you have updated the kernel or the initramfs and wish to boot on EFI systems, update the EFI boot image.
 +
You will need {{Pkg|dosfstools}} as the EFI boot image is a {{ic|FAT16}} filesystem.
 +
 
 +
  $ mkdir mnt
 +
  # mount -t fat -o loop ~/customiso/EFI/archiso/efiboot.img mnt
 +
  $ cp ~/customiso/arch/boot/x86_64/vmlinuz mnt/EFI/archiso/vmlinuz.efi
 +
  $ cp ~/customiso/arch/boot/x86_64/archiso.img mnt/EFI/archiso/archiso.img
 +
 
 +
If you see {{ic|No space left on device}} errors, you might need to resize {{ic|efiboot.img}}.
 +
You can also create a new {{ic|efiboot.img}} and copy the old files (replace {{ic|50}} with the required size).
 +
 
 +
  $ dd if=/dev/zero bs=1M count=50 of=efiboot-new.img
 +
  $ mkfs.fat -n "ARCHISO_EFI" efiboot-new.img
 +
  $ mkdir new
 +
  # mount -t fat -o loop efiboot-new.img new
 +
  $ cp -r mnt/* new/
 +
  # umount new mnt
 +
  $ mv efiboot-new.img ~/customiso/EFI/archiso/efiboot.img
 +
 
 +
And use the new {{ic|efiboot.img}} as above.
 +
 
 +
=== Create a new ISO ===
 +
 
 +
Create a new ISO image with {{ic|genisoimage}}, which is part of {{pkg|cdrkit}}.
 +
 
 +
$ genisoimage -l -r -J -V "ARCH_201209" -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o ../arch-custom.iso ./
 +
 
 +
{{Note|The ISO label must remain the same as the original label (in this case {{ic|ARCH_201209}}) for the image to boot successfully.}}
 +
 
 +
{{Note|The {{ic|-b}} and {{ic|-c}} options expect paths relative to the root of the ISO}}
 +
 
 +
The resulting ISO image will boot only from CD, DVD or BD. For booting from USB stick or hard disk, it needs the [http://www.syslinux.org/wiki/index.php/Isohybrid isohybrid] feature.
 +
This can be achieved by postprocessing the ISO by program isohybrid included in {{pkg|syslinux}}.
 +
Officially, the version of installed SYSLINUX has to be the same as the version of /isolinux/isolinux.bin in the ISO. It is not known whether really incompatible version combinations exist.
 +
 
 +
An alternative to genisoimage plus isohybrid can be derived from the xorriso run of mkarchiso.
 +
 +
$ iso_label="ARCH_201209"
 +
$ xorriso -as mkisofs \
 +
        -iso-level 3 \ 
 +
        -full-iso9660-filenames \
 +
        -volid "${iso_label}" \
 +
        -eltorito-boot isolinux/isolinux.bin \
 +
        -eltorito-catalog isolinux/boot.cat \
 +
        -no-emul-boot -boot-load-size 4 -boot-info-table \
 +
        -isohybrid-mbr ~/customiso/isolinux/isohdpfx.bin \
 +
        -output arch-custom.iso \
 +
        ~/customiso
 +
 
 +
Option -isohybrid-mbr needs an [[MBR]] template file. Most probably there is already such a file /isolinux/isohdpfx.bin in the original ISO, which matches the SYSLINUX version used in the ISO.
 +
Only if this file is missing in the copied ISO content, it has to be cut out of the original ISO image file, before above xorriso run is performed:
 +
 
 +
$ dd if=/path/to/archISO bs=512 count=1 of=~/customiso/isolinux/isohdpfx.bin
 +
 
 +
If the original ISO supports bootability via EFI, this can be activated in the new ISO by inserting the following options between the lines "-isohybrid-mbr ..." and "-output ...":
 +
 
 +
        -eltorito-alt-boot \
 +
        -e EFI/archiso/efiboot.img \
 +
        -no-emul-boot -isohybrid-gpt-basdat \
 +
 
 +
The file /EFI/archiso/efiboot.img is a FAT filesystem image file. If it is missing in the original ISO, then there was no EFI support in that ISO.
 +
 
 +
The newly created ISO image {{Ic|arch-custom.iso}} is found in the home directory. You can write the ISO image to a USB stick as explained in [[USB Installation Media]]. Alternatively you can burn the ISO image on a CD, DVD, or BD with your preferred software. On Arch, that is covered in the [[Optical_disc_drive#Burning_an_ISO_image_to_CD.2C_DVD.2C_or_BD|article about burning an ISO image]].
 +
 
 +
== larch ==
 +
 
 +
[[larch]] aims to provide a more desktop-based approach, and it does not require an Arch Linux host system.
  
b. Extract the sqfs image from the file (the package ''squashfs-tools'' is needed for this)
+
{{Note|
unsquashfs root-image.fs.sfs
+
* As of version 2.6.39, the vanilla kernel no longer supports aufs, making a custom kernel a necessity.
 +
* {{AUR|linux-aufs_friendly}} is an AUFS version of the arch kernel, and larch maintains an i686 build, you need not compile anything unless you want 64 bit.
 +
}}
  
c. This will generate a new folder called squashfs-root with a file called root-image.fs in it. This file contains a ext2 filesystem. Mount this filesystem to make changes to it.
+
== poison-livecd-creator ==
# mkdir /mnt/rootfs
+
# mount ~/squashfs-root/root-image.fs /mnt/rootfs
+
  
d. You can do a chroot into this folder to be able to install new software in the image using pacman.
+
It is a very simple live CD creator. It uses just a Makefile to build live CD images, and uses pacman to install base and additional packages to the live CD. You can choose your packages and build them into a live CD. Moreover, it uses [[GRUB]] to boot the live CD in order to add more flexibility. This means that it is much easier to make a live USB stick without formating it. For that, you just need to install GRUB into your USB pen drive and copy the files in the ISO to your root directory in the pen drive. It relies on an Arch Linux host system and [[pacman]].
chroot /mnt/rootfs
+
  
e. When you're done fiddling around, unmount the rootfs and create the new squashfs image
+
{{AUR|poison-livecd-creator}}{{Broken package link|{{aur-mirror|poison-livecd-creator}}}}.
# umount /mnt/rootfs
+
$ mksquashfs squashfs-root root-image.fs.sfs
+
  
f. You'll now have a new {{ic|root-image.fs.sfs}}, which you can copy back to your ISO, replacing the old one
+
== Linux-pf ==
cp root-image.fs.sfs customiso/root-image.fs.sfs
+
  
== Creating a new ISO ==
+
It supports aufs among other things, making it an option for live CDs.
Once you have edited your custom ISO to your needs, you must create a new ISO image. This can be done with the '''genisoimage''' command which is part of the the {{pkg|cdrkit}} package.
+
genisoimage -l -r -J -V "ARCH_201209" -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o ~/arch-custom.iso ~/customiso
+
  
There should now be a file called {{Ic|arch-custom.iso}} in the home folder of the user that created the iso. This can now be burned to a CD (DVD) and used as intended. Enjoy your very own, customized, Arch Install CD. Remember that the iso label must be the same as the one from the original ISO (in this case ARCH_201209) or otherwise the image will not work.
+
{{AUR|linux-pf}}.
  
If installing the image into a pen drive with '''unetbootin''' remember also that the label of the pen drive partition must be ARCH_201209. This can be changed with '''e2label''' for ext3 partitions.
+
{{Note|As of version 2.6.39, the vanilla kernel no longer supports aufs, making a custom kernel a necessity.}}
  
{{Note|In the most recent series of Arch ISO's, it has been reported that unetbootin sometimes breaks the image.  Please use dd to create installer.}}
+
== See also ==
  
==== Further Reading and Related Resources====
+
* http://www.knoppix.net/wiki/KnoppixRemasteringHowto
http://www.knoppix.net/wiki/KnoppixRemasteringHowto <br>
+
* http://syslinux.zytor.com/iso.php
http://syslinux.zytor.com/iso.php <br>
+
* http://busybox.net/
http://busybox.net/ <br>
+
* [http://www.linux-live.org/ Linux Live Kit]
http://xentac.net/svn/arch-jc/trunk/bin/mkiso <br>
+

Latest revision as of 04:57, 6 May 2016

Related articles

Remastering the official Arch Linux install ISO image is not necessary for most applications. However, it may be desirable in some cases.

  • Basic hardware is not supported by the core install. (rare)
  • Installation on a non-internet capable machine.
  • Deployment of Arch Linux on many similar machines, requiring the same installation procedure.

As these ISOs are bootable, they can also be used for system rescue, testing, project demos, and more.

Archiso

It is often preferable to rebuild the installation ISO with Archiso, instead of remastering an existing ISO.

Manually

How it works

The installer ISO contains two separate archlinux systems. One for 32 bit (i686) and one for 64 bit (x86_64). The root filesystems of those systems are stored in arch/i686/airootfs.sfs and arch/x86_64/airootfs.sfs. The kernels and initramfs are in arch/boot/i686 and arch/boot/x86_64. This means in order to fully remaster the ISO, you have to do your changes for both the 32 bit and the 64 bit system.

When booting, the initramfs will search for the device it was booted from via its label, ARCH_201410 for example, and will mount the root filesystem for the correct architecture.

Extracting the ISO

To remaster the Arch Linux ISO, you will need a copy of the original ISO image. Download it from the download page

Now, create a new directory to mount the ISO:

# mkdir /mnt/archiso

Mount the ISO to this directory (due to the nature of ISOs, the result is read-only):

# mount -t iso9660 -o loop /path/to/archISO /mnt/archiso

Copy the contents to another directory, where they can be edited:

$ cp -a /mnt/archiso ~/customiso
Note: Make sure customiso does not exist beforehand, otherwise this will create a subdirectory called archiso inside customiso

Customization

Modifying the x86_64 system

Change into the directory of the x86_64 system:

 $ cd ~/customiso/arch/x86_64

Unsquash airootfs.sfs (to squashfs-root):

 $ unsquashfs airootfs.sfs
Note: You need squashfs-tools in order to do that.

Now you can modify the content of the system in squashfs-root. You can also chroot into this system to install packages etc.:

 # arch-chroot squashfs-root /bin/bash
Note: arch-chroot is part of the package arch-install-scripts
Note: If the arch-chroot script is not available in your system (e.g, when remastering arch-based distros), mount the api file systems and copy over your DNS details. See Chroot#Using chroot.

To be able to install package, you have to initialise the pacman keyring:

 (chroot) # pacman-key --init
 (chroot) # pacman-key --populate archlinux
Note: This step can take quite a while, be patient. (see Pacman-Key)

If the kernel or initrd is updated, additional steps are required. In this case you have to install archiso inside the chroot and change the content of /etc/mkinitcpio.conf:

 (chroot) # pacman -Syu --force archiso linux
 (chroot) # nano /etc/mkinitcpio.conf

Change the line that says HOOKS="... to:

 HOOKS="base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard"

Now update the initramfs:

 (chroot) # mkinitcpio -p linux

When you are done, create a list of all installed packages, clean the pacman cache and exit the chroot:

 (chroot) # LANG=C pacman -Sl | awk '/\[installed\]$/ {print $1 "/" $2 "-" $3}' > /pkglist.txt
 (chroot) # pacman -Scc
 (chroot) # exit

If you updated the kernel or the initramfs, copy them over to the system:

 $ cp squashfs-root/boot/vmlinuz-linux ~/customiso/arch/boot/x86_64/vmlinuz
 $ cp squashfs-root/boot/initramfs-linux.img ~/customiso/arch/boot/x86_64/archiso.img

Move the list of packages:

 $ mv squashfs-root/pkglist.txt ~/customiso/arch/pkglist.x86_64.txt

Now recreate airootfs.sfs:

 $ rm airootfs.sfs
 $ mksquashfs squashfs-root airootfs.sfs

Cleanup:

 # rm -r squashfs-root

Now update the MD5 checksum of airootfs.sfs:

 $ md5sum airootfs.sfs > airootfs.md5

Modifying the i686 system

Follow the same steps as for the x86_64 system but with the following differences:

  1. In every command use i686 instead of x86_64
  2. When doing the chroot, use this command instead:
 # setarch i686 arch-chroot squashfs-root /bin/bash
Note: If you do not have the arch-chroot script, put setarch i686 before the line where you do chroot

Modifying the EFI boot image

If you have updated the kernel or the initramfs and wish to boot on EFI systems, update the EFI boot image. You will need dosfstools as the EFI boot image is a FAT16 filesystem.

 $ mkdir mnt
 # mount -t fat -o loop ~/customiso/EFI/archiso/efiboot.img mnt
 $ cp ~/customiso/arch/boot/x86_64/vmlinuz mnt/EFI/archiso/vmlinuz.efi
 $ cp ~/customiso/arch/boot/x86_64/archiso.img mnt/EFI/archiso/archiso.img

If you see No space left on device errors, you might need to resize efiboot.img. You can also create a new efiboot.img and copy the old files (replace 50 with the required size).

 $ dd if=/dev/zero bs=1M count=50 of=efiboot-new.img
 $ mkfs.fat -n "ARCHISO_EFI" efiboot-new.img
 $ mkdir new
 # mount -t fat -o loop efiboot-new.img new
 $ cp -r mnt/* new/
 # umount new mnt
 $ mv efiboot-new.img ~/customiso/EFI/archiso/efiboot.img

And use the new efiboot.img as above.

Create a new ISO

Create a new ISO image with genisoimage, which is part of cdrkit.

$ genisoimage -l -r -J -V "ARCH_201209" -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o ../arch-custom.iso ./
Note: The ISO label must remain the same as the original label (in this case ARCH_201209) for the image to boot successfully.
Note: The -b and -c options expect paths relative to the root of the ISO

The resulting ISO image will boot only from CD, DVD or BD. For booting from USB stick or hard disk, it needs the isohybrid feature. This can be achieved by postprocessing the ISO by program isohybrid included in syslinux. Officially, the version of installed SYSLINUX has to be the same as the version of /isolinux/isolinux.bin in the ISO. It is not known whether really incompatible version combinations exist.

An alternative to genisoimage plus isohybrid can be derived from the xorriso run of mkarchiso.

$ iso_label="ARCH_201209"
$ xorriso -as mkisofs \
       -iso-level 3 \  
       -full-iso9660-filenames \
       -volid "${iso_label}" \
       -eltorito-boot isolinux/isolinux.bin \
       -eltorito-catalog isolinux/boot.cat \
       -no-emul-boot -boot-load-size 4 -boot-info-table \
       -isohybrid-mbr ~/customiso/isolinux/isohdpfx.bin \
       -output arch-custom.iso \ 
       ~/customiso

Option -isohybrid-mbr needs an MBR template file. Most probably there is already such a file /isolinux/isohdpfx.bin in the original ISO, which matches the SYSLINUX version used in the ISO. Only if this file is missing in the copied ISO content, it has to be cut out of the original ISO image file, before above xorriso run is performed:

$ dd if=/path/to/archISO bs=512 count=1 of=~/customiso/isolinux/isohdpfx.bin

If the original ISO supports bootability via EFI, this can be activated in the new ISO by inserting the following options between the lines "-isohybrid-mbr ..." and "-output ...":

       -eltorito-alt-boot \
       -e EFI/archiso/efiboot.img \
       -no-emul-boot -isohybrid-gpt-basdat \

The file /EFI/archiso/efiboot.img is a FAT filesystem image file. If it is missing in the original ISO, then there was no EFI support in that ISO.

The newly created ISO image arch-custom.iso is found in the home directory. You can write the ISO image to a USB stick as explained in USB Installation Media. Alternatively you can burn the ISO image on a CD, DVD, or BD with your preferred software. On Arch, that is covered in the article about burning an ISO image.

larch

larch aims to provide a more desktop-based approach, and it does not require an Arch Linux host system.

Note:
  • As of version 2.6.39, the vanilla kernel no longer supports aufs, making a custom kernel a necessity.
  • linux-aufs_friendlyAUR is an AUFS version of the arch kernel, and larch maintains an i686 build, you need not compile anything unless you want 64 bit.

poison-livecd-creator

It is a very simple live CD creator. It uses just a Makefile to build live CD images, and uses pacman to install base and additional packages to the live CD. You can choose your packages and build them into a live CD. Moreover, it uses GRUB to boot the live CD in order to add more flexibility. This means that it is much easier to make a live USB stick without formating it. For that, you just need to install GRUB into your USB pen drive and copy the files in the ISO to your root directory in the pen drive. It relies on an Arch Linux host system and pacman.

poison-livecd-creatorAUR[broken link: archived in aur-mirror].

Linux-pf

It supports aufs among other things, making it an option for live CDs.

linux-pfAUR.

Note: As of version 2.6.39, the vanilla kernel no longer supports aufs, making a custom kernel a necessity.

See also