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:
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 domainnameserver
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