Debian GNU/Linux CD-ROMs sind im Handel, als Heft-CDs oder zum Download als Image erhältlich. Natürlich bietet Debian Ihnen aber auch die Möglichkeit eigene, bootfähige CDs herzustellen und diese auf die eigenen Bedürfnisse anzupassen. Hierzu steht das Paket debian-cd zu Verfügung.
Zunächst sollten Sie jedoch dafür sorgen das die benötigten Dateien für die CDs auf Ihrem System vorhanden sind. Üblich ist es hierzu eine lokale Kopie (Mirror) der gewünschten Architektur(en) (z.B. i386) anzulegen. Das Program mirror ist hierzu hervorragend geeignet.
Neben einigen gebräuchlichen Tools (wie zum Beispiel apt-get, perl, bash, make... ) die auf jedem System vorhanden sein sollten, benötigt debian-cd die Programme mkisofs/mkhybrid, dpkg-multicd, das Perl MD5 Modul, dpkg-dev und lynx. Natürlich benötigen Sie auch noch einigen freien Plattenplatz.
Nach der Installation dieses Paketes finden sich die notwendigen Dateien im Verzeichnis /usr/share/debian-cd/. In der Datei CONF.sh müssen einige Zeilen angepasst werden.
export CODENAME=woody - Hier wird die Variable für die gewünschte Version gesetzt. Es sollte bei einem kompletten Mirror einer stabilen Version jederzeit möglich sein die gewünschten CDs zu erstellen. Bei Entwicklerversionen können dringend benötigte Pakete fehlen oder es sind noch keine angepassten Bootdisketten verfügbar. In einem solchen Fall kann aber auch das Paket debian-cd in einem Zustand sein der es nicht erlaubt CDs zu erstellen.
export DEBVERSION="2.3 r0" - Versionsnummer und Releasestand der Distribution.
export OFFICIAL="Unofficial" - Dieser Wert sollte nicht verändert werden. Die Bezeichnung „Official“ ist nur für CD-Images erlaubt die vom Debian Projekt erstellt wurden. Für Vorabversionen kann hier auch die Bezeichnung „Unofficial Beta“ benutzt werden.
export ARCH=`dpkg --print-installation-architecture` - Diese Variable beschreibt für welche Architektur die CD-Images erstellt werden sollen. Häufig wird diese Architektur identisch mit der bereits verwendeten Architektur sein, so das man beruhigt dem Programm dpkg die Aufgabe übertragen kann den richtigen Wert zu ermitteln. Natürlich iste auch möglich CD-Images für eine andere Architektur zu erstellen. In diesem Fall ist der Wert entsprechend anzupassen und natürlich müssen die benötigten Pakete für die Zielarchitektur vorliegen. Je nach Zielarchitektur müssen ggf. noch weitere Pakete, beispielsweise aboot für die Alpha-Architektur, installiert werden.
Die nächsten vier Variablen sollten auf Verzeichnisse auf der gleichen Partition und auf dem gleichen Device zeigen. Wenn dies nicht möglich ist, kann die Variable COPYLINK auf 1 gesetzt werden. Dies benötigt einiges an zusätzlichem Festplattenplatz da keine symbolischen Link verwendet werden können. Diese Option muß auch gesetzt sein falls die Daten auf einem per NFS gemounteten Laufwerk liegen.
export MIRROR=/home/ftp/debian - Pfad zum Debian Mirror. Das Verzeichnis unter dem sich die Kopie des Debian FTP-Servers befindet.
export NONUS=/home/ftp/debian/debian-non-US - Das Verzeichnis in dem sich die Dateien aus dem non-US Bereich befinden. Wenn dieser Bereich nicht auf den CDs enthalten sein soll, kann diese Zeile auskommentiert werden.
export FORCENONUSONCD1=1 - Wenn diese Zeile, durch entfernen des Zeichens # aktiviert wird, werden zwei Versionen der ersten CD erzeugt. Eine enthält alle Pakete aus non-US, die andere nicht. Diese Option ist nur sinnvoll wenn tatsächlich beide CD-Images benötigt werden.
export TDIR=/home/ftp/debian/.tmp - Pfad zu einem Verzeichnis in dem Dateien, die zur Erzeugung der CDs benötigt werden, abgelegt werden können.
export OUT=/home/ftp/CD-Images - Pfad in dem die CD-Images abgelegt werden. Dieser kann sich auf einer anderen Partition befinden.
Die weiteren Optionen müssen nicht zwingend angepasst werden, trotzdem lohnt es sich mal einen Blick darauf zu werfen.
export APTTMP=/home/ftp/debian/.tmp/apt - Das Verzeichnis für temporäre Dateien die von apt benötigt werden.
export NONFREE=1 - Beschreibt ob auch die Non-Free Teile der Distribution auf den CDs enthalten sein sollen.
export EXTRANONFREE=1 - Hiermit werden die Non-Free Teile auf eine Extra CD geschrieben. Bitte beachten Sie, es kann nur eine der Optionen NONFREE oder EXTRANONFREE benutzt werden.
export LOCAL=1 - Wenn ein Verzeichnis $MIRROR/dists/$CODENAME/local/binary-$ARCH existiert, und die Dateien aus diesem Verzeichnis auf die zu erstellende CD kopiert werden sollen, so ist bei dieser Zeile der Kommentar zu entfernen.
export LOCALDEBS=/home/fr/pakate/debian - Wenn die lokalen Pakete nicht in dem oben beschriebenen Verzeichnis liegen, so kann mit dieser Variablen das gewünschte Verzeichnis angegeben werden.
export BOOTDIR=/boot - Diese Variable ist zu benutzen wenn die Dateien cd.b und second.b nicht an der üblichen Stelle zu finden sind und CD-Images für die Sparc-Architektur erzeugt werden.
export SYMLINK=1 - Mit dieser Option werden Symbolische Links zu den benötigten Paketen erzeugt.
export COPYLINK=1 - Hiermit werden alle Dateien kopiert und keine Symbolischen Links angelegt.
export MKISOFS=/usr/bin/mkhybrid - Hier kann der Pfad zum Programm mkhybrid, mit dem die ISO-Dateien erzeugt werden, angegeben werden. Hier kann auch ein anderes Programm mit ähnlicher Funktionalität, beispielsweise mkisofs benutzt werden.
export MKISOFS_OPTS="-a -r -T" #For normal users oder export MKISOFS_OPTS="-a -r -F . -T" #For symlink farmers - Optionen für das Programm mkhybrid.
export VERBOSE_MAKE=1 - Gibt mehr Informationen während der Zusammenstellung der CD-Images aus.
ATTEMPT_FALLBACK=yes - Mit dieser Option kann versucht werden eine einfachere CD zu erstellen, falls es ohne diese Option fehlschlägt.
export EXCLUDE="$BASEDIR"/tasks/exclude-potato - Liste einiger Dateien die nicht enthalten sein sollen, in diesem Fall um auf der ersten CD etwas Platz zu sparen.
export UNEXCLUDE2="$BASEDIR"/tasks/unexclude-CD2-potato - Hiermit werden die eben ausgeschlossenen Dateien auf die CD Nummer 2 geschrieben.
export SRCEXCLUDE="$BASEDIR"/tasks/exclude-src-potato - Liste einige Quellpakete die ebenfalls nicht auf den CDs erscheinen sollen.
Hier ein Beispiel für eine bereits angepasste Konfiguration.
# # This file will have to be sourced where needed # # The debian-cd dir # Where I am (hoping I'm in the debian-cd dir) export BASEDIR=`pwd` # Building potato cd set ... export CODENAME=woody # Version number, "2.2 r0", "2.2 r1" etc. export DEBVERSION="2.3 r0" # Official or non-official set. # NOTE: THE "OFFICIAL" DESIGNATION IS ONLY ALLOWED FOR IMAGES AVAILABLE # ON THE OFFICIAL DEBIAN CD WEBSITE http://cdimage.debian.org export OFFICIAL="Unofficial" #export OFFICIAL="Official" #export OFFICIAL="Official Beta" # ... for arch export ARCH=`dpkg --print-installation-architecture` # IMPORTANT : The 4 following paths must be on the same partition/device. # If they aren't then you must set COPYLINK below to 1. This # takes a lot of extra room to create the sandbox for the ISO # images, however. Also, if you are using an NFS partition for # some part of this, you must use this option. # Paths to the mirrors export MIRROR=/home/ftp/debian # Comment the following line if you don't have/want non-US export NONUS=/home/ftp/debian/debian-non-US # And this option will make you 2 copies of CD1 - one with all the # non-US packages on it, one with none. Useful if you're likely to # need both. #export FORCENONUSONCD1=1 # Path of the temporary directory export TDIR=/home/ftp/debian/.tmp # Path where the images will be written export OUT=/home/fr/mp3/IMAGES # Where we keep the temporary apt stuff. # This cannot reside on an NFS mount. export APTTMP=/home/ftp/debian/.tmp/apt # Do I want to have NONFREE merged in the CD set export NONFREE=1 # Do I want to have NONFREE on a separate CD (the last CD of the CD set) # WARNING: Don't use NONFREE and EXTRANONFREE at the same time ! # export EXTRANONFREE=1 # If you have a $MIRROR/dists/$CODENAME/local/binary-$ARCH dir with # local packages that you want to put on the CD set then # uncomment the following line # export LOCAL=1 # If your local packages are not under $MIRROR, but somewhere else, # you can uncomment this line and edit to to point to a directory # containing dists/$CODENAME/local/binary-$ARCH # export LOCALDEBS=/home/joey/debian/va/debian # Sparc only : bootdir (location of cd.b and second.b) # export BOOTDIR=/boot # Symlink farmers should uncomment this line : # export SYMLINK=1 # Use this to force copying the files instead of symlinking or hardlinking # them. This is useful if your destination directories are on a different # partition than your source files. # export COPYLINK=1 # Options # export MKISOFS=/usr/bin/mkhybrid # export MKISOFS_OPTS="-a -r -T" #For normal users # export MKISOFS_OPTS="-a -r -F . -T" #For symlink farmers # uncomment this to if you want to see more of what the Makefile is doing export VERBOSE_MAKE=1 # uncoment this to make build_all.sh try to build a simple CD image if # the proper official CD run does not work #ATTEMPT_FALLBACK=yes # We don't want certain packages to take up space on CD1... export EXCLUDE="$BASEDIR"/tasks/exclude-potato # ...but they're okay on other CDs (UNEXCLUDEx == may be included on CD >= x) export UNEXCLUDE2="$BASEDIR"/tasks/unexclude-CD2-potato # Any packages listed in EXCLUDE but not in any UNEXCLUDE will be # excluded completely. # We also exclude some source packages export SRCEXCLUDE="$BASEDIR"/tasks/exclude-src-potato |
Für das eigentliche erstellen der CD-Images stehen zwei Shell-Scripte zur Verfügung. build.sh erstellt Imges für eine einzelne Architektur. Die gewünschte Architektur wird über die Konfigurationsdatei ermittelt oder kann auf der Kommandozeile übergeben werden.
build_all.sh erstellt CDs Images für alle Architekturen.
Wenn CD-Images für eine Entwicklungsversion von Debian erstellt werden sollen, so kann es passieren das das Paket nicht auf dem allerneuesten Stand ist. In einem solchen Fall bietet sich ein Versuch mit einer Entwicklungsversion von debian-cd aus dem CVS Baum an.
Eine komplette Kopie der CVS Version kann mit folgenden Befehlen erstellt werden:
cvs -d :pserver:anonymous@cvs.debian.org:/cvs/debian-boot login cvs -d :pserver:anonymous@cvs.debian.org:/cvs/debian-boot -z3 checkout debian-cd cvs -d :pserver:anonymous@cvs.debian.org:/cvs/debian-boot logout |
Im aktuellen Verzeichnis wird ein Verzeichnis debian-cd erstellt in dem sich die neuesten Dateien befinden. Wenn diese Version aktualisiert werden soll sind beim nächsten Aufruf folgende Kommandos notwendig:
cvs -d :pserver:anonymous@cvs.debian.org:/cvs/debian-boot login cvs -d :pserver:anonymous@cvs.debian.org:/cvs/debian-boot -z3 update -d -P cvs -d :pserver:anonymous@cvs.debian.org:/cvs/debian-boot logout |