Dieses Dokument beschreibt die Installation eines minimalen Debian-Systems, gibt Hinweise zur Partitionierung und beschreibt die Konfiguration des Netzwerks und der wichtigsten Dienste.
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).
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.
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.
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.
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
pvcreate /dev/md1 vgcreate vg0 /dev/md1
lvcreate --size=8G --name lvroot vg0 lvcreate --size=110G --name lvhome vg0 lvcreate --size=200G --name lvsrv vg0
mkfs.ext4 /dev/vg0/lvroot
# /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
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).
mkfs.btrfs -L Label /dev/sda /dev/sdb
btrfs subvolume create /home btrfs subvolume create /srv
btrfs subvolume snapshot /home /home.Datum
btrfs subvolume delete /home.Datum
btrfs device add /dev/sdc
btrfs device delete /dev/sdc
btrfs device balance /
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
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
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
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
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
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
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
dpkg(8)*.deb)apt-get(8)apt-cache(8)aptitude(1)synaptic(1)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.