Basisinstallation

Dieses Dokument beschreibt die Installation eines minimalen Debian-Systems, gibt Hinweise zur Partitionierung und beschreibt die Konfiguration des Netzwerks und der wichtigsten Dienste.

Daten sammeln

Hardware
Architektur des Prozessors und Größe des Arbeitsspeichers
Festplatten
Kapazität, Partitionen und Dateisysteme
Netzwerk
DHCP oder IP-Adresse des Nameservers und des Standard-Gateways

Installationsmedien erstellen

Es gibt mehrere Möglichkeiten, Debian zu installieren: von den offiziellen CDs, von einem USB-Stick, über das Netzwerk mittels TFTP oder aus einem laufenden System heraus mittels debootstrap(8).

USB-Stick

Zur Erstellung eines bootfähigen USB-Sticks braucht man einen Kernel, eine Initiale Ramdisk und das ISO-Abbild eines Minimalsystems. Nach dem Kopieren dieser Dateien auf den Stick wird er bootfähig gemacht:

cp vmlinuz initrd.gz debian-version-architecture-businesscard.iso /media/usbdisk
cat << . > /media/usbdisk/syslinux.cfg
default vmlinuz
append initrd=initrd.gz
.
syslinux /dev/sda1
install-mbr /dev/sda

Beim anschließenden Neustart des Rechners muss im BIOS eventuell noch die Boot-Reihenfolge angepasst werden.

Festplatte partitionieren

Es ist eine gute Idee, getrennte Partitionen für das System und die Heimatverzeichnisse anzulegen. Eine separate Partition für den Auslagerungsspeicher (Swap-Partition) wird nicht mehr benötigt, das Paket swapspace verwaltet Auslagerungsdateien dynamisch zur Laufzeit.

Klassisch mit LVM

Während der Partitionierung lassen sich einzelne Festplatten zu einem RAID-Verbund zusammenschliessen. Solche Verbünde – oder auch mehrere physische Platten – lassen sich wiederum als Volumengruppe organisieren, auf dem man Logische Volumen (analog zu Partitionen) anlegen kann.

Einhänhepunkt /boot / /home /srv
Dateisystem ext4 ext4 ext4 ext4
Logische Volumen lvroot lvhome lvsrv
Volumengruppen vg0
RAID-Verbund md0 md1
Physiche Volumen /dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2

Da der Bootloader grub den Kernel nicht von einem logischen Volumen starten kann, muss das /boot-Dateisystem auf eine eigene Partition.

RAID-Verbund anlegen
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
Volumengruppe anlegen
pvcreate /dev/md1
vgcreate vg0 /dev/md1
Logische Volumen anlegen
lvcreate --size=8G   --name lvroot vg0
lvcreate --size=110G --name lvhome vg0
lvcreate --size=200G --name lvsrv  vg0
Dateisystem erzeugen
mkfs.ext4 /dev/vg0/lvroot
Logisches Volumen löschen
Logisches Volumen vergrößern
Logisches Volumen verschieben
# /etc/mdadm/mdadm.conf

DEVICE partitions
CREATE owner=root group=disk mode=0660 auto=yes
HOMEHOST <system>
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=c439e50b:60224c36:aeaf7525:75020ed5
   spares=1
ARRAY /dev/md1 level=raid5 num-devices=5 UUID=19dfb46b:459ad2f9:11286dfb:e6b9c6c6

Modern mit Btrfs

Das Next Generation Copy on Write-Dateisystem Btrfs kann sich über mehrere Festplatten erstrecken, denn es beherrscht sowohl diverse RAID Level als auch logische Volumen in Form von Subvolumen.

Einhänhepunkt / /home /srv
Subvolumen @home @srv
Dateisystem btrfs
Physiche Volumen /dev/sda /dev/sdb

Gibt man beim Anlegen mehrere Festplatten an, werden Metadaten gespiegelt (RAID-1, Mirroring) und normale Daten reihum verteilt (RAID-0, Striping). Per Option sind auch andere Strategien wählbar. Siehe btrfs(8).

Dateisystem anlegen
mkfs.btrfs -L Label /dev/sda /dev/sdb
Subvolumen anlegen
btrfs subvolume create /home
btrfs subvolume create /srv
Schnappschuss eines Subvolumens aufnehmen
btrfs subvolume snapshot /home /home.Datum
Subvolumen/Schnappschuss löschen
btrfs subvolume delete /home.Datum
Festplatte hinzufügen
btrfs device add /dev/sdc
Festplatte entfernen
btrfs device delete /dev/sdc
Daten gleichmäßig umverteilen nach dem Hinzufügen und Entfernen von Festplatten
btrfs device balance /

Bootloader installieren

Die Konfigurationsdatei /boot/grub/menu.lst enthält die Kommandos für den Aufbau des Startmenüs.

# /boot/grub/menu.lst
default         0
timeout         10
color           cyan/blue white/blue

# Operating Systems
title           Debian GNU/Linux
root            (hd0,4)
kernel          /vmlinuz root=/dev/sda5 ro
initrd          /initrd.img
savedefault
boot

Das Kommando grub-install(1) beschreibt den MBR der Festplatte.

grub-install /dev/sda

Netzwerk verbinden

Auf Clientsystemen wird die Netzwerkschnittstelle automatisch per DHCP konfiguriert.

# /etc/dhcp3/dhclient.conf

send host-name "hostname"
request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, host-name,
        netbios-name-servers, netbios-scope, interface-mtu;

Auf Serversystemen hingegen arbeitet man meist mit statischen Adressen. Hier trägt man die Netzwerkdaten in die Datei /etc/network/interfaces ein.

# /etc/network/interfaces

# loopback device
auto lo
iface lo inet loopback

# built-in device with fixed address
auto eth0
iface eth0 inet static
		address   192.168.23.2
		netmask   255.255.255.0
		gateway   192.168.23.1

# removeable wireless device with dynamic address
allow-hotplug eth1
iface eth1 inet dhcp
		wpa-driver wext
		wpa-ssid   example
		wpa-psk    ILgo7izK7sJrFmqcBQFD6YW7ySnSJldNikLqumLKgwLn3qf52I0HKILh7OJXLqS

Die IP-Adresse des Nameservers stehen in der Datei /etc/resolv.conf.

# /etc/resolv.conf

domain example.local
search example.local
nameserver 192.168.23.1
nameserver 8.8.8.8

Secure Shell einrichten

Die Secure Shell erlaubt Fernadministration des Rechners. Der direkte Zugang des Superusers sowie Authentifizierung mittels Passwort werden abgestellt, sobald das System fertig installiert ist.

# /etc/ssh/sshd_config

# Authentication:
PermitRootLogin                 no
AllowUsers                      username
...
RSAAuthentication               yes
PubkeyAuthentication            yes
RhostsAuthentication            no
HostbasedAuthentication         no
ChallengeResponseAuthentication no 
PasswordAuthentication          no

Ohne Eingabe eines Passworts gelangt man auf den Zielrechner, indem man dort einen mit Hilfe von ssh-keygen(1) generierten RSA-Schlüssel ablegt:

ssh-copy-id username@hostname.example.net

Falls der SSH-Daemon auf dem entfernten Rechner nicht auf dem Standard-Port lauscht oder wenn der Benutzername nicht übereinstimmt, kann man sich durch einen Eintrag in ~/.ssh/config lästige Parameter einsparen:

# ~/.ssh/config

Host hostname.example.net
		Port 4711
		User username
		ForwardX11 yes

Uhrzeit synchronisieren

Chrony synchronisiert die Uhrzeit des Rechners über das NTP mit einem Zeitserver. Dessen Namen trägt man in die Konfigurationsdatei /etc/chrony/chrony.conf ein. Damit Chrony bei Wählverbindungen die Zeit nur bei der Einwahl synchronisiert, hängt man hier noch das Schlüsselwort offline an.

# /etc/chrony/chrony.conf

server time.example.net

Systemereignisse protokollieren

Der Syslog Daemon übertragt Logmeldungen zu einem zentralen Server. Sinnvoll ist dies auf Systemem mit begrenztem Speicherplatz wie von CD-ROM oder USB-Stick laufenden, plattenlosen Systemen.

# /etc/syslog.conf

*.*	@log.example.net

Superuser-Zugriff ermöglichen

Mit folgenden Einstellungen darf username alle Superuser-Kommandos ausführen, ohne nach einem Passwort gefragt zu werden.

# /etc/sudoers

# Superuser is omnipotent
root ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# This user does not need a password.
# username ALL=NOPASSWD: ALL

Pakete verwalten

Paketquellen

Die Konfigurationsdatei /etc/apt/sources.list listet verschiedene Installations-Depots auf.

# /etc/apt/sources.list

deb http://security.debian.org/     stable/updates main contrib non-free
deb http://ftp.de.debian.org/debian         stable main contrib non-free
deb http://ftp.debian-unofficial.org/debian stable main contrib non-free restricted

Programme zur Paketverwaltung

dpkg(8)
Installieren und Entfernen von lokalen Debian Paketdateien (*.deb)
apt-get(8)
Advanced Packaging Tool für Installation von Paketen über das Netzwerk mit automatischer Auflösung von Abhängigkeiten
apt-cache(8)
Paketsuche und weitere Verwaltungsfunktionen
aptitude(1)
Textoberflächen für das APT
synaptic(1)
Grafische Oberflächen für das APT

Inoffizielle Paketquellen

Den Schlüssel für die inoffiziellen Pakete trägt man mit folgendem Kommando in den Schlüsselbund ein:

wget http://ftp-master.debian-unofficial.org/other/openpgp/archive-key-2007.asc -O - | apt-key add -
apt-get update
apt-cache search keyword
apt-get install package

Anschliessend aktualisiert man die Paketlisten, sucht nach bestimmten Schlüsselwörtern und installiert die gewünschten Pakete.

Literatur