HOWTO: Debian woody auf einem Strato Root-Server installieren

Document version: 1.4; created 2003-10-15; last modified 2004-07-15.

Dieses HOWTO wird nicht weiter gepflegt, da Strato inzwischen die Installation von Debian woody per Webinterface anbietet (config.strato.de -> Einloggen, Serverkonfiguration -> Neuinstallation).

Einführung
Rettungssystem booten und serielle Konsole starten
SuSE herunterschmeissen (alias Partitionen vorbereiten)
Basissystem laden und installieren
Manuelle Nachbearbeitung und Installation von Kernel und LILO
Fertig

Disclaimer

Dieses Dokument erhebt keinen Anspruch auf Vollständigkeit oder Korrektheit. Die Befolgung dieser Anleitung kann Ihren Server komplett lahmlegen -- insbesondere dann, wenn Sie nicht wissen, was die hier angegebenen Befehle tun. Dies ist keine offizielle oder von der Strato Medien AG autorisierte Anleitung!

Einführung

Dieses Dokument beschreibt die Installation von Debian woody auf einem Strato Root-Server. Normalerweise wird dieser mit SuSE 8.0 eingerichtet; ich wollte unbedingt Debian drauf haben. Dabei kommt die bei Strato serienmässig vorhandene serielle Konsole sehr gelegen.

Das Dokument beschreibt, wie ich Debian auf dem Server installiert bekommen habe. Möglicherweise gibt es einfachere oder bessere Wege... und alle Eventualitäten sind auch nicht abgedeckt. Ich bin dabei grösstenteils dem Debian Installations-HOWTO Sektion 3.7: Debian GNU/Linux von einem Unix/Linux-System installieren gefolgt. Dieses Dokument kann auch herangezogen werden, wenn irgendetwas nicht funktioniert bei der Installation. Im absoluten Notfall kann auch die automatisierte Neu-Installation von SuSE gestartet werden (config.strato.de / Serverkonfiguration / Neuinstallation)

Windows-User benötigen nur einen SSH-Client wie z.B. putty; alles weitere wird direkt auf den Server geladen. Linux-User haben in den allermeisten Fällen bereits alles zur Hand ;-)

Alle Arbeitsschritte sind mit ihrer vollen Ausgabe dokumentiert. Die Ausgaben sollten beim Befolgen der Anleitung ähnlich aussehen.

Wer lieber eine automatische Installation hätte, darf sich gerne Christian Neys Installations-Skript auf http://linux.roothell.org/debian-strato/ ansehen.

Rettungssystem booten und serielle Konsole starten

Zunächst mässen wir erst einmal das Reparatursystem booten. Dazu aktiviert man auf config.strato.de unter Serverkonfiguration/RecoveryManager den Bootmodus "Starten des Rettungssystems". Dann muss der Server neu gebootet werden; entweder über reboot per ssh oder per harten Reset (im RecoveryManager aktivierbar).

Unter ServerKonfiguration/RemoteConsole sind nun die Login-Daten für die serielle Konsole zu finden. Per SSH kann man sich nun auf der seriellen Konsole einloggen.

SuSE herunterschmeissen (alias Partitionen vorbereiten)

Wir sind nun auf der seriellen Konsole eingeloggt und benötigen nun ein Arbeitsverzeichnis.

# mkdir /work
# cd /work/
# ls
# wget http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_0.1.17.7woody1_i386.deb
debootstrap_0.1.17.7 100% |*****************************| 51554       00:00 ETA
# ar -x debootstrap_0.1.17.7woody1_i386.deb
# cd /
# zcat < /work/data.tar.gz |tar xv
./
./usr/
./usr/sbin/
./usr/sbin/debootstrap
./usr/share/
./usr/share/man/
./usr/share/man/man8/
./usr/share/man/man8/debootstrap.8.gz
./usr/share/doc/
./usr/share/doc/debootstrap/
./usr/share/doc/debootstrap/README.Debian
./usr/share/doc/debootstrap/copyright
./usr/share/doc/debootstrap/changelog.gz
./usr/lib/
./usr/lib/debootstrap/
./usr/lib/debootstrap/scripts/
./usr/lib/debootstrap/scripts/slink
./usr/lib/debootstrap/scripts/potato
./usr/lib/debootstrap/scripts/woody
./usr/lib/debootstrap/scripts/sarge
./usr/lib/debootstrap/scripts/sid
./usr/lib/debootstrap/functions
./usr/lib/debootstrap/pkgdetails
./usr/lib/debootstrap/devices.tar.gz
./usr/lib/debootstrap/arch

Nun wurde debootstrap in das Rettungsdateisystem installiert (welches ohnehin nur im RAM existiert). Jetzt müssen noch die Partitionen formatiert und die Swap-Partition aktiviert werden. Im folgenden wurde die originale Partitionierung (60 MB boot, 500 MB swap, 60 GB root) aus Gründen der Einfachheit beibehalten. Andere Partitionierungen sind mittels cfdisk /dev/hda problemlos erstellbar.

# mke2fs -j /dev/hda3
mke2fs 1.27 (8-Mar-2002)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
7438336 inodes, 14870165 blocks
743508 blocks (5.00%) reserved for the super user
First data block=0
454 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
# mke2fs -j /dev/hda1
mke2fs 1.27 (8-Mar-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
14056 inodes, 56196 blocks
2809 blocks (5.00%) reserved for the super user
First data block=1
7 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
# mkswap /dev/hda2
Setting up swapspace version 1, size = 526413824 bytes
# sync; sync; sync
# swapon /dev/hda2
Adding Swap: 514072k swap-space (priority -1)

Basissystem laden und installieren

Erst Zielpartition mounten...

# mkdir /debinst
# mount /dev/hda3 /debinst/
kjournald starting.  Commit interval 5 seconds
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,3), internal journal
EXT3-fs: mounted filesystem with ordered data mode.

...dann auf der Zielpartition ein Verzeichnis für den Debian Installer einrichten...

# mkdir /debinst/debinst
# cd /debinst/debinst/

... und die Basispakete manuell herunterladen, sonst produziert debootstrap einen Segmentation fault. Auf dem Rettungssystem ist auch kein Platz mehr, also muss das basedeb auf der Zielpartition installiert werden.

# wget http://http.us.debian.org/debian/dists/woody/main/disks-i386/base-images-current/basedebs.tar
basedebs.tar         100% |*****************************| 27670 KB    00:00 ETA
# wget http://http.us.debian.org/debian/pool/main/w/wget/wget_1.8.1-6.1_i386.deb

...und zum Schluss: debootstrap starten:

# cd /
# /usr/sbin/debootstrap --arch i386 --unpack-tarball /debinst/debinst/basedebs.tar woody /debinst

Nun arbeitet debootstrap eine Weile und produziert dabei eine Menge Ausgaben und Warnungen -- zu viele, um sie hier alle aufzulisten. Die meisten können ignoriert werden; trotzdem sollte man aufmerksam schauen, ob etwas schiefläft.
Insbesondere sollte zum Abschluss die Meldung "I: Base system installed successfully." erscheinen.

Manuelle Nachbearbeitung und Installation von Kernel und LILO

Zunächst wechseln wir in den Kontext des zukünftigen Servers:

# chroot /debinst /bin/bash

...passen dort die fstab an und mounten alle Dateisysteme:

bash-2.05a# vi /etc/fstab
/dev/hda3       /       ext3    defaults,errors=remount-ro      0       1
/dev/hda2       none    swap    sw      0       0
/dev/hda1       /boot   ext3    defaults        0       2
proc    /proc   proc    defaults        0       0
bash-2.05a# mount -a

proc wird dabei nicht korrekt gemountet. Das muss man manuell machen:

bash-2.05a# mount -t proc proc /proc
bash-2.05a# ls /proc/
1     5282  5651  87       devices      iomem    meminfo     self      version
100   5283  5652  88       dma          ioports  misc        slabinfo
2     5284  5653  89       driver       irq      modules     stat
2361  5285  5654  90       execdomains  kcore    mounts      swaps
2367  5286  6     91       filesystems  kmsg     mtrr        sys
3     55    7     bus      fs           ksyms    net         sysvipc
4     5617  7120  cmdline  ide          loadavg  partitions  tty
5     5650  80    cpuinfo  interrupts   locks    pci         uptime

Netzwerkkonfiguration per DHCP

Dann müssen noch die Netzwerkeinstellungen vorgenommen werden. Ich selbst hatte Probleme mit dem DHCP-Client von woody; dieser wollte zumindest bei mir nicht mit dem DHCP-Server von Strato zusammenarbeiten, so dass ich die Einstellungen manuell vornehmen musste. Sebastian Wahl hat berichtet, dass es mit dem DHCP aus testing funktionieren würde.
Also: Erst mal mit dem dhcp ausprobieren:

bash-2.05a# dhclient eth0
bash-2.05a# ifconfig eth0

Sofern eth0 nun eine IP-Adresse zugewiesen bekommen hat, kann man die Netzwerkkonfiguration einfach gestalten und danach mit "Weitere Konfiguration" unten fortfahren:

bash-2.05a# vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Manuelle Netzwerkkonfiguration

Die eigene IP sowie den eigenen Hostnamen findet man unter config.strato.de im Bereich Serverkonfiguration/Serverdaten. Im folgenden Beispiel sind meine Daten als Beispiel angegeben; die IP (81.169.155.178) muss natürlich angepasst werden; eventuell muss auch die dritte Nummer in network und gateway (hier die 155) angepasst werden.

bash-2.05a# vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 81.169.155.178
        netmask 255.255.255.0
        network 81.169.155.0
        gateway 81.169.155.1

bash-2.05a# rm /etc/resolv.conf
bash-2.05a# vi /etc/resolv.conf
search serverkompetenz.net
nameserver 81.169.148.34
nameserver 81.169.148.39

Sonstige Konfiguration

Nun muss der Hostname eingestellt werden; h1538 muss natürlich angepasst werden.

bash-2.05a# echo h1538 >/etc/hostname

Einmal base-config starten und die Grundeinstellungen nach eigenem Ermessen tätigen:

bash-2.05a# base-config

Momentan ist wget noch nicht verfügbar; also installieren (heruntergeladen wurde es ja schon vorher aus dem Rettungssystem heraus):

# dpkg -i /debinst/wget_1.8.1-6.1_i386.deb

Momentan fehlt LILO noch das Image vom Bootsektor, daher muss LILO noch komplett installiert und konfiguriert werden (sehr wichtig ist hier serial und append!):

bash-2.05a# cd ~
bash-2.05a# wget http://ftp.de.debian.org/debian/pool/main/l/lilo/lilo_22.2-3_i386.deb
bash-2.05a# dpkg -i lilo_22.2-3_i386.deb
bash-2.05a# vi /etc/lilo.conf
boot=/dev/hda
serial = 0,57600n8
vga = normal    # force sane state
menu-scheme=Wg:kw:Wg:Wg
read-only
prompt
lba32
timeout=100
# End LILO global Section
#

image = /boot/vmlinuz
  root = /dev/hda3
  label = linux
  append ="console=tty0 console=ttyS0,57600"

...noch die serielle Konsole in der inittab eintragen und root ermöglichen, sich dort direkt einzuloggen...

bash-2.05a# echo "S0:12345:respawn:/sbin/getty -L ttyS0 57600 vt102" >> /etc/inittab
bash-2.05a# echo "ttyS0" >> /etc/securetty

...und zum Schluss einen Kernel herunterladen und installieren...
Man sollte zunächst einmal per cat /proc/cpuinfo schauen, was für einen Prozessor man hat. Dann wähle man den richtigen Kernel aus:

Pentium IVhttp://da.andaka.org/dl/kernel-image-2.4.24_strato.1.3_i386-Pentium4.deb
Celeronhttp://da.andaka.org/dl/kernel-image-2.4.24_strato.1.3_i386-Celeron.deb

...und lade diesen:

bash-2.05a# wget http://da.andaka.org/dl/kernel-image-2.4.24_strato.1.3_i386-Pentium4.deb
--17:24:47--  http://da.andaka.org/dl/kernel-image-2.4.24_strato.1.3_i386-Pentium4.deb
           => 'kernel-image-2.4.24_strato.1.3_i386-Pentium4.deb'
Resolving da.andaka.org... 81.169.155.178
Connecting to da.andaka.org[81.169.155.178]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1,445,266 [application/x-debian-package]

100%[====================================>] 1,445,266    1004.04K/s

17:24:47 (105.17 MB/s) - 'kernel-image-2.4.24_strato.1.3_i386-Pentium4.deb' saved [1445266/1445266]
bash-2.05a# dpkg -i kernel-image-2.4.24_strato.1.3_i386-Pentium4.deb

Nun folgen die Ausgaben der Kernel-Installation (zu viele, um sie hier aufzulisten), welche mit der Ausführung von LILO endet:

You already have a LILO configuration in /etc/lilo.conf
Install a boot block using the existing /etc/lilo.conf? [Yes] y
Testing lilo.conf ...
Testing successful.
Installing the partition boot sector...
Installation successful.

Fertig

Nun muss nur noch auf config.strato.de unter Serverkonfiguration/RecoveryManager der Modus "Normaler Boot" aktiviert und die ganze Kiste rebootet werden. Dann sollte es fertig sein.
Zur Not kann man sich immer noch über die serielle Konsole einloggen.

Der oben angegebene Kernel ist ein Minimal-Kernel, d.h. er beinhaltet nur die nötigsten Sachen fest eingebaut. Wer mehr Module usw. braucht, kann sich am folgenden orientieren. Dieses Beispiel geht davon aus, dass der minimale 2.4.24 (siehe oben) installiert ist und ein 2.4.25 installiert werden soll.

# wget http://www.backports.org/debian/pool/main/k/kernel-source-2.4.25/kernel-source-2.4.25_2.4.25-1_all.deb
# apt-get install kernel-package
# dpkg -i kernel-source-2.4.25_2.4.25-1_all.deb
# cd /usr/src
# tar xvjf kernel-source-2.4.25.tar.bz2
# ln -s kernel-source-2.4.25 linux
# cd linux
# cp /boot/config-2.4.24 .config
# make oldconfig
(man kann hier ruhig immer N wählen)
# make menuconfig
(aktivieren, was man braucht. Nichts deaktivieren, wenn unsicher!
Vorsicht, Abhängigkeiten werden nicht automatisch aufgeläst! 
Hilfe zu jedem Punkt lesen!)
# make-kpkg kernel_image
# dpkg -i ../kernel-image-2.4.25_*.deb

Im Strato-Netz existiert auch ein Debian-Mirror. Den sollte man sich vor der weiteren Installation einrichten, da der Traffic zu diesem Server als interner Traffic gilt und daher nicht berechnet wird:

# vi /etc/apt/sources.list
deb http://ftp.serverkompetenz.de/debian/ stable main non-free contrib 
deb-src http://ftp.serverkompetenz.de/debian/ stable main non-free contrib
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free

Mit dieser Konfiguration kriegt man alle Standard-Pakete (inkl. den Non-US-Paketen) und Sicherheits-Updates. Wer mehr braucht, sollte sich backports.org oder apt-get.org ansehen.

Copyright 2003-04 by Dave Kliczbor. Feedback in english or german welcome. Original location of this document: http://da.andaka.org/Doku/debianstrato.html
Free distribution of this document is allowed.

Many thanks to Felix Ostmann for pointing out that LILO misses the bootsector image when not explicitely installing the lilo debian package.

Many thanks to Sebastian Wahl for sending me hints to include the line in /etc/inittab and /etc/securetty for the serial console, about the Debian mirror and some notes about DHCP.