D.3. Debian GNU/Linux von einem anderen Unix/Linux-System aus installieren

Dieses Kapitel beschreibt, wie man Debian GNU/Linux von einem vorhandenen Unix- oder Linux-System aus installiert, ohne den menügeführten Installer zu verwenden, der im Rest dieses Handbuchs beschrieben wird. Dieses Quereinsteiger-HowTo wurde von Leuten erbeten, die von Red Hat, Mandriva oder Suse zu Debian GNU/Linux wechseln. In diesem Kapitel gehen wir davon aus, dass Sie ein wenig Erfahrung mit *nix-Befehlen haben sowie mit der Navigation durch das Dateisystem. In diesem Abschnitt symbolisiert ein $ einen Befehl, der im Homeverzeichnis des Benutzers ausgeführt wird, während # bedeutet, dass das Kommando im Debian-chroot ausgeführt wird.

Sobald Sie das neue Debian-System nach Ihren Wünschen konfiguriert haben, können Sie Ihre eventuell vorhandenen eigenen Dateien hinüber verschieben und loslegen. Deswegen wird dies auch die zero-downtime-Installation (Installation ohne eine Zeitspanne, während der das System nicht verfügbar ist) genannt. Es ist ebenso ein geschickter Weg, mit Hardware-Komponenten zurechtzukommen, die sich sonst nicht gut mit verschiedenen Boot- oder Installationsmedien vertragen.

[Anmerkung] Anmerkung

Da dies überwiegend eine manuelle Prozedur ist, sollten Sie im Hinterkopf behalten, dass Sie einen erheblichen Teil der grundlegenden Systemkonfiguration selbst erledigen müssen, was auch mehr Wissen über Debian und über Linux allgemein erfordert als eine reguläre Installation. Sie können nicht davon ausgehen, dass Sie durch diese Prozedur ein System erhalten, das identisch ist zu dem aus einer normalen Installation. Sie sollten auch bedenken, dass in dieser Prozedur nur die grundlegenden Schritte zur Systemkonfiguration beschrieben sind. Es könnten zusätzliche Installations- oder Konfigurationsschritte erforderlich sein.

D.3.1. Es geht los!

Benutzen Sie die *nix-Partitionierungsprogramme des vorhandenen Systems, um Ihre Festplatte nach Bedarf neu zu partitionieren; erstellen Sie zumindest ein neues Dateisystem plus Swap. Sie benötigen ungefähr 1012 MB Speicher für eine Nur-Konsolen-Installation oder ca. 2539 MB, wenn Sie vorhaben, X zu installieren (und noch mehr, wenn Sie Desktop-Umgebungen wie GNOME oder KDE Plasma installieren möchten).

Dateisysteme auf Ihren Partitionen erzeugen: um ein Dateisystem auf einer Partition zu erstellen, zum Beispiel ein ext3-Dateisystem auf /dev/sda6 (dies soll in diesem Beispiel unsere Root-Partition sein):

# mke2fs -j /dev/sda6

Um stattdessen ein ext2-Dateisystem zu erzeugen, lassen Sie das -j weg.

Initialisieren und aktivieren Sie den Swap (passen Sie die Partitionsnummer für Ihre geplante Debian-Swap-Partition an):

# mkswap /dev/sda5
# sync
# swapon /dev/sda5

Hängen Sie eine Partition (wahrscheinlich die neue) als /mnt/debinst ins Dateisystem ein (das Installationsverzeichnis; es wird das Root-(/)-Dateisystem des neuen Debian). Der Einbindungspunkt (/mnt/debinst) ist rein willkürlich gewählt; es wird später noch öfter darauf verwiesen.

# mkdir /mnt/debinst
# mount /dev/sda6 /mnt/debinst

[Anmerkung] Anmerkung

Falls Sie Teile des Dateisystems (z.B. /usr) auf andere Partitionen speichern und eingebinden möchten, müssen Sie diese Verzeichnisse manuell erstellen und einbinden, bevor Sie mit dem nächsten Schritt fortfahren.

D.3.2. debootstrap installieren

Das Programm, das auch der Debian-Installer benutzt und das als offizielle Methode angesehen wird, ein Debian-Basissystem zu installieren, ist debootstrap. Es nutzt wget und ar, aber ansonsten hängt es nur von /bin/sh und grundsätzlichen Unix-/Linuxwerkzeugen[21] ab. Installieren Sie wget und ar, falls sie noch nicht auf Ihrem laufenden System vorhanden sind; dann laden Sie debootstrap herunter und installieren es ebenfalls.

Oder Sie nutzen die folgende Prozedur, um es manuell zu installieren. Erstellen Sie ein Arbeitsverzeichnis, in das Sie die .deb-Pakete entpacken.

# mkdir work
# cd work

Das debootstrap-Binary finden Sie im Debian-Archiv (achten Sie darauf, die richtige Datei für Ihre Architektur zu verwenden). Laden Sie das debootstrap.deb aus dem Pool herunter, kopieren Sie es in das Arbeitsverzeichnis work und extrahieren Sie daraus die Dateien. Sie benötigen root-Rechte, um die Binär-Dateien zu installieren.

# ar -xf debootstrap_0.X.X_all.deb
# cd /
# zcat /full-path-to-work/work/data.tar.gz | tar xv

D.3.3. Starten Sie debootstrap

debootstrap kann die benötigten Dateien direkt vom Archiv herunterladen, wenn Sie es starten. Sie können in dem folgenden Befehl jeden Debian-Archivspiegel-Server statt ftp2.de.debian.org/debian einsetzen, vorzugsweise einen Server in Ihrer Nähe. Eine Liste aller Spiegel-Server finden Sie auf http://www.debian.org/mirror/list.

Wenn Sie ein Debian GNU/Linux Bookworm Installations-Image in /cdrom eingebunden haben, können Sie statt der http-URL auch eine file-URL angeben: file:/cdrom/debian/.

Setzen Sie in dem folgenden debootstrap-Befehl für ARCH eine der folgenden Architekturbezeichnungen ein: amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x.

# /usr/sbin/debootstrap --arch ARCH bookworm \
    /mnt/debinst http://ftp.de.debian.org/debian

Falls die Zielarchitektur sich von der des Host-Systems unterscheidet, sollten Sie hier die Option --foreign hinzufügen.

D.3.4. Das Basissystem konfigurieren

Sie haben jetzt ein echtes, aber noch etwas mageres Debian-System auf der Festplatte. Wechseln Sie mit chroot hinein:

# LANG=C.UTF-8 chroot /mnt/debinst /bin/bash

Falls die Zielarchitektur sich von der des Host-Systems unterscheidet, müssen Sie vorher qemu-user-static installieren und auf das neue System kopieren:

# cp /usr/bin/qemu-ARCH-static /mnt/debinst/usr/bin
# LANG=C.UTF-8 chroot /mnt/debinst qemu-ARCH-static /bin/bash

Danach müssen Sie unter Umständen die Definition der Terminal-Variable anpassen, so dass sie mit dem Debian-Basissystem kompatibel ist, zum Beispiel:

# export TERM=xterm-color

Abhängig von dem Wert von TERM müssen Sie unter Umständen das Paket ncurses-term installieren, um Unterstützung dafür zu bekommen.

Falls die Zielarchitektur sich von der des Host-Systems unterscheidet, müssen Sie den Multistage-Bootstrap-Vorgang abschließen mit:

/debootstrap/debootstrap --second-stage

D.3.4.1. Gerätedateien erzeugen

An diesem Punkt enthält /dev/ nur sehr grundlegende Gerätedateien. Für die nächsten Schritte der Installation könnten zusätzliche Gerätedateien benötigt werden. Es gibt verschiedene Wege, hiermit umzugehen; welchen Sie benutzen, hängt von verschiedenen Faktoren ab: welches Gast-System Sie für die Installation verwenden, ob Sie vorhaben, einen modularen Kernel zu verwenden oder nicht und ob Sie für das neue System dynamische Gerätedateien (z.B. mittels udev) benutzen möchten oder statische.

Einige der verfügbaren Optionen sind:

  • installieren Sie das Paket makedev und erzeugen Sie einen Standardsatz von statischen Gerätedateien, indem Sie (nach dem Chroot) Folgendes ausführen:

    # apt install makedev
    # mount none /proc -t proc
    # cd /dev
    # MAKEDEV generic
    

  • erzeugen Sie manuell lediglich bestimmte Gerätedateien mittels MAKEDEV.

  • binden Sie das Verzeichnis /dev aus Ihrem Gast-System als /dev in Ihr Zielsystem ein. Beachten Sie, dass die postinst-Skripte einiger Pakete versuchen könnten, neue Gerätedateien zu erzeugen; deshalb sollte diese Option nur mit Vorsicht verwendet werden.

D.3.4.2. Partitionen einbinden

Sie müssen die Datei /etc/fstab erzeugen.

# editor /etc/fstab

Hier ein Beispiel, das Sie sich anpassen können:

# /etc/fstab: statische Dateisystem-Informationen.
#
# file system    mount point   type    options                  dump  pass
/dev/XXX         /             ext3    defaults                 0     1
/dev/XXX         /boot         ext3    ro,nosuid,nodev          0     2

/dev/XXX         none          swap    sw                       0     0
proc             /proc         proc    defaults                 0     0

/dev/cdrom       /media/cdrom  iso9660 noauto,ro,user,exec      0     0

/dev/XXX         /tmp          ext3    rw,nosuid,nodev          0     2
/dev/XXX         /var          ext3    rw,nosuid,nodev          0     2
/dev/XXX         /usr          ext3    rw,nodev                 0     2
/dev/XXX         /home         ext3    rw,nosuid,nodev          0     2

Nutzen Sie den Befehl mount -a, um alle Dateisysteme, die Sie in /etc/fstab angegeben haben, einzubinden; um die Dateisysteme einzeln einzubinden, benutzen Sie:

# mount /path   # z.B.: mount /usr

Aktuelle Debian-Systeme haben Einbindungspunkte (Mountpoints) für Wechseldatenträger in /media, behalten aber aus Kompatibilitätsgründen auch symbolische Links in /. Erstellen Sie diese nach Bedarf, zum Beispiel mit:

# cd /media
# mkdir cdrom0
# ln -s cdrom0 cdrom
# cd /
# ln -s media/cdrom

Sie können das proc-Dateisystem mehrfach einbinden und in frei wählbare Verzeichnisse, obwohl /proc dafür üblich ist. Wenn Sie nicht mount -a verwendet haben, stellen Sie sicher, dass proc eingebunden ist, bevor Sie fortfahren:

# mount -t proc proc /proc

Der Befehl ls /proc sollte jetzt ein nicht-leeres Verzeichnis zeigen. Falls dies fehlschlägt, können Sie vielleicht proc außerhalb der chroot-Umgebung einbinden:

# mount -t proc proc /mnt/debinst/proc

D.3.4.3. Die Zeitzone setzen

Indem Sie die dritte Zeile der Datei /etc/adjtime auf UTC oder LOCAL setzen, legen Sie fest, ob das System die Hardware-CMOS-Uhr als UTC-Zeit oder als lokale Zeit interpretiert. Mit folgendem Befehl können Sie diese Option setzen:

# editor /etc/adjtime

Hier ein Beispiel:

0.0 0 0.0
0
UTC

Mit folgendem Befehl wählen Sie Ihre Zeitzone aus:

# dpkg-reconfigure tzdata

D.3.4.4. Das Netzwerk konfigurieren

Um Ihr Netzwerk einzurichten, müssen Sie die Dateien /etc/network/interfaces, /etc/resolv.conf, /etc/hostname und /etc/hosts anpassen.

# editor /etc/network/interfaces 

Hier sind ein paar einfache Beispiele aus /usr/share/doc/ifupdown/examples:

######################################################################
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# See the interfaces(5) manpage for information on what options are 
# available.
######################################################################

# Die Loopback-Schnittstelle wird eigentlich nicht mehr benötigt, kann
# aber benutzt werden, falls erforderlich.
#
# auto lo
# iface lo inet loopback

# Wenn Sie DHCP benutzen möchten:
#
# auto eth0
# iface eth0 inet dhcp

# Ein Beispiel für eine statische IP-Einstellung (network, broadcast und
# gateway sind hierbei optional):
# auto eth0
# iface eth0 inet static
#     address 192.168.0.42
#     network 192.168.0.0
#     netmask 255.255.255.0
#     broadcast 192.168.0.255
#     gateway 192.168.0.1

Tragen Sie die Adresse Ihres/Ihrer Nameserver(s) sowie Suchregeln in /etc/resolv.conf ein:

# editor /etc/resolv.conf

Eine einfache beispielhafte /etc/resolv.conf:

search example.com
nameserver 10.1.1.36
nameserver 192.168.9.100

Geben Sie den Hostnamen Ihres Systems ein (zwischen 2 und 63 Stellen lang):

# echo DebianHostName > /etc/hostname

Und hier ein Beispiel für /etc/hosts mit IPv6-Unterstützung:

127.0.0.1 localhost
127.0.1.1 DebianHostName

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Wenn Sie mehrere Netzwerkkarten haben, sollten Sie die Namen der Treibermodule in /etc/modules in die richtige Reihenfolge bringen. Während des Bootens wird dann jede Karte die Schnittstellenbezeichnung (eth0, eth1, etc.) bekommen, die Sie erwarten.

D.3.4.5. Apt konfigurieren

Debootstrap hat eine grundsätzliche /etc/apt/sources.list erstellt, die es erlaubt, zusätzliche Pakete zu installieren. Allerdings möchten Sie vielleicht einige Quellen hinzufügen, z.B. für Quellpakete oder für Sicherheits-Updates:

deb-src http://ftp.de.debian.org/debian bookworm main

deb http://security.debian.org/ bookworm-security main
deb-src http://security.debian.org/ bookworm-security main

Denken Sie daran, apt update auszuführen, nachdem Sie die Datei sources.list geändert haben.

D.3.4.6. Das Gebietsschema (Locales) konfigurieren

Um Ihre lokalen Einstellungen anzupassen, wenn Sie nicht Englisch verwenden möchten, installieren Sie das Paket locales und konfigurieren es. Es wird die Verwendung von UTF-8-Gebietsschemata empfohlen.

# apt install locales
# dpkg-reconfigure locales

Um Ihre Tastatur zu konfigurieren (falls nötig):

# apt install console-setup
# dpkg-reconfigure keyboard-configuration 

Beachten Sie, dass die Tastatureinstellung nicht verändert werden kann, während Sie im chroot sind; die Konfiguration wird jedoch beim nächsten Neustart aktiv.

D.3.5. Einen Kernel installieren

Wenn Sie vorhaben, dieses System zu booten, möchten Sie wahrscheinlich einen Linux-Kernel und einen Bootloader. Sie finden verfügbare, bereits fertig paketierte Kernel mit dem Befehl

# apt search linux-image

Installieren Sie einen Kernel Ihrer Wahl, indem Sie seinen Paketnamen benutzen:

# apt install linux-image-arch-etc

D.3.6. Den Bootloader einrichten

Um Ihr Debian GNU/Linux-System boot-fähig zu machen, richten Sie Ihren Bootloader ein, so dass er den installierten Kernel mit Ihrer neuen Root-Partition startet. Bedenken Sie, dass debootstrap keinen Bootloader installiert, allerdings können Sie apt in Ihrer Debian-chroot-Umgebung benutzen, um dies zu erledigen.

Beachten Sie, dass hier davon ausgegangen wird, dass eine Gerätedatei namens /dev/sda erzeugt worden ist. Es gibt alternative Möglichkeiten, grub2 zu installieren, aber das ist nicht Thema dieses Anhangs.

D.3.7. Fernzugriff: Installation von SSH und Einrichten eines Zugangs

Für den Fall, dass Sie sich auf dem System über die Konsole anmelden können, kann dieser Abschnitt übersprungen werden. Falls das System später über das Netzwerk erreichbar sein soll, müssen Sie SSH installieren und einen Zugang einrichten:

# apt install ssh

Das Login als root ist standardmäßig deaktiviert, daher können Sie einen Zugang einrichten, indem Sie ein Passwort setzen und das Login für root mit Passwort wieder aktivieren:

# passwd
# editor /etc/ssh/sshd_config

Dies ist die Option, die aktiviert werden muss:

PermitRootLogin yes

Es kann ebenfalls ein Zugang eingerichtet werden, indem ein SSH-Schlüssel für root hinzugefügt wird:

# mkdir /root/.ssh
# cat << EOF > /root/.ssh/authorized_keys
ssh-rsa ....
EOF

Und zu guter Letzt können Sie einen Zugang einrichten, indem Sie einen nicht-root-Benutzer anlegen und für diesen ein Passwort setzen:

# adduser joe
# passwd joe

D.3.8. Zum Schluss

Wie bereits vorher erwähnt, wird das installierte System nur sehr minimalistisch ausgestattet sein. Wenn Sie möchten, dass das System ein bisschen ausgereifter wird, gibt es eine einfache Methode, alle Pakete mit Standard-Priorität zu installieren:

# tasksel install standard

Sie können natürlich auch einfach apt benutzen, um individuell Pakete zu installieren.

Nach der Installation liegen viele heruntergeladene Pakete in dem Verzeichnis /var/cache/apt/archives/. Sie können etliches an Festplattenspeicher wieder freigeben, indem Sie folgendes ausführen:

# apt clean



[21] Dazu gehören die GNU Core Utilities und Kommandos wie sed, grep, tar und gzip.