Grundinstallation Debian 7 Wheezy

Grundinstallation

  • Netzwerkverbindung über Kabel muß vorhanden sein, WLAN funktioniert nicht
  • Booten von der netinst-CD oder der normalen CD
  • Am Bootprompt "Advanced Options" auswählen, umschalten auf KDE environment, dann wieder "Advanced Options", dann "Expert install", um den Expertenmodus zu aktivieren
  • Language: German / Deutschland
  • Sprache: de_DE.UTF-8 (zusätzlich de_DE@euro)
  • System-Locale: de_DE.UTF-8
  • Tastatur: PC-Tastatur, Deutsch
  • Modulauswahl für Kernel nicht verändern
  • Optionen für PCMCIA nicht verändern (meist leer)
  • keine zusätzlichen Installer-Komponenten auswählen
  • Rechnername (in Kleinbuchstaben) und Workgroup angeben
  • Shadow-Passwörter: ja
  • Root anmelden erlauben: ja
  • zusätzliche Benutzer anlegen: Thomas Rundel
  • Uhr mittels NTP einstellen: ja, pool.ntp.org
  • Zeitzone Europe/Berlin
  • Plattenaufteilung (alles primäre Partitionen, für Software-RAID siehe nächsten Abschnitt):
    • 500 MB ext3 für /boot
    • 2.5 GB swap
    • 20 GB ext3 für /
    • Rest ext3 für /home
  • Grundsystem installieren
  • Kernel: linux-image-686-pae (installiert Kernel 3.2.0)
  • Kernel genenerisch
  • Spiegelserver verwenden, Protokoll http, Standort Deutschland, ftp.de.debian.org
  • Kein Proxy
  • Non-free-Software verwenden: ja
  • Sicherheits- und Volatile-Aktualisierungen verwenden
  • Paketverwendungserfassung: nein
  • man mit setuid man installieren: nein
  • Softwareauswahl:
    • Grafische Desktop-Umgebung
    • Druck-Server (falls erforderlich)
    • Datei-Server (installiert Samba)
    • SSH-Server
    • Laptop (nur für Notebooks)
    • Standard-Systemwerkzeuge
  • GRUB installieren in MBR: ja
  • Grub-Parameter: keiner
  • Systemzeit: UTC

Damit ist die Grundinstallation beendet. Nach dem Neustart wird ins installierte System gebootet und in einer Root-Konsole (!) folgendes nachinstalliert:

 # apt-get install kernel-package linux-headers-`uname -r`
 # apt-get install joe mc ssh rsync mbmon smartmontools
 # apt-get install xvnc4viewer xmbmon xosview ntpdate lcd4linux
 # apt-get install lynx links2 dialog nrg2iso odt2txt
 # apt-get install krusader gwenview convmv kdirstat htop rar unrar
 # apt-get install hibernate unison procinfo screen nmon
 # apt-get install krdc krfb gpm

 # apt-get purge tracker  (-> neu in Wheezy für die indizierte Desktop-Suche)

Nach der Installation werden im Benutzerverzeichnis die Ordner Desktop und Documents angelegt, und sodann die Default-Einstellungen in Menü / Einstellungen / Systemeinstellungen wie folgt geändert:

  • Benutzerkontodetails / Pfade auf diese Verzeichnisse verschieben
  • Desktopsuche: Nepomuk Semantik-Dienste deaktivieren
  • Verhalten der Arbeitsfläche / virtuelle Arbeitsflächen: Anzahl einstellen
  • Systemverwaltung / Datum und Zeit: automatisch einstellen, pool.ntp.org
  • Systemverwaltung / Schriftarteninstallation: ggf gewünschte Schriften hinzufügen
  • Systemverwaltung / Starten und Beenden / Autostart: Programme und Scripts festlegen

Software-RAID

Um Software-RAID während der Grundinstallation einzurichten, wird wie folgt vorgegangen:

  • Auf beiden Platten die gleiche Partitionsstruktur einrichten, alle Partitionen primär, Dateisystem ist dabei jeweils RAID autodetect (0xfd), außer für die Swap-Partitionen:
    • 500 MB raid, bootable
    • 2.5 GB swap
    • 20 GB raid
    • Rest raid
  • Danach wird im Menü ganz oben über den Punkt "Software RAID konfigurieren" das RAID-System aktiviert.
  • Für jedes der drei Partitionspaare ausführen:
    • MD-Gerät erstellen
    • RAID1
    • Anzahl aktiver Geräte für das Array: 2
    • Anzahl der Reserve-Geräte: 0
    • die beiden zusammengehörenden Partitionen markieren
  • Im Anschluß daran gibt es 3 neue Devices im Partitionierer, denen nun die Mountpoints und Filesysteme zugewiesen werden:
    • md0 ext3 /boot
    • md1 ext3 /
    • md2 ext3 /home

Der Installer schreibt den grub-Bootloader nur auf die erste Platte. Deshalb muss nach dem Booten des Systems grub auf alle zusätzlichen Platten (im Falle von RAID1 ohne Spare nur /dev/sdb) verteilt werden:

 # grub-install /dev/sdb

Falls die erste Platte ausfällt, bootet das System dann automatisch von der zweiten.

Den Status des RAID-Systems lässt man sich anzeigen mit cat /proc/mdstat, zur Verwaltung dient das Tool mdadm:

	# mdadm --detail /dev/md0
	# mdadm /dev/md0 -r /dev/sda1		(Platte aus dem Verbund entfernen)
	# mdadm /dev/md0 -a /dev/sda1		(Platte zum Verbund hinzufügen)

Beim Ausfall einer Platte wird diese aus dem Verbund entfernt, ausgebaut, eine neue eingebaut, die Partitionstabelle übertragen und die neuen Partitionen zu den RAID-Verbunden hinzugefügt:

	# mdadm /dev/md0 -r /dev/sdb1
	# ...

	# sfdisk -d /dev/sda | sfdisk /dev/sdb
	# sfdisk -l /dev/sdb
	# mdadm /dev/md0 -a /dev/sdb1
	# ...

Bevor eine noch funktionierende Platte entfernt werden kann, muss diese erst manuell auf "fail" gesetzt und erst danach entfernt werden:

	# mdadm /dev/md0 -f /dev/sdc1
	# mdadm /dev/md0 -r /dev/sdc1

Um eine weitere (dritte) Platte zum RAID-1 hinzuzufügen, benutzt man

	# mdadm --grow /dev/md0 -n 3
	# mdadm /dev/md0 -a /dev/sdc1
	# ...

Falls Partitionen hinzugefügt werden sollen, die bereits früher bestandteil vor RAID-Verbunden waren, muss zuerst der Superblock gelöscht werden, um zu verhindern, dass die Partitionen als eigenständige RAIDs erkannt werden:

	# mdadm --zero-superblock /dev/sdc1

Achtung: Nach allen Änderungen muss auf der neu hinzugekommenen Platte die Bootpartition aktiviert und Grub installiert werden (grub-install /dev/sdx).

Um Fehler im RAID automatisch per Email gemeldet zu bekommen, muss Postfix o.ä. eingerichtet sein, die Email-Adresse des Admins in /etc/mdadm/mdadm.conf hinterlegt werden

	MAILADDR xyz@johndoe.net

und der Dienst mdadmd gestartet sein, indem in der Datei /etc/default/mdadm die Option

	START_DAEMON=true

gesetzt und danach der Dienst gestartet wird:

	/etc/init.d/mdadm start

Manuell lässt sich ein RAID auch nach dem Booten über den Befehl mdadm einrichten:

	mdadm -C /dev/mdN -l raid1 -n 2 -x 0 /dev/sdXY /dev/sdZY

Mdadm wird auch zum Verwalten eines RAID benutzt, z.B. zum deaktivieren und entfernen defekter Platten oder zum Einbringen einer neuen Platte in einen Verbund.

LVM

Die Volume Group wird in der Regel schon während der Neuinstallation angelegt. Ansonsten sind die erforderlichen Schritte in der LVM Howto aufgeführt.

Um eine VG zu vergrößern, wird einfach eine zusätzliche Platte oder ein RAID-Verbund (ein sogenanntest physical volume) zu der Volume Group (VG) hinzugefügt und das Logical Volume samt darauf eingerichtetem Dateisystem entsprechend vergrößert (absolute Größe -LxxGB oder relative Änderung -L+xxGB).

Im Beispiel:

 Volume Group vg00
 Logical Volume /dev/vg00/data
 Physical Volume /dev/md9

	pvcreate /dev/md9
	vgextend vg00 /dev/md9
	lvextend -LxxTB /dev/vg00/data
	resize2fs -f /dev/vg00/data

Zum Überprüfen der verschiedenen Devices gibt es die Befehle

	vgdisplay
	lvdisplay
	pvdisplay

Externe Datenträger

Standardmässig mountet Wheezy externe Datenträger "by ID", was im Verzeichnis media zu kryptischen Verzeichnissen führt. Um dies zu verhindern, kann man zumindest ext3-Datenträgern mit dem Befehl

	# tune2fs -L name device

lesbare Bezeichnungen vergeben, z.B. tune2fs -L USBSTICK64 /dev/sdc1. Der Stick wird dann im Verzeichnis /media/USBSTICK64 gemountet.

Druckereinrichtung

 # lppasswd -g sys -a root
 -> zweimal das Root-Passwort eingeben

SSH

Der SSH-Server wird normalerweise bei der Grundinstallation mit eingerichtet, es ist jedoch erforderlich, dass jeder Benutzer (auch root) sein SSH-Schlüsselpaar erzeugt. Dazu wird in einer Shell das Kommando

	$ ssh-keygen

ausgeführt. Die Abfragen werden alle mit Enter durchbestätigt, eine Passphrase wird nicht eingegeben. Die Schlüssel werden dann in ~/.ssh/id_rsa und id_rsa.pub gespeichert.

Um bei der SSH-Verbindung auf einen entfernten Rechner die Passworteingabe zu umgehen, kann der eigene öffentliche Schlüssel auf den entfernten Rechner übertragen und an die Datei .ssh/authorized-keys angehängt werden, entweder manuell oder per Befehl:

	$ ssh-copy-id -i keyfile user@machine

Für die Übertragung des Default-Schlüssels genügt

	$ ssh-copy-id user@machine

Samba

Programmpakete nachinstallieren, falls nicht "Datei-Server" bei der Grundinstallation angegeben wurde.

 # apt-get install samba samba-common smbclient cifs-utils

Danach muß die smb.conf entweder manuell angepasst werden oder via swat:

http://localhost:901

Für Gastzugriffe ohne Passwortabfrage:

  • smb.conf:
    • guest account = smbguest
    • map to guest = Bad Password
  • User anlegen:
	# useradd -s /bin/false smbguest
	# smbpasswd -a smbguest		(kein Passwort eingeben)
  • Außerdem für jeden angelegten Benutzer:
	# smbpasswd -a [username]	(Passwort zweimal eingeben)

Freigaben mounten entweder per Kommandozeile

	# mount -t cifs //ip/share /mnt/dir -o user=user,password=pass

oder über folgenden Eintrag in fstab (falls keine Anmeldung erforderlich ist, genügt auch nur "password=" bei den Optionen):

	//ip/share /home/user/dir cifs user=...,password=... 0 0

Mailversand

Versand geht wahlweise über exim4 (vorinstalliert) oder ssmtp (einfacher zu konfigurieren, nachfolgend beschrieben).

	# apt-get install ssmtp		(entfernt automatisch exim4)
	# joe /etc/ssmtp/ssmtp.conf
		root =
		mailhub = rundel.net
		rewriteDomain = domain.net
		hostname = ...		(nicht verändern)
		FromLineOverride = no

	# joe /etc/Muttrc			(Zeile mit Zugangsdaten für Mailversand anfügen)
		set sendmail = "/usr/sbin/ssmtp -aumail@johndoe.net -apPASSWORT"

	# touch /var/mail/root
	# chmod 600 /var/mail/root

	Außerdem für jeden User, der Mail versenden können soll:
	# touch /var/mail/username
	# chmod 600 /var/mail/username
	# chown rundel /var/mail/username

Mailempfang (fetchmail) (lenny)

 $ joe ~/.fetchmailrc
	poll johndoe.net with protocol pop3 user 'johndoe' with password 'xxx' is johndoe here options keep ssl

Pro abzuholendem Account wird hier eine Poll-Zeile analog zu obiger eingetragen; die Options können auch weggelassen oder kombiniert werden. Keep löscht die Mails auf dem Server nicht, SSL verschlüsselt die Übertragung. Die Mails werden dann nach /var/spool/mail/USERNAME geschrieben und können dort z.B. mit mutt oder KMail gelesen werden.

Abgeholt werden die Mails dann mit (Parameter -v gibt eine ausführlichere Ausgabe):

 $ fetchmail -a

Falls die Mail für mehrere User eines Rechners gemeinsam abgeholt werden soll, können die Poll-Zeilen auch vom Admin in die /etc/fetchmailrc eingetragen werden. Dia Abholung wird dann vor Root über den fetchmail Daemon gestartet:

 # fetchmail -d 180		(Abholung alle 180 Sekunden bzw 3 Minuten)

Beendet wird der Daemon mit

 # fetchmail -q

Alternativ kann fetchmail auch automatisch beim Hochfahren über ein Init-Skript gestartet werden:

 # joe /etc/default/fetchmail
	START_DAEMON yes

Gestartet wird der Prozess dann mit

 # /etc/init.d/fetchmail start

Achtung: Falls zur Verarbeitung der Mails procmail benutzt wird, muß fetchmail dies bekanntgemacht werden:

 $ joe ~/.fetchmailrc
	mda "/usr/bin/procmail -d USERNAME"

DHCP-Server (squeeze)

 # apt-get install isc-dhcp-server
 # joe /etc/dhcp/dhcpd.conf

Folgende Optionen werden angepasst:

	option domain-name ;
	option domain-name-servers ;
	option routers ;
	option ntp-servers ;
	option netbios-name-servers ;

	ddns-update-style none;
	authoritative;
	default-lease-time 43200;
	max-lease-time 345600;

	subnet 192.168.0.0 netmask 255.255.255.0 {
		range 192.168.0.200 192.168.0.240;
	}

Um statische Adressen zu vergeben, ist für jeden Client der Rechnername und die MAC-Adresse mit einer IP-Adresse zu versehen:

	host  {
		hardware ethernet 00:11:22:33:44:55;
		fixed-address 192.168.0.99;
		option host-name "";
	}

Nach jeder Änderung muss der Server neu gestartet werden:

	# /etc/init.d/isc-dhcp-server restart

Bei Problemen steht die Fehlerursache in /var/log/messages und in /var/log/syslog.

DNS-Server (squeeze)

Der Nameserver Bind wird normalerweise automatisch installiert, ansonsten:

 # apt-get install bind9

Datei /etc/resolv.conf:

	order bind, hosts
	domain 
	nameserver 

Datei /etc/bind/named.conf.options:

	forwarders {
		;
		;
	};

Die Dateien /etc/bind/named.conf und /etc/bind/named.conf.local brauchen nicht verändert zu werden, ebensowenig die Zonendateien /etc/bind/db.*, es sei denn es handelt sich bei dem einzurichtenden Rechner um einen Webserver.

VNC-Server (Squeeze)

Um von anderen Rechnern aus den Desktop fernsteuern zu können, wird die Desktopfreigabe wie folgt aktiviert:

KDE:

  • krfb (Internet / Arbeitsfläche freigeben) starten
  • Einrichten
  • [x] Dienst im lokalen Netzwerk veröffentlichen
  • [x] Standardport verwenden
  • [ ] Vor dem Akzeptieren von Verbindungen nachfragen
  • [x] Steuerung von Maus und Tastatur durch die Gegenstelle erlauben
  • [x] Uneingeladene Verbindungen akzeptieren
  • Passwort unbedingt eintragen

Gnome:

  • Vino starten (System / Einstellungen / Entfernter Desktop)
  • [x] Anderen Benutzern erlauben, Ihren Bildschirm anzuzeigen
  • [x] Anderen Benutzern erlauben, Ihren Bildschirm zu steuern
  • [ ] Jeder Zugriff auf diesen Rechner muss bestätigt werden
  • [x] Der Benutzer muss folgendes Passwort eingeben
  • Passwort unbedingt eintragen

Der Verbindungsaufbau erfolgt dann über krdc oder jeden beliebigen VNC-Viewer auf die IP-Adresse des Rechners und Display :0.

VMware Server (lenny)

Um den VMware Server zu installieren, wird in einer Root-Shell das vmware-install.pl Skript gestartet. Zuvor muss der Compiler auf gcc 4.1 gesetzt werden:

	# export CC=/usr/bin/gcc-4.1
	# ./vmware-install.pl

Alle Abfragen können dann einfach mit Enter bestätigt werden außer den folgenden:

	NAT networking:
	Probe for an unused private subnet: no
	IP address of your host: 192.168.99.1
	Netmask: 255.255.255.0
	Use host-only networking: no
	Specify different administrator: no
	directory for virtual machine files: /home/vmware

VMware Server benutzt für die Kommunikation folgende Ports:

  • 902 - remote connections
  • 8222 - standard http connections
  • 8333 - secure http (https) connections

Die Admin-Oberfläche startet man dann im Web-Browser über die Adresse http://localhost:8222. Hier muß zunächst im Reiter Permissions ein oder mehrere Benutzer hinzugefügt werden (New Permission / User auswählen, rechts dann Role anklicken, Administrator auswählen, ok). Sodann kann man vorhandene virtuelle Maschinen in das bei der Installation angegebene Verzeichnis kopieren und zum Inventory hinzufügen (Summary / Add virtual machine to inventory). Von dort aus kann diese dann verwaltet, gestartet und gestoppt etc werden.

VMware Workstation

Für die Installation wird die bundle-Datei einfach in einer Root-Konsole mit sh aufgerufen:

 # sh VMware*.bundle

Das Netzwerk wird ab Version 7.1 in der VMware GUI über Edit / Virtual Network Editor eingerichtet.

Agfeo TkSuite-Server (lenny)

Auf 64-bit-Systemen muss das 32-bit Subsystem installiert werden:

	# apt-get install ia32-libs

Sodann wird der aktuelle TkSuite-Server von www.agfeo.de heruntergeladen, entpackt und in einer Konsole installiert:

	# 

Falls Daten von einer vorhandenen Altinstallation übernommen werden sollen, müssen diese in die Verzeichnisstruktur unter /var/tksuite-server kopiert werden.

VPN-Tunnel (Squeeze)

Zum Aufbauen von VPN-Tunneln wird am einfachsten kVpnc installiert und eingerichtet:

	# apt-get install kvpnc vpnc pptp-linux resolvconf

Zur Verbindung mit Microsoft PPTP-Servern ist wichtig, die MPPE-Kompression nicht zwangsweise zu fordern (kein Haken bei 'require MPPE'), und CHAP zur Authorisierung zu benutzen. Die MTU wird auf 1492 gesetzt, und DNS-Updates sollten ausgeschaltet werden.

Screen

Vor allem für ssh-Sitzungen sollte screen benutzt werden. Um stets eine Statuszeile am Terminal zu sehen, erweitert man die Datei ~/.screenrc (oder global die /etc/screenrc) um folgende Zeile (alles komplett in eine Zeile):

 caption always "%{rw} * %H * | $LOGNAME | %{bw}D | %}%-Lw%{rw}%50>%{rY}f* %{%+Lw%<"

Server automatisch updaten

Die Installation von Updates erfolgt wie auf allen Rechnern per apt-get update und apt-get upgrade. Problematisch dabei ist, dass Server üblicherweise wochenlang unbeachtet laufen und deshalb niemand die Updates einspielt. Das automatische einspielen per cron ist nicht empfehlenswert, weil bei BUgs in den Updates evtl wichtige Serverfunktionen lahmgelegt werden.

Abhilfe schafft cron-apt, das zeitgesteuert die verfügbaren Updates abfragt und per Mail an den Admin meldet.

 # apt-get install cron-apt

In /etc/cron.d/cron-apt wird festgelegt, wie oft der Dienst nach Updates sucht. In /etc/cron-apt/config wird das allgemeine Verhalten festgelegt, u.a. an welche Email-Adresse die Benachrichtigungen gesendet werden, und ob die heruntergeladenen Updates automatisch installiert werden sollen oder nicht. Wenn nicht, kann der admin die verfügbaren Updates nach dem nächsten Anmelden mit apt-get dist-upgrade einspielen.

Installierte Software speichern

Die aktuell installierten Pakete können mit dem Befehl dpkg --get-selections als Datei gespeichert werden, Um die gleiche Software auf einem anderen Rechner zu installieren, wird der Befehl dpkg --set-selections benutzt.

Für die Sicherung eines Rechners genügt somit die Paketliste sowie Backups von /home, /etc und /usr/local. Nach dem Aufspielen der Software werden die Daten und Konfigurationen von den Backups wieder zurückgespielt.

Upgrade auf Debian testing

Um von einer Version auf die unstabilere Testing-Version upzudaten, wird wie folgt vorgegangen:

 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade
 # joe /etc/apt/sources.list
	dort in allen Zeilen anstelle "wheezy" "testing" eintragen, oder den Namen der Folgeversion, z.B. so:
	deb ftp://ftp.de.debian.org/debian testing main non-free contrib
	deb ftp://ftp.de.debian.org/debian ... main non-free contrib
 # apt-get update
 # apt-get dist-upgrade
 Rechner neu starten.

oder: aptitude update ; aptitude full-upgrade

Achtung: Nach dem Ändern der sources.lst darf kein apt-get upgrade durchgeführt werden, es muss auf jeden Fall als erstes ein apt-get dist-upgrade gemacht werden!!!

Paketquellen

  • main - von der Debian-Gemeinschaft unterstützte, freie Programmpakete
  • universe - weitere, von freien Entwicklern unterstützte Pakete
  • restricted - proprietäre Treiber
  • multiverse - nicht-freie und rechtlich eventuell bedenkliche Software, z.B. Codecs

Beispiel einer sources.list:

 ,----[ /etc/apt/sources.list ]
 | deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free
 | deb-src http://ftp.de.debian.org/debian/ squeeze main contrib non-free
 |  
 | deb http://www.backports.org/debian squeeze-backports main contrib non-free
 | deb-src http://www.backports.org/debian squeeze-backports main contrib non-free
 |
 | deb http://security.debian.org/ squeeze/updates main
 | deb-src http://security.debian.org/ squeeze/updates main
 |
 | # Multimediakram DVD, Videocodecs, ...
 | deb http://www.debian-multimedia.org/ lenny main non-free
 | deb-src http://www.debian-multimedia.org/ lenny main non-free
 `----

Falls multimedia und backports dann wegen fehlender öffentlicher Schlüssel meckern, helfen folgende zwei Befehle:

 # apt-get install debian-multimedia-keyring debian-backports-keyring
 # apt-get update

Umschalten der Zeichensätze

Die Zeichencodierung wird mit 'dpkg-reconfigure locales' eingestellt. Anschließend ist ein Neustart erforderlich. Für den Wechsel zu UTF-8 kann das Paket utf8-migration-tool benutzt werden (Starten vom Desktop mit Alt-F2). Der Inhalt von Textdateien kann mit iconv umcodiert werden.

Namensänderung

Wenn der Rechnername eines Linux-Rechners geändert werden soll und es bei den Zugriffen danach Probleme gibt, sollten folgende Dateien überprüft werden:

	/etc/hosts
	/etc/resolv.conf

Upgrade von Debian 6 auf Debian 7

Als erstes sollte das komplette System gesichert werden (Image)!!! Sodann:

 Graphische Oberfläche beenden und im Textmodus anmelden!
 cat /etc/debian_version		(sollte 5.0.8 sein)
 apt-get update
 apt-get upgrade
 apt-get dist-upgrade

Falls hierbei Fehler angezeigt werden wegen zurückgehaltener Pakete, müssen diese zuerst beseitigt werden. Pakete werden normalerweise zurückgehalten (d.h. nicht aktualisiert, obwohl es eine aktuellere Version gibt) wegen Abhängigkeiten mit anderen Paketen. Aufgelöst werden diese Abhängigkeiten, indem mit "apt-get dist-upgrade -u" ein komplettes Upgrade des Systems durchgeführt wird, bei dem auch alle Abhängigkeiten aufgelöst werden.

Danach wird die /etc/apt/sources.lst editiert und an allen Stellen das Wort "squeeze" durch "wheezy" ersetzt. Anschließend lädt man die neuen Paketlisten herunter, updatet die Paketmanager und schließlich dann das komplette System:

 joe /etc/apt/sources.lst
 apt-get update
 apt-get install apt dpkg aptitude
 apt-get dist-upgrade