5.13 Erstellen von eigenen Debian GNU/Linux-CD-ROMs

Debian GNU/Linux-CD-ROMs sind im Handel, als Beilage zu Zeitschriften oder zum Download als Image erhältlich. Natürlich bietet Debian Ihnen aber auch die Möglichkeit, eigene bootfähige CDs herzustellen und diese an Ihre eigenen Bedürfnisse anzupassen. Hierzu steht das Paket debian-cd zur Verfügung.

Zunächst sollten Sie jedoch dafür sorgen, dass die benötigten Dateien für die CDs auf Ihrem System vorhanden sind. Hierzu ist es üblich, eine lokale Kopie (Spiegel) der gewünschten Architektur(en) (z.B. i386) anzulegen. Das Programm 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 Festplattenplatz.

Nach der Installation dieses Pakets finden sich die notwendigen Dateien im Verzeichnis /usr/share/debian-cd/. In der Datei CONF.sh müssen einige Zeilen angepasst werden.

5.13.1 Konfiguration

  • export CODENAME=woody - Hier wird die Variable für die gewünschte Version gesetzt. Es sollte bei einem kompletten Spiegel 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 Release-Stand 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 dass man beruhigt dem Programm dpkg die Aufgabe übertragen kann, den richtigen Wert zu ermitteln. Natürlich ist es 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 Links verwendet werden können. Diese Option muss auch gesetzt sein, falls die Daten auf einem per NFS gemounteten Laufwerk liegen.

  • export MIRROR=/home/ftp/debian - Pfad zum Debian Spiegel. Das Verzeichnis, unterhalb dessen 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, einmal 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, dass nur eine der Optionen NONFREE oder EXTRANONFREE benutzt werden kann.

  • 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 das Kommentarzeichen (#) 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 angegeben werden, mit dem die ISO-Dateien erzeugt werden. Es 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 einiger Quellpakete, die ebenfalls nicht auf den CDs erscheinen sollen.

Hier sehen Sie 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="4.0 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

5.13.2 Erstellen der CD-Images

Für das eigentliche Erstellen der CD-Image-Dateien stehen zwei Shell-Skripts zur Verfügung. build.sh erstellt Image-Dateien 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 CD-Image-Dateien für alle Architekturen.

5.13.3 Aktualisieren von debian-cd

Wenn CD-Images für eine Entwicklungsversion von Debian erstellt werden sollen, so kann es passieren, dass 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

 Impressum