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/debian
oder z.B. folgendes, wenn man einen eigenen Mirror hat:
  debootstrap sarge krefix/ http://mirrors.bayen.loc/debian
In 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-setup
Wer will, kann die AptPaketverwaltung jetzt folgendermassen benutzen, um Pakete zu installieren:
  apt-get update
  apt-get install joe less
Das Systemverzeichnis /proc muss zugänglich sein:
  echo "proc /proc proc defaults 0 0" >/etc/fstab
  mount /proc
Je nach Anwendungszweck ist es sinnvoll, in /etc/fstab noch das root-Dateisystem anzugeben:
  echo "/dev/hda1 / ext3 defaults,errors=remount-ro 0 1" >>/etc/fstab
Anpassen von Dateien in /etc
  echo "krefix" >/etc/hostname
Anlegen von Devices wenn nötig wie folgt. Bei aktuellem Kernel und genug Platz besser Installation des Paketes udev:
  cd /dev
  MAKEDEV update
Nun 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-common
Erlaubt die Verwendung von dns-nameservers und dns-domain in /etc/network/interfaces:
  aptitude install resolvconf 
Normalerweise 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-upgrade
Der Name des Systems soll für einen neuen Verwendungszweck sicherlich geändert werden:
  echo "meinhostname" >/etc/hostname
Die 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 rsa
Ggf. 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 :-) )

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-7) was last changed on 15-Feb-2011 12:12 by Peter Hormanns