Start   Impressum   Lizenz         online lesen   Download         Online-Shop   Jumping Blue Turtle

Debian für Unternehmer - Debian-Know-how

0382: 31 CDs herunterladen und daraus eine BD erzeugen

Dieses Modul ist eine Sackgasse. Was hier steht, ist etwas umständlich und empfehle ich eigentlich nur dann, wenn Sie keinen mit "jigdo" ausgestatteten Internet-Rechner zur Verfügung haben (z.B. weil Ihr einziger Internetzugang ein mit Solarstrom betriebener Mini-PC ist, der seit mehreren Jahren nicht mehr gebootet wurde, um einen "uptime"-Rekord aufzustellen, und deshalb auf diesem Rechner nur ein sehr altes Linux läuft).

Weil dieser Ansatz so witzig ist und ich die hochgezüchteten Shell-Skripte (die durchaus zum Ausschlachten noch zu gebrauchen sind) sonst wegwerfen müsste, gebe ich diesen Ansatz hiermit in einem separaten Modul zum Besten.

1. Die Download-Werkzeuge installieren

Sie brauchen "wget" und "jigdo".

apt-get install wget
apt-get install jigdo-file

2. BD-Image herunterladen

Kommen wir gleich zur Sache, ohne lange um den heißen Brei herumzureden.

2.1. Mehr Loop-Devices reservieren

Per Default ist die Anzahl der mount-baren Loop-Devices unter Linux auf 8 beschränkt. Das können Sie selbst ausprobieren, indem Sie mal versuchen, mehr als 8 virtuelle Partitionen (zum Beispiel CD-Images) gleichzeitig zu mounten. Sie werden das nicht schaffen. Mit dem Versuch, die neunte virtuelle Partition zu mounten, erhalten Sie die Fehlermeldung "mount: could not find any free loop device".

Ich werde Ihnen weiter unten empfehlen, 31 CD-Images gleichzeitig zu mounten. Damit das klappt, muss die Anzahl der möglichen Loop-Devices erhöht werden, zum Beispiel auf 64. Editieren Sie dazu die Datei "/etc/modules". Ändern Sie den Eintrag "loop" um in "loop max_loop=64". Der neue Inhalt der Datei könnte nun wie folgt aussehen:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

loop max_loop=64
sbp2

Starten Sie den Rechner neu, damit die Option wirksam wird.

2.2. CD-Images herunterladen

Laden Sie zunächst die 31 CD-Images herunter.

Erzeugen Sie dazu eine Datei mit dem Namen "1get_debian.sh" und geben Sie ihr Ausführungsrechte:

>1get_debian.sh
chmod 755 1get_debian.sh

Füllen Sie die Datei mit folgendem Inhalt:

#!/bin/bash

DEBIAN_PATH1="5.0.4"
DEBIAN_IMG_NAME="debian-504-i386-CD-"

if !(test -d "tmp"); then
  mkdir tmp
fi

rm tmp/*.iso

for LOOP in `seq 1 31`;
do
  if !(test -e ${DEBIAN_IMG_NAME}${LOOP}.iso); then
    cd tmp
    wget http://cdimage.debian.org/debian-cd/${DEBIAN_PATH1}/i386/iso-cd/${DEBIAN_IMG_NAME}${LOOP}.iso
    cd ..
    mv tmp/${DEBIAN_IMG_NAME}${LOOP}.iso .
  fi
done

Wenn Sie soweit sind, dann starten Sie das Skript:

./1get_debian.sh

Wenn das Skript läuft, dann lädt es der Reihe nach alle CD-Images herunter. Im "tmp"-Verzeichnis befindet sich immer das Image, das aktuell heruntergeladen wird. Wenn es fertig ist, dann verschiebt das Skript das Image eine Verzeichnis-Ebene höher.

Wenn Sie den Rechner zwischendurch ausschalten müssen, dann brechen Sie das Skript per <Ctrl>+<C> ab.

Wenn Sie später da weitermachen wollen, wo Sie vorher aufgehört haben, dann starten Sie das Skript einfach erneut.

Das Skript löscht zunächst den angebrochenen Download vom letzten mal, da er nutzlos ist (die Debian-Server unterstützen offenbar die "--continue"-Option von "wget" nicht). Anschließend überspringt das Skript alle die Images, die bereits vollständig heruntergeladen wurden. Es lädt dann genau das Image erneut herunter, bei dem Sie beim letzten Mal den Download-Prozess abgebrochen hatten.

Wenn alle 31 Images heruntergeladen wurden, befinden sie sich fein säuberlich in dem Verzeichnis, in dem sich auch das Download-Skript befindet.

2.3. CD-Images mounten

Im nächsten Schritt können Sie die CD-Images zu einem BD-Image konvertieren. Damit das klappt, müssen Sie die CD-Images aber zunächst mounten.

Erzeugen Sie dazu eine Datei mit dem Namen "2mount_cd-images.sh" und geben Sie ihr Ausführungsrechte:

>2mount_cd-images.sh
chmod 755 2mount_cd-images.sh

Füllen Sie die Datei mit folgendem Inhalt:

#!/bin/bash

DEBIAN_IMG_NAME="debian-504-i386-CD-"

if !(test -d "/mnt"); then
  mkdir /mnt
fi

for LOOP in `seq 1 31`;
do
  if !(test -d "cd-nummer-${LOOP}"); then
    mkdir /mnt/cd-nummer-${LOOP}
  fi

  mount -t iso9660 ${DEBIAN_IMG_NAME}${LOOP}.iso /mnt/cd-nummer-${LOOP} -o loop
done

Für das Umounten erzeugen Sie anschließend eine Datei mit dem Namen "3umount_cd-images.sh" nebst Ausführungsrechten:

>3umount_cd-images.sh
chmod 755 3umount_cd-images.sh

Und das ist der Inhalt:

#!/bin/bash

if !(test -d "/mnt"); then
  exit
fi

for LOOP in `seq 1 31`;
do
  if test -d "/mnt/cd-nummer-${LOOP}"; then
    umount /mnt/cd-nummer-${LOOP}
    rmdir /mnt/cd-nummer-${LOOP}
  fi
done

2.4. CD-Images in ein BD-Image konvertieren

Jetzt haben Sie alles, was Sie brauchen, um schnell an ein BD-Image zu kommen. Wie lange der Prozess dauern wird, hängt davon ab, wie schnell Ihre Festplatte ist. Wenn Sie die Wahl zwischen einer USB- und einer eSATA-Festplatte haben, dann benutzen Sie für diesen Schritt die eSATA-Festplatte.

Und los geht es: Mounten Sie die CD-Images und laden Sie die Image-Datei (inklusive der Checksummen) wie folgt vom Server herunter:

mkdir bd
cd bd
wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-bd/MD5SUMS
wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-bd/SHA1SUMS
wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-bd/MD5SUMS.sign
wget http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-bd/SHA1SUMS.sign
wget http://cdimage.debian.org/debian-cd/5.0.4/i386/jigdo-bd/debian-504-i386-BD-1.jigdo
wget http://cdimage.debian.org/debian-cd/5.0.4/i386/jigdo-bd/debian-504-i386-BD-1.template
jigdo-lite debian-504-i386-BD-1.jigdo
cd ..

Sobald Sie den "jigdo-lite"-Befehl abgesetzt haben, werden Sie gleich am Anfang gefragt, ob Sie bereits CD-Images auf Ihrem Rechner haben. Bei "Files to scan:" geben Sie nun den Pfad an, in dem alle Ihre CD-Images gemountet sind:

/mnt

Jetzt durchsucht "jigdo" alle 31 Unterordner, die sich im Verzeichnis "/mnt" befinden.