!!! 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 :-) )

!! 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

[{Tag Debian ThinClient Virtualisierung APT}]