Debian-Basissystem erstellen mit debootstrap #
Mittels des Debian-Tools debootstrap ist es möglich, ein komplettes Debian-System in ein vorhandenes Verzeichnis zu installieren. Dies ist immer dann interessant, wenn man von einem System aus ein anderes einrichten will. Dieses andere System kann z.B. eine zweite Festplatte sein, die man später als eigenes System starten möchte oder auch ein virtuelles System, das dann später mit QEmu oder UserModeLinux benutzt wird.
Installation #
Man braucht lediglich das entsprechende Debian-Paket zu installieren:
aptitude install debootstrap
Vorgehensweise für ein Basissystem #
Ich nehme hier als Beispiel ein Verzeichnis krefix (für unser KrefixLinux2), in das ich mein Basissystem installieren möchte (Dies kann natürlich auch eine frisch formatierte Partition sein, die an diese Stelle gemountet ist).
Basissystem "Debian Sarge" durch das debootstrap-Kommando installieren lassen.
debootstrap sarge krefix/ http://ftp.de.debian.org/debianoder z.B. folgendes, wenn man einen eigenen Mirror hat:
debootstrap sarge krefix/ http://mirrors.bayen.loc/debianIn das neue System hineingehen, dabei störende Umgebungsvariablen löschen (das neue System hat noch keine locales):
chroot krefix export LANGUAGE="" LANG=""Lokale Anpassungen vornehmen. Als erstes den Paketmanager konfigurieren, um weitere Pakete installieren zu können:
# entweder von Hand: echo "deb http://ftp.de.debian.org/debian sarge main" >/etc/apt/sources.list echo "deb http://security.debian.org/ stable/updates main" >>/etc/apt/sources.list # oder per Menü: apt-setupWer will, kann die AptPaketverwaltung jetzt folgendermassen benutzen, um Pakete zu installieren:
apt-get update apt-get install joe lessDas Systemverzeichnis /proc muss zugänglich sein:
echo "proc /proc proc defaults 0 0" >/etc/fstab mount /procJe nach Anwendungszweck ist es sinnvoll, in /etc/fstab noch das root-Dateisystem anzugeben:
echo "/dev/hda1 / ext3 defaults,errors=remount-ro 0 1" >>/etc/fstabAnpassen von Dateien in /etc
echo "krefix" >/etc/hostnameAnlegen von Devices wenn nötig wie folgt. Bei aktuellem Kernel und genug Platz besser Installation des Paketes udev:
cd /dev MAKEDEV updateNun kann man noch alles mögliche andere Installieren und das System so auf seinen Zweck zuschneiden.
...verlassen kann man das System wieder mit:
umount /proc exit
Zusätze #
Kernel #
In den allermeisten Anwendungen ist es sinnvoll, einen Kernel zu installieren. Dazu geht man wie oben beschrieben in das System hinein und installiert ein Debian Kernel-Paket seiner Wahl. Bei einem System in einem Image, das z.B. zum direkten Booten oder für QEmu genutzt werden soll, benötigt man das ganze Kernelpaket. Bei UserModeLinux oder einem DisklessClient braucht man zwar eigentlich keinen Kernel (weil dieser vor dem Zugriff auf das System-Verzeichnis bereits woanders hergekommen ist), allerdings sollte man sehen, das die benötigten Kernelmodule an Ihren Platz kommen.
Dinge, die eigentlich immer eingerichtet werden müssen: #
Diese Einrichtungen benötige ich eigentlich in jedem System, das ich per debootstrap aufgesetzt habe. Wer natürlich besonders esoterische Anwendungszwecke hat, sollte diese Anregungen nochmal selber überdenken:
aptitude install ssh echo -e "auto lo\niface lo inet loopback" >>etc/network/interfaces passwd aptitude install locales dpkg-reconfigure console-commonErlaubt die Verwendung von dns-nameservers und dns-domain in /etc/network/interfaces:
aptitude install resolvconfNormalerweise benötigt man auch einen Eintrag für ein Interface in /etc/network/interfaces. Dieser kann z.B. so aussehen:
auto eth0 iface eth0 inet static address 192.168.101.17 netmask 255.255.255.0 gateway 192.168.101.1 dns-nameservers 192.168.101.1 dns-domain lug-kr.loc
späteres Warten des Systems #
Wenn man auf dem Rechner arbeitet, von dem man aus das System installiert hat, kann man so in das System "hineingehen" (Die exports sind nur nötig, wenn man keine locales installiert hat):
chroot krefix export LANGUAGE="" LANG="" mount /proc...und so "hinausgehen":
umount /proc exit
Mehrmaliges Verwenden eines Basissystems (Klonen) #
Hat man nun ein solches debootstrap-Basissystem erzeugt, kann man sich beim nächsten Mal die Arbeit verkürzen, wenn man eine Kopie des frisch erzeugten Verzeichnisses zur Seite legt und einige Dinge beachtet. In einer neuen Kopie ist folgendes anzupassen:
Je nachdem, wieviel Zeit ins Land gegangen ist, kann ein Upgrade sinnvoll sein:
aptitude update aptitude dist-upgradeDer Name des Systems soll für einen neuen Verwendungszweck sicherlich geändert werden:
echo "meinhostname" >/etc/hostnameDie ssh-Host-Schlüssel müssen neu erzeugt werden, damit nicht später zwei verschiedene Systeme identische Schlüssel haben:
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsaGgf. muss /etc/network/interfaces angepasst werden, wenn man kein DHCP verwendet.
Andere Distributionen (Ubuntu Linux)#
Man kann auf einem Debian-Basissystem übrigens auch sehr einfach ein Ubuntu-Gastsystem erzeugen. Dazu benötigt man lediglich die aktuelle Version den Ubuntu-debootstrap-Paketes, die man z.B. auf https://wiki.ubuntu.com/DebootstrapChroot bekommt und dann mit dpkg -i debootstrap_0.3.3.0ubuntu7_all.deb installiert. Dann kann man mit einem Befehl wie dem folgenden ein Ubuntu-System installieren:
debootstrap edgy myubuntu/ http://archive.ubuntu.com/ubuntu/
Auch für RPM-basierte Distributionen (Suse, Red Hat/Fedora) soll es ein Tool namens rpmbootstrap geben. Damit habe ich allerdings noch nicht gearbeitet. (Wozu auch, wenn man Debian und Ubuntu hat :-) )
Links #
- http://www.underhanded.org/papers/debian-conversion/remotedeb.html - englischsprachige Anleitung für Installation mit debootstrap
- http://ftp.ubuntulinux.org/ubuntu/dists/warty/main/installer-i386/current/doc/manual/en/apcs03.html - debootstrap Installation von Ubuntu