if you want to try ["Simple-CDD"], on an etch system:

mkdir ~/my-simple-cdd

cd ~/my-simple-cdd

add to your sources.list:

echo deb http://http.us.debian.org/debian unstable main >> /etc/apt/sources.list

apt-get update

apt-get -t stable install simple-cdd devscripts

echo deb http://http.us.debian.org/debian unstable main/debian-installer >> /etc/apt/sources.list

apt-get update

dget simple-cdd-profiles

comment out the lines in /etc/apt/sources.list, or configure apt pinning so it doesn't pull in unstable packages.

create a profile named NAME:

mkdir profiles

for p in list of packages you want installed ; do echo $p >> profiles/NAME.packages ; done

build the CD with selected profile NAME, and include simple-cdd-profiles .udeb:

build-simple-cdd --profiles NAME --local-packages $(pwd)/simple-cdd-profiles_*.udeb

this will create a partial package mirror in the dir "tmp/mirror", and if all goes well, an .iso CD image in the "images" dir when it is finished.

use qemu to test:

apt-get install qemu

build-simple-cdd --qemu --profiles NAME --local-packages $(pwd)/simple-cdd-profiles_*.udeb

optional features:

if you want debconf preseeding, put a debconf-set-selections compatible file into profiles/NAME.preseed

if you want a custom post-install script, place it in profiles/NAME.postinst

for more options:

build-simple-cdd --help

adapted from: http://lists.debian.org/debian-custom/2006/12/msg00001.html