HOWTO Debian auf vServer installieren

DanielD

Registered User
Hallo!

Dass hier soll eine kleine Anleitung sein, wie man Debian auf einem vServer installiert. Konkret erkläre ich, was ich auf meinem v-PowerServer A von Strato gemacht habe, um das Suse gegen Debian zu tauschen.

Voraussetzungen:
  • Einen virtuellen Server, der unter Virtuozzo o.ä. läuft. (UserModeLinux funktioniert anders!)
  • Zugang zu dem Dateisystem des vServers über eine Rettungskonsole.
  • Eine Möglichkeit, das System neuzubooten und neuzuinstallieren, falls etwas sehr schief geht
  • Linuxkenntnisse ...
  • Zeit, den Server komplett neu einzurichten (und zu migrieren)
  • Tiefe Abneigung gegenüber Plesk

Was man am Ende hat (wenn alles klappt)
  • Ein minimales Debian-System, ohne Apache/MySQL/..
  • Kein Plesk, und man wird es vermutlich auch nicht nachinstallieren können.
  • Ein System, das möglicherweise nicht mehr bootet, wenn der physikalische Host verändert wird oder einen neuen Kernel bekommt.

So. Ich hoffe, das hat alle abgeschreckt.

Als erstes sollte man wissen, was die Idee dieser Installation ist. Der Kernel des physikalischen Hosts verwaltet die gesamten Ressourcen und Geräte. Die einzelnen vServer kommunizieren auch immer mit dem physikalischen Host, wenn sie Speicher anfordern etc. Die Geräte/Treiber/modules, die der vServer verwenden darf, sind bereits geladen, wenn er gestartet wird. Sachen, auf die man als vServer-Admin Einfluss hat, beginnen erst mit /sbin/init . (Darin liegt auch der Unterschied zum UML, bei dem tatsächlich ein zweiter vollständiger Kernel gestartet wird.)

Die Installation wird in folgenden Schritten passieren:
  1. Notwendige Konfiguration aus dem bestehenden System auslesen
  2. Das bestehende System aus dem Weg räumen
  3. Debian Installation
  4. Kleine Korrekturen, Netzwerk einrichten, sshd installieren
  5. Neustart
  6. Offene Punkte

1.

Informationen sammeln geht am besten, wenn man sich die paar Zeilen Output am besten auf den lokalen Desktop-Rechner kopiert, finde ich.

Als kleiner Test kann man mal in /boot/ reinschauen, ob da ein Kernel ist. Falls ja: Dieses Howto ist das falsche.

Dann ist wohl ein uname -a an der Reihe.
Code:
# uname -a
Linux zuzeigen.de 2.4.20-021stab028.19.777 #1 Wed Oct 19 13:37:24 MSD 2005 i686 GNU/Linux
Wichtig ist die Hardware-Architektur i686 (oder vielleicht ia64?*). Eventuell ist noch ein cat /proc/cpuinfo interessant -- aber eigentlich soll sich der Kernel darum kümmern, wie viele CPUs es gibt.

* In einem anderen Thread steht, dass ein vServer auf einem 64-Bit-System trotzdem nur 32-Bit-Software verwenden kann. Falls das so ist, sollte man wohl nie ia64 verwenden! (Wäre aber schön, wenn das nochmal jemand bestätigen könnte.)

Weiter mit dem Netzwerk:
Code:
# ifconfig -a
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1008 (1008.0 b)  TX bytes:1008 (1008.0 b)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:127.0.0.1  P-t-P:127.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:349 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:26293 (25.6 KiB)  TX bytes:26059 (25.4 KiB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:85.214.43.177  P-t-P:85.214.43.177  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

Das loopback-Device ist wie immer, aber man sollte wissen, dass das Netzwerkgerät venet0 (alias venet0:0) heißt und nicht eth0.
Außerdem sind hier noch IP und Netzmaske interessant.

Und noch
Code:
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
191.255.255.0   *               255.255.255.0   U     0      0        0 venet0
default         191.255.255.1   0.0.0.0         UG    0      0        0 venet0
Ich bin also nicht direkt ans Internet angeschlossen, sondern muss später ein entsprechendes Gateway wieder angeben. Am höflichsten ist es wohl, exakt diese Routen wieder zu erzeugen.

Schließlich noch die DNS-Server:
Code:
# cat /etc/resolv.conf
nameserver 81.169.163.104
nameserver 81.169.163.106

Ebenfalls ist
Code:
 # mount
/dev/vzfs on / type reiserfs (rw,usrquota,grpquota)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw)
tmpfs on /dev/shm type tmpfs (rw)
und
Code:
# more /etc/fstab
proc  /proc       proc    defaults    0       0
none  /dev/pts    devpts  rw          0       0
angebracht, aber vermutlich genauso langweilig wie bei mir.

Das sollte eigentlich schon alles gewesen sein, was für die Installation benötigt wird. Vermutlich hat der durchschnittliche Leser aber noch viel mehr, was er an Einstellungen retten möchte! Also, mal tief in sich gehen. Und falls der Server schon läuft und Seiten ausliefert, dann steht eine Migration bevor!

2.

Ab jetzt wird in der Rettungskonsole gearbeitet. Bei mir finde ich dort das Dateisystem des Servers unter /repair.

Das alte (Suse-)System muss erstmal aus dem Weg. Falls man das nicht macht, scheitert die Installation mit merkwürdigen Fehlermeldungen! Natürlich kann man das alte System einfach löschen, aber ich würde es eher backuppen, wie im folgenden beschrieben, auch um notfalls noch auf alte (und funktionierende) Konfigurationsdateien zugreifen zu können.

Ich habe dafür zwei Methoden genommen (hab ja viel freien Platz auf dem Server). Einmal einen kompletten Tar-Ball (für später) und einmal das ganze System erstmal nur verschoben (für jetzt). Übrigens: Um das alte System doch wieder herzustellen eignet sich ein cp -r nicht! Dabei gehen die Rechte und Eigentümer der Dateien verloren und Symlinks werden aufgelöst. Stattdessen lieber cp -r -p -d nehmen. (Oder aus dem Tarball extrahieren mit entsprechenden Optionen.)

Code:
rescue:/ # cd repair
rescue:/repair # tar czf Suse93.tar.gz bin/ ........ $alles OS-mäßige aus /repair$
rescue:/repair # mkdir Suse93
rescue:/repair # mv Suse93.tar.gz Suse93
rescue:/repair # mv bin/ .... $alles OS-mäßige aus /repair$ Suse93/
Mein spezielles Backup-Verzeichnis /private-backup/ (bei Strato) habe ich übrigens nicht verschoben. Warum auch, das kommt keiner Distribution in die Quere. Aber bin/ etc/ usr/ lib/ und ähnliches müssen natürlich weg. home/ kann man theoretisch beibehalten, aber es könnte etwas Probleme mit den Dateiberechtigungen geben (darauf achten, dass die neuen Benutzer und Gruppen wieder die gleichen internen Nummern haben!) Evtl ist es einfacher, später als Benutzer sein Homeverzeichnis wieder selbst zu entpacken.

Ab jetzt geht es in etwa laut http://www.debian.org/releases/stable/i386/index.html.en , Anhang C, weiter. Aber so viel mehr als hier steht da nicht (bzw. vieles trifft nicht wirklich zu).

3.

Das Paket debootstrap besorgt die Basispakete. Eine passende Version kann man auf http://ftp.debian.org/debian/pool/main/d/debootstrap/ aussuchen und auf den Server herunterladen. Die .udeb- und .deb-Pakete enthalten die gleichen Programme, .udeb enthält aber weniger Dokumentation.
http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_0.3.3_all.deb
sollte aktuell das richtige für jeden sein.

Danach muss debootstrap "installiert" werden. Es erwartet leider seine Dateien an ganz normalen Plätzen wie /usr/lib. Man muss also Sachen in das Rescue-System hineininstallieren. Vermutlich wird das Rescue-System beim nächsten Starten alle Änderungen wieder vergessen haben, so dass das nicht weiter stört. Sicher bin ich mir jedoch nicht, und sowieso kann das bei jedem anders sein.

Also,
Code:
rescue:/tmp# ar -x path_to/debootstrap_0.3.3_all.deb
rescue:/tmp# cd /
rescue:/# tar xzf /tmp/data.tar.gz
rescue:/# tar xzf /tmp/control.tar.gz

So, jetzt die Debian-Frage: Was soll es denn sein? sarge (=stable), etch (=testing) oder etwa sid (=unstable)? Um ganz ehrlich zu sein, sid hat wohl auf einem Server nichts verloren. Testing wäre okay, aber ich persönlich habe sarge bevorzugt. Siehe http://www.debian.org/releases/

Dann debootstrap aufrufen:
Code:
rescue:/# /usr/sbin/debootstrap --arch i386 sarge /repair/ http://ftp.de.debian.org/debian
Die Architektur ist vermutlich bei allen i386 (spezieller, also i686, geht nicht, und ia64 gibt wohl Probleme auf einem vServer). Das sarge muss entsprechend angepasst werden, wenn man nicht stable will. Den Mirror darf man natürlich frei wählen.

Wenn alles gut geht, lädt er die folgenden Pakete in das System:

Code:
# dpkg --list
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                           Version                        Description
+++-==============================-==============================-============================================================================
ii  adduser                        3.63                           Add and remove users and groups
ii  apt                            0.5.28.6                       Advanced front-end for dpkg
ii  apt-utils                      0.5.28.6                       APT utility programs
ii  aptitude                       0.2.15.9-2                     terminal-based apt frontend
ii  at                             3.1.8-11                       Delayed job execution and batch processing
ii  base-config                    2.53.10                        Debian base system configurator
ii  base-files                     3.1.2                          Debian base system miscellaneous files
ii  base-passwd                    3.5.9                          Debian base system master password and group files
ii  bash                           2.05b-26                       The GNU Bourne Again SHell
ii  bsdmainutils                   6.0.17                         collection of more utilities from FreeBSD
ii  bsdutils                       2.12p-4sarge1                  Basic utilities from 4.4BSD-Lite
ii  console-common                 0.7.49                         Basic infrastructure for text console configuration
ii  console-data                   2002.12.04dbs-49               Keymaps, fonts, charset maps, fallback tables for console-tools
ii  console-tools                  0.2.3dbs-56                    Linux console and font utilities
ii  coreutils                      5.2.1-2                        The GNU core utilities
ii  cpio                           2.5-1.3                        GNU cpio -- a program to manage archives of files.
ii  cron                           3.0pl1-86                      management of regular background processing
ii  debconf                        1.4.30.13                      Debian configuration management system
ii  debconf-i18n                   1.4.30.13                      full internationalization support for debconf
ii  debianutils                    2.8.4                          Miscellaneous utilities specific to Debian
ii  dhcp-client                    2.0pl5-19.1                    DHCP Client
ii  diff                           2.8.1-11                       File comparison utilities
ii  dpkg                           1.10.28                        Package maintenance system for Debian
ii  dselect                        1.10.28                        a user tool to manage Debian packages
ii  e2fslibs                       1.37-2sarge1                   ext2 filesystem libraries
ii  e2fsprogs                      1.37-2sarge1                   ext2 file system utilities and libraries
ii  ed                             0.2-20                         The classic unix line editor
ii  exim4                          4.50-8                         metapackage to ease exim MTA (v4) installation
ii  exim4-base                     4.50-8                         support files for all exim MTA (v4) packages
ii  exim4-config                   4.50-8                         configuration for the exim MTA (v4)
ii  exim4-daemon-light             4.50-8                         lightweight exim MTA (v4) daemon
ii  fdutils                        5.4-20040228-1                 Linux floppy utilities
ii  findutils                      4.1.20-6                       utilities for finding files--find, xargs, and locate
ii  gcc-3.3-base                   3.3.5-13                       The GNU Compiler Collection (base package)
ii  gettext-base                   0.14.4-2                       GNU Internationalization utilities for the base system
ii  grep                           2.5.1.ds1-4                    GNU grep, egrep and fgrep
ii  groff-base                     1.18.1.1-7                     GNU troff text-formatting system (base system components)
ii  gzip                           1.3.5-10sarge1                 The GNU compression utility
ii  host                           20000331-9                     utility for querying DNS servers
ii  hostname                       2.13                           A utility to set/show the host name or domain name
ii  ifupdown                       0.6.7                          high level tools to configure network interfaces
ii  info                           4.7-2.2                        Standalone GNU Info documentation browser
ii  initscripts                    2.86.ds1-1                     Standard scripts needed for booting and shutting down
ii  ipchains                       1.3.10-15                      Network firewalling for Linux 2.2.x
ii  iptables                       1.2.11-10                      Linux kernel 2.4+ iptables administration tools
ii  iputils-ping                   20020927-2                     Tools to test the reachability of network hosts
ii  klogd                          1.4.1-17                       Kernel Logging Daemon
ii  less                           382-1                          Pager program similar to more
ii  libacl1                        2.2.23-1                       Access control list shared library
ii  libattr1                       2.4.16-1                       Extended attribute shared library
ii  libblkid1                      1.37-2sarge1                   block device id library
ii  libc6                          2.3.2.ds1-22                   GNU C Library: Shared libraries and Timezone data
ii  libcap1                        1.10-14                        support for getting/setting POSIX.1e capabilities
ii  libcomerr2                     1.37-2sarge1                   common error description library
ii  libconsole                     0.2.3dbs-56                    Shared libraries for Linux console and font manipulation
ii  libdb1-compat                  2.1.3-7                        The Berkeley database routines [glibc 2.0/2.1 compatibility]
ii  libdb3                         3.2.9-22                       Berkeley v3 Database Libraries [runtime]
ii  libdb4.2                       4.2.52-18                      Berkeley v4.2 Database Libraries [runtime]
ii  libgcc1                        3.4.3-13                       GCC support library
ii  libgcrypt11                    1.2.0-11.1                     LGPL Crypto library - runtime library
ii  libgdbm3                       1.8.3-2                        GNU dbm database routines (runtime version)
ii  libgnutls11                    1.0.16-13.1                    GNU TLS library - runtime library
ii  libgpg-error0                  1.0-1                          library for common error values and messages in GnuPG components
ii  libgpmg1                       1.19.6-19sarge1                General Purpose Mouse - shared library
ii  liblocale-gettext-perl         1.01-17                        Using libc functions for internationalization in Perl
ii  liblockfile1                   1.06                           NFS-safe locking library, includes dotlockfile program
ii  liblzo1                        1.08-1.2                       A real-time data compression library
ii  libncurses5                    5.4-4                          Shared libraries for terminal handling
ii  libnewt0.51                    0.51.6-20                      Not Erik's Windowing Toolkit - text mode windowing with slang
ii  libopencdk8                    0.5.5-10                       Open Crypto Development Kit (OpenCDK) (runtime)
ii  libpam-modules                 0.76-22                        Pluggable Authentication Modules for PAM
ii  libpam-runtime                 0.76-22                        Runtime support for the PAM library
ii  libpam0g                       0.76-22                        Pluggable Authentication Modules library
ii  libpcap0.7                     0.7.2-7                        System interface for user-level packet capture
ii  libpcre3                       4.5-1.2sarge1                  Perl 5 Compatible Regular Expression Library - runtime files
ii  libpopt0                       1.7-5                          lib for parsing cmdline parameters
ii  libsigc++-1.2-5c102            1.2.5-4                        type-safe Signal Framework for C++ - runtime
ii  libss2                         1.37-2sarge1                   command-line interface parsing library
ii  libssl0.9.7                    0.9.7e-3sarge1                 SSL shared libraries
ii  libstdc++5                     3.3.5-13                       The GNU Standard C++ Library v3
ii  libtasn1-2                     0.2.10-3                       Manage ASN.1 structures (runtime)
ii  libtext-charwidth-perl         0.04-1                         get display widths of characters on the terminal
ii  libtext-iconv-perl             1.2-3                          Convert between character sets in Perl
ii  libtext-wrapi18n-perl          0.06-1                         internationalized substitute of Text::Wrap
ii  libtextwrap1                   0.1-1                          text-wrapping library with i18n - runtime
ii  libuuid1                       1.37-2sarge1                   universally unique id library
ii  libwrap0                       7.6.dbs-8                      Wietse Venema's TCP wrappers library
ii  login                          4.0.3-31sarge5                 system login tools
ii  logrotate                      3.7-5                          Log rotation utility
ii  mailx                          8.1.2-0.20040524cvs-4          A simple mail user agent
ii  makedev                        2.3.1-77                       creates device files in /dev
ii  man-db                         2.4.2-21                       The on-line manual pager
ii  manpages                       1.70-1                         Manual pages about using a GNU/Linux system
ii  mawk                           1.3.3-11                       a pattern scanning and text processing language
ii  modutils                       2.4.26-1.2                     Linux module utilities
ii  mount                          2.12p-4sarge1                  Tools for mounting and manipulating filesystems
ii  nano                           1.2.4-5                        free Pico clone with some new features
ii  ncurses-base                   5.4-4                          Descriptions of common terminal types
ii  ncurses-bin                    5.4-4                          Terminal-related programs and man pages
ii  net-tools                      1.60-10                        The NET-3 networking toolkit
ii  netbase                        4.21                           Basic TCP/IP networking system
ii  netkit-inetd                   0.10-10                        The Internet Superserver
ii  nvi                            1.79-22                        4.4BSD re-implementation of vi
ii  passwd                         4.0.3-31sarge5                 change and administer password and group data
ii  pciutils                       2.1.11-15                      Linux PCI Utilities
ii  perl-base                      5.8.4-8                        The Pathologically Eclectic Rubbish Lister
ii  ppp                            2.4.3-20050321+2               Point-to-Point Protocol (PPP) daemon
ii  pppconfig                      2.3.11                         A text menu based utility for configuring ppp
ii  pppoe                          3.5-4                          PPP over Ethernet driver
ii  pppoeconf                      1.7                            configures PPPoE/ADSL connections
ii  procps                         3.2.1-2                        The /proc file system utilities
ii  psmisc                         21.5-1                         Utilities that use the proc filesystem
ii  sed                            4.1.2-8                        The GNU sed stream editor
ii  slang1a-utf8                   1.4.9dbs-8                     The S-Lang programming library with utf8 support
ii  sysklogd                       1.4.1-17                       System Logging Daemon
ii  sysv-rc                        2.86.ds1-1                     Standard boot mechanism using symlinks in /etc/rc?.d
ii  sysvinit                       2.86.ds1-1                     System-V like init
ii  tar                            1.14-2                         GNU tar
ii  tasksel                        2.24                           Tool for selecting tasks for installation on Debian system
ii  tcpd                           7.6.dbs-8                      Wietse Venema's TCP wrapper utilities
ii  telnet                         0.17-29                        The telnet client
ii  util-linux                     2.12p-4sarge1                  Miscellaneous system utilities
ii  wget                           1.9.1-12                       retrieves files from the web
ii  whiptail                       0.51.6-20                      Displays user-friendly dialog boxes from shell scripts
ii  zlib1g                         1.2.2-4.sarge.2                compression library - runtime
(Okay, das war jetzt wenig spannend.)

Nun hat man aber bereits ein kleines Debian installiert. Ein Kernel ist übrigens nicht dabei, aber wer braucht den schon.

4.

Nun begeben wir uns in das neue System hinein. (Noch kein Neustart!)
Code:
chroot /repair /bin/bash

Das erste Problem ist, dass bei mir die /etc/apt/sources.list nicht stimmte. Aus irgendeinem Grund war da Testing eingestellt. Also mal rein (Editor nano) und aus testing sarge machen. Außerdem kann man dort noch die Security-Updates einstellen. Bei mir sieht das dann am Schluss so aus:
Code:
deb http://ftp.de.debian.org/debian sarge main
deb http://ftp.de.debian.org/debian-security sarge/updates main
# Source, wer will
#deb-src http://ftp.de.debian.org/debian/ sarge main

Man kann natürlich auch noch die contrib und non-free Repositories verwenden, dann sollte man diese Zeilen hier verwenden:
Code:
deb ftp://ftp.de.debian.org/debian sarge main contrib non-free
deb ftp://ftp.de.debian.org/debian-security sarge/updates main contrib non-free

So, damit man auch weiß, ob alles funktioniert:
Code:
chroot:/# apt-get update

Wer will kann bereits jetzt mit apt-get bzw aptitude Sachen installieren. So ist zum Beispiel als Editor bis jetzt nur nano installiert. Ich mache allerdings erstmal mit dem Basis-Setup weiter, weil so richtig läuft der Server noch nicht.

Die /etc/fstab kann einfach aus dem alten OS übernommen werden.
Code:
chroot:/# cp Suse93/etc/fstab /etc/fstab

Als nächstes soll man laut dem Installation Guide das Verzeichnis /proc mounten. Das habe ich aber vergessen und es tat trotzdem. Schaden würde es aber nicht. Außerdem mal alle Einträge aus der fstab laden (vor allem dev/pts wird wohl benötigt).
Code:
chroot:/# mount -t proc proc /proc
chroot:/# mount -a

Mittels
Code:
/usr/sbin/base-config new
kann man nun bequem das System etwas einrichten. Wir beschränken uns aber auf die elementaren Sachen: Keyboard (fast sinnfrei für einen vServer, ich hab die Kernel-interne Keymap genommen), Zeitzone und vor allem: Root Passwort setzen und einen "normalen" Nutzer anlegen.

Jetzt noch das Netzwerk. Bei Suse findet man die Einstellungen unter /etc/sysconfig/network/ , wenn man nochmal etwas nachgucken will. Unter debian kann alles über /etc/network/interfaces eingestellt werden.

Meine interfaces sieht so aus:
Code:
auto lo
iface lo inet loopback

auto venet0
iface venet0 inet static
     address 127.0.0.1
     netmask 255.255.255.255
     broadcast 0.0.0.0

auto venet0:0
iface venet0:0 inet static
     address 85.214.43.177
     netmask 255.255.255.255
     broadcast 0.0.0.0
up route add -net 191.255.255.0 netmask 255.255.255.0 venet0
up route add default gw 191.255.255.1 venet0
down route del default
down route del -net 191.255.255.0
Damit habe ich die vorgebene Netzwerkkonfiguration nachgebaut. Achtung, Routen müssen in einer "sinnvollen" Reihenweise angegeben werden. Also erst, wie man zum Gateway kommt, und dann, wie man zum Rest der Welt mittels des Gateways verbindet.

Schließlich sollte man noch seinen Servernamen in /etc/hostname eintragen (oder aus dem alten OS kopieren).

Damit der Server auch nutzbar ist, sollte man nun den SSH-Chlient und -Server installieren:
Code:
chroot:/# apt-get install ssh


5.

Nun sollte eigentlich alles soweit sein, dass man auch vom Server aus weiterarbeiten kann. Also macht man nun einen Neustart. Ein ping auf den Server sollte zeigen, ob das Netzwerk funktioniert. Falls ja, sollte man sich auch per ssh einloggen können. Falls nein, wird es etwas komplizierter. Aus einem nicht erreichbaren System Informationen herauszukriegen, ist nicht sehr einfach. Von der Rettungskonsole aus sollte man nochmal alle Einstellungen überprüfen. Außerdem bietet /repair/var/log/messages vielleicht Hinweise darauf, wieweit das System gekommen ist. Ich habe die Einstellungen des Servers mit einem S99Test-Skript in /etc/rcS.d/ in Dateien ausgeben lassen. (Und auch da Ping-Versuche von dem Server aus probiert.)

Aber eigentlich tat bei mir alles, nur hatte ich das Netzwerk falsch eingerichtet ;)

6.

Was bleibt noch zu tun? Zum einen produziert init.d noch Fehlermeldungen, weil es die in /etc/inittab konfigurierten Gettys nicht laden kann. Einfach die folgenden Zeilen auskommentieren:
Code:
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

Nebenbei: Der Server startet ins Runlevel 2.

Das Setzen der Hardware-Uhr (was der physikalische Host nicht zulässt), kann man getrost ausschalten:
Code:
rm /etc/rcS.d/S18hwclockfirst.sh /etc/rcS.d/S50hwclock.sh

Außerdem versucht sich wohl noch ein Modul zu laden, was nicht klappen kann, ich weiß aber nicht, welches. Vermutlich kann man /etc/rcS.d/ und /etc/rc2.d/ noch gründlich aufräumen, um solche unnötigen Aktionen ganz zu vermeiden. Wer hier Fortschritte macht, kann sie gerne melden!

Weiter geht es dann mit der "normalen" Serverkonfiguration. Benutzer einrichten, SSH absichern, Mailserver korrekt einrichten (exim4 ist bereits geladen) usw usf.

Empfehlenswert ist es, möglichst früh und oft ein komplettes Backup des Systems zu machen, schließlich bietet der Hoster kein Debian-Image an. Bei mir war der Tarball des rudimentären Debians 50 MB groß (mit gzip), so viel Platz sollte sein.

Viel Erfolg! Wer Fehler findet oder Ergänzungen hat, soll sich hier melden, ich arbeite die Korrekturen dann ein. Auch freu ich mich über ein "Danke, hat geklappt, musste nur noch ... " :)

Mit freundlichen Grüßen,
Daniel D

Update 1: Hinweis eingebaut, dass 64-Bit-Software vermutlich nicht funktioniert.
Update 2: Debootstrap sollte wohl immer mit der i386-Architektur aufgerufen werden. i686 akzeptiert er da nicht.
Update 3: Angemerkt, dass das alte System erst weg muss.
Update 4: Hinweise von Benutzer "1337_" eingebaut und (hoffentlich) besser auf base-config eingegangen.
 
Last edited by a moderator:
Hallo,

vielen Dank für das sehr ausführliche HowTo!
Bei gelegenheit werde ich es auch mal testen.
 
Teststand:
Beim Befehl:
Code:
/usr/sbin/debootstrap --arch i686 sarge /repair/ http://ftp.de.debian.org/debian
Krieg ich nen Fehler undzwar dass die Architektur i686 nicht existiert.
Installiere ich die i386 dann klappt das zwar aber dann kann ich nicht mehr chrooten.

Fehler? Wie weiter vorgehen?
 
Hallo djrick!

Danke fürs Ausprobieren!

Wegen der Architektur: Nimm i386 :) Ich hatte das auch verwendet, konnte mich aber nicht mehr erinnern, ob ich i686 getestet hatte oder nicht. Und ich dachte "Eigentlich sollte i686 funktionieren". Da hab ich wohl falsch gedacht ;)

Was meinst du mit chroot klappt nicht? Gib mal "which chroot" ein um zu schauen, welches er nimmt. Eigentlich sollte auf deinem rescue-System eins vorhanden sein und das sollte auch funktionieren. Das hat auch mit der Installation von Debian nichts zu tun. Höchstens, dass er evtl auf das chroot des Debians zurückgreift und dann etwas schiefgeht.

Die bash wird wohl auch aus dem Debiansystem genommen (bin mir gerade aber nicht sicher), vielleicht ist die an einer anderen Stelle installiert als auf dem rescue-System? (Würde mich aber wundern.)

Viel Erfolg!

Daniel D
 
So hier der genaue Fehler:

Mein Dateisystem ist in /mnt gemountet.
Wechsele ich ins Rescue ohne vorher debootstrab ausgeführt zu haben, kann ich mit chroot /mnt problemlos chrooten.
Führe ich den bootstrapper aus will er natürlich am ende Chrooten und bricht diesen Vorgang mit diesem Error ab:
/bin/bash: relocation error: /lib/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference

which chroot liefert:
/usr/bin/chroot
 
Hallo!

Aus dem Debian Installation Manual:

"Note that running debootstrap may require you to have a minimal version of glibc installed (currently GLIBC_2.3). debootstrap itself is a shell script, but it calls various utilities that require glibc."

Versuch also mal eine aktuelle libc zu installieren. <-- Den Vorschlag ziehe ich zurück. Da müsste man vermutlich gleich das ganze System mit umstellen ;) Der Ansatz im nächsten Post erscheint vielversprechender.

Daniel D
 
Last edited by a moderator:
Ich nochmal. Hab gerade im Google Cache einen Hinweis gefunden:
Man kann evtl das Innere von debootstrap gegen eine ältere Version austauschen, damit das ganze auch ohne glibc 2.3 läuft.

"debootstrap works fine for installing Deban GNU/Linux (sarge). But, it needs some tweaks since sarge is based on GLIBC 2.3 whereas the customized Linux distribution (hdimage-YYYMMXX.tar.gz) is based on GLIBC 2.2. The trick is using the latest version of debootstrap, but replacing /usr/lib/debootstrap/pkgdetails with an older one."
Siehe auch:
http://72.14.207.104/search?q=cache...openblockss/+&hl=en&ct=clnk&cd=1&client=opera

(Da ist das allerdings für den Mac beschrieben, aber es geht ja nur um die Idee.)

Ich würde dann wohl auf das "Innere" von
http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_0.2.45-0.2_i386.deb
zurückgreifen. (Oder einfach mal damit probieren? Möglicherweise ist das aber für sarge nicht geeignet.)

Heute nacht sollte ich mehr Zeit haben.

MfG,
Daniel D
 
Ihr seit ja bei unterschiedlichen Hostern:
DanielD bei Strato und Djrick versucht es auf einem S4U-vServer.
Könnt ihr Beiden mal rausfinden, was für ein Grundsystem das Rescue-System ist? (Ich hab dunkel in Erinnerung, daß das Rescue bei Strato auf Debian basiert.)

djrick said:
/bin/bash: relocation error: /lib/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference
Denn dieser Fehler klingt so, als ob es hier Versions-Konfikte gibt.

huschi.
 
Hallo!

Mein Strato-Rettungssystem ist ein Suse (ich tippe mal auf 9.3). Mit libc 2.3.4, siehe auch
Code:
# /lib/libc.so.6
GNU C Library stable release version 2.3.4 (20050218), by Roland McGrath et al.
...
Configured for i586-suse-linux.

Das könnte auch djrick mal ausführen.

Grüße,
Daniel D
 
Code:
cat /etc/SuSE-release
SuSE Linux 9.3 (i586)
VERSION = 9.3
Code:
# /lib/libc.so.6
GNU C Library stable release version 2.3.4 (20050218), by Roland McGrath et al.
Copyright (C) 2005 Free Software Foundation, Inc.
...
Configured for i586-suse-linux.
Compiled by GNU CC version 3.3.5 20050117 (prerelease) (SUSE Linux).
Compiled on a Linux 2.6.9 system on 2005-06-10.

Es stellt sich jetzt für mich die Frage:
Ich hab als normales OS auf dem Vserver: SuSE 9.3
Das Rescue System ist: SuSE 9.3

Wenn ich jetzt sagen wir: Fedora Core installiere, hab ich dann immer noch SuSE als Rescue oder FC ?!? :)
 
Mmmmh, dann war meine Vermutung wohl falsch. Daran kann es wohl nicht liegen.

djrick said:
Wenn ich jetzt sagen wir: Fedora Core installiere, hab ich dann immer noch SuSE als Rescue oder FC ?!? :)
Gute Frage. Gegenfrage (sollte Anhand Deiner OpenVZ-Installation zu beantworten sein): Ist das Rescue-System in Virtuozzo integriert oder extern?
Wenn 'integriert' stellt sich die Frage, wie es integriert wird: automatisch vom Hostsystem abgeleitet, oder als Image-File?

Ich vermute daß es als Image-File integriert ist. Und damit der Wartungsaufwand möglichst gering ist, greift jeder Host auf das selbe Image zu.
Das würde Deine Frage beantworten, oder?

huschi.
 
Hallo djrick!

Ich finde es merkwürdig, dass sich bin/bash des neuen Systems beschwert. Oder ist das etwa die bash des alten Systems? Dann wäre /mnt/debian/bin/bash vielleicht erfolgreicher?

Außerdem habe ich nochmal ein debootstrap ausgeführt und merke nicht, an welcher Stelle er schon während des Skripts ins chroot wechselt. Leider bringt er bei mir aber auch keinen Fehler ... Außerdem habe ich das "alte" debootstrap (Version 0.2.x) mal angeschaut: Das installiert (bis auf 2 zusätzliche Bibliotheken) das gleiche System und lief bei mir auch ohne Probleme. Vielleicht willst du das mal ausprobieren? (Ohne umständlich Sachen hin- und herzukopieren.)

Und noch ein Ansatz:
Kann es sein, dass dein System eigentlich schon fertig eingerichtet ist? Oder zumindest fertig eingerichtet werden kann, wenn du nach debootstrap selbst ins chroot wechselst und dpkg --configure --pending ausführst?

Viel Erfolg! Ich würde hier ja gerne ein funktionierendes Howto anbieten ;)

Daniel D
 
Huschi said:
Ist das Rescue-System in Virtuozzo integriert oder extern?
Mir wäre kein Befehl für das Hostsystem in OpenVZ bekannt ala: openvz --start --ve123 --rescue


Darüber habe ich schon in anderem Zusammenhang nachgedacht: Mir kam der Einfall, es einfach in meiner OpenVZ Umgebung zu testen dann müsste ich nicht immer solange auf eine Neuinstallation warten. Aber ich wüsste nicht wie ich bei mir meine VE ins Rescue bekomme. => Ich würde es, wenn ich es entwickeln müsste, so machen: Ein VE als "Rescuehostsystem" nehmen..also man bootet quasi eine VE in der das VE-Filesystem der zu reparierenden VE eingehängt ist. Versteht man was ich meine?!

Zu DanielD: Ich bin gerade am Testen werde weiter berichten...
 
Fehler des 0.2er Debootstraps Scripts:
Code:
I: Installing core packages...
ln: creating symbolic link `/mnt/usr/bin/awk' to `mawk': File exists
umount: /mnt/dev/pts: not mounted
umount: /mnt/dev/shm: not mounted
umount: /mnt/proc/bus/usb: not found

Chroot Error dannach:
Code:
 chroot /mnt /mnt/bin/bash
chroot: cannot run command `/mnt/bin/bash': No such file or directory

Wohlgemerkt: /mnt/bin/bash existiert...

Der "normale" chroot Befehl gibt wieder den glib error aus.
Und ein /mnt/debian gibts noch nicht, weil der debootstrap ja beim Installieren abbricht
 
Last edited by a moderator:
Hallo!

Also ... ich habe jetzt endlich "info coreutils chroot" gelesen :)
chroot /mnt /bin/bash führt /mnt/bin/bash aus und es werden auch alle Bibliotheken aus /mnt/lib/ (o.ä.) genommen, nicht aus dem Rescue-System.

Schau doch auch mal nach, wieviel das debootstrap installiert. Ca. 120 MB laut du -c -h sollten rauskommen. Dann ist dein Basis-System komplett. Dann wäre es allerdings um so verwirrender, warum er nicht chrooten will.

Kannst du mal nachschauen, ob im neuen System bereits die Bibliotheken installiert sind, die
ldd /mnt/bin/bash
ausgibt?
Mehr fällt mir momentan aber auch nicht dazu ein ...

Dass du vor debootstrap problemlos chrooten kannst (wie du am Anfang mal geschrieben hast), finde ich aber merkwürdig. Hast du das alte OS nicht sauber weggeschoben? Denn dann sollte ein chroot /mnt /bin/bash sich beschweren, dass er nicht die nötige Shell findet, schließlich existiert /mnt/bin/bash zu dem Zeitpunkt gerade nicht.

Wenn alles schief geht: Man kann die Installation eigentlich auf jedem Linux-Rechner ausführen, also auch z.B. auf dem heimischen. Dann alles in ein .tar und auf dem Server entpacken. Das ist allerdings nicht das, was wir wollen ;) Was aber evtl Sinn macht: Anstatt aus der Rettungskonsole kannst du es ja mal auf deinem "normalen" Server starten. (Aber wenn beides Suse 9.3 ist ...)

Viel Erfolg!

Daniel D

PS: Muss gleich los ... Aber: versuch mal
export LD_ASSUME_KERNEL=2.4.1
wer weiß ... (andererseits, werden Variblen in das chroot übernommen?)
 
Last edited by a moderator:
Hallo djrick!

Ich habe es geschafft, einen ähnlichen Fehler wie deinen zu produzieren: (mit debootstrap 0.3.3)
Code:
... debootstrap lädt runter und entpackt ...
I: Extracting tar...
I: Extracting util-linux...
I: Extracting whiptail...
I: Extracting zlib1g...
I: Installing core packages...
W: Failure trying to run: chroot /mnt dpkg --force-depends --install var/cache/apt/archives/base-files_3.1.2_i386.deb var/cache/apt/archives/base-passwd_3.5.9_i386.deb

Und wenn man es dann selbst probiert kommt:
Code:
# chroot mnt/
/bin/bash: relocation error: /lib/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference

Entspricht das dem, was du erlebt hast?
Allerdings passiert das nur, wenn ich das Suse93 vorher nicht aus dem Weg schiebe! Also: Unbedingt: /mnt muss vor der Installation leer sein (bis auf für Linux bedeutungslose Verzeichnisse).

Überprüfe das nochmal!

Daniel D
 
Gut dann weiss ich auch wo mein Fehler war.

Ich hab das SuSE Linux nicht aus dem Weg geräumt. Ich hab gedacht dieser Schritt wäre nur zu Backupzwecken, und da ich nichts zum Backuppen hatte hab ichs immer ausgelassen.

Werde es weiter probieren
 
Hallo djrick!

Debian über das Suse drüberzubügeln ist auch nicht so der toller Anatz. Der Installer löscht nichts und dann hätte man am Ende Konfigurationsdateien und Skripte von beiden Systemen drauf. Das wäre ein ziemliches Durcheinander. (Aber hey, die Fehlermeldungen könnte man dann auf 2 Mailinglisten posten ;)

Übrigens finde ich es immer noch gut, dass du das Howto ausprobiert hast. Ich habe viel dadurch gelernt. Noch eine Frage aus persönlicher Neugier: Wenn du bei S4Y bist, warum nutzt du nicht deren Debian-Image? Keine Lust auf ein vorinstalliertes System?

Noch viel Spaß mit Debian,
Daniel D
 
DanielD said:
Wenn du bei S4Y bist, warum nutzt du nicht deren Debian-Image? Keine Lust auf ein vorinstalliertes System?
Natürlich nutze ich das Debian Image NORMALERWEISE

Das war jetzt lediglich dazu gedacht um zu probieren ob dieses HowTo funktioniert :)
 
Back
Top