Gentoo vServer Installation

Aus Byte-Welt Wiki
Version vom 14. Juli 2007, 15:25 Uhr von EagleEye (Diskussion | Beiträge) (System ist nach Installation nicht erreichbar: Textausgabe angepasst)
Zur Navigation springenZur Suche springen

In dieser Anleitung wird beschrieben wie man auf einem virtuellen System mit Virtuozzo Gentoo einrichtet.

Vorbereitung

Um Gentoo auf einem vServer mit Virtuozzo zu installieren, wie er z.B. von 1&1 oder Hosteurope, muss dieser erstmal in den Reparaturmodus gebracht werden. Dazu muss man sich in Virtuozzo anmelden (https://adresse:4643/vz/cp) und anschließend auf Wartung und Reperaturmodus. Nachdem der Server im Reperaturmodus wieder hochgefahren ist kann man sich mit einem SSH Clienten anmelden. Die Festplatte des vServers wurde jetzt /repair eingehängt, da wird jetzt mit cd /repairhineingewechselt.

Wer nicht alle Daten löschen will, muss die Ordner einzeln löschen rm -R ordner ansonsten kann einfach rm -R * eingegeben werden. Anschließend sollte der Ordner leer sein, bis auf die Dateien und Ordner, die man behalten will.

Grundinstallation

Jetzt muss das passende Stagepaket für die Installation und Portage geladen werden. Alternativ kann auch ein anderer Server genommen werden (es bieten aber nicht alle Server die vServer Stages an). <code=text> wget ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo/experimental/x86/vserver/stage3-x86-20060317.tar.bz2 wget ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo/snapshots/portage-latest.tar.bz2 </code=text>

Anschließend werden die Pakete entpackt, das stage3 Archiv wird direkt in /repair entpackt, sollte man nicht in dem Ordner sein sollte man jetzt in den Ordner gehen oder -C /repair an den Befehl anhängen. Portage wird direkt in das usr Verzeichnis entpackt. <code=text> tar xvjpf stage3-*.tar.bz2 tar xvjf portage-*.tar.bz2 -C /repair/usr </code=text>

Jetzt werden noch die Netzwerkinformationen kopiert und ein paar Dateisysteme eingehängt: <code=text> cp -L /etc/resolv.conf /repair/etc/

mount -t proc none /repair/proc mount -o bind /dev /repair/dev </code=text>

Konfiguration

Jetzt könnte, mit etwas Glück, schon alles laufen, aber damit es auch wirklich läuft, müssen noch einige Einstellungen vorgenommen werden. Dazu betreten wir jetzt die Umgebung. <code=text> chroot /repair /bin/bash env-update source /etc/profile export PS1="(chroot) $PS1" </code=text>

Als erstes sollte man die /etc/fstab anlegen oder bearbeiten, damit sie zu den Gegebenheiten des Systems passt. <code=text> proc /proc proc defaults 0 0 none /dev/pts devpts rw 0 0 /dev/vzfs / vzfs defaults,remount 0 0 </code=text>

Jetzt müssen wir die Zeitzone setzen, sollte es nicht Deutschland sein muss sich in /usr/share/zoneinfo eine passende aussuchen. <code=text> cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime </code=text>

Portage Konfigurieren

Als nächstes werden die Einstellungen für Portage vorgenommen, dazu muss die make.conf geändert werden. nano /etc/make.conf Hier müssen jetzt verschiedene Variablen angepasst werden:

CHOST

Diese Variable sollte nicht geändert werden, wenn sie nicht stimmt sollte man einen anderen Stage laden

CFLAGS/CXXFLAGS

Hier werden Flags für den Compiler angegeben, wie die Optimierung und das Zielsystem. Den Optimierungsgrad sollte man nicht zu stark wählen da es so zu instabilen Verhalten führen kann. Das Zielsystem kann man sich aus dem GCC Handbuch aussuchen

MAKEOPTS

Hier können Sie festlegen, wie viele Compilerprozesse parallel gestartet werden. Eine gute Wahl ist die Anzahl der CPUs plus 1.

LINGUAS

Mit LINGUAS kann man die Lokalisierung beeinflussen.

GENTOO_MIRRORS

Mit der Option werden die verwendeten Mirrorserver angegeben, in den Hochkommas können durch Leerzeichen mehrere Server angegeben werden.

SYNC

Die SYNC Option gibt die Server für die Portage-Synchronisation an.

USE

Mit der USE Option lässt sich die Installation von Paketen beeinflussen, da es sich um ein Server handelt sollte man immer die Optionen -X -gnome -gtk -gtk2 und -kde verwenden.


Es gibt noch weitere Optionen, welche man aber den Manpages entnehmen kann, eine Beispiel Konfiguration wäre diese: <code=bash>

  1. These settings were set by the catalyst build script that automatically built this stage
  2. Please consult /etc/make.conf.example for a more detailed example


CFLAGS="-O2 -march=pentium4 -pipe" CHOST="i686-pc-linux-gnu" CXXFLAGS="${CFLAGS}" MAKEOPTS="-j2" LINGUAS="de en" GENTOO_MIRRORS="ftp://ftp.tu-clausthal.de/pub/linux/gentoo/ ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo " SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" USE="-X apache2 bzip2 crypt -gnome -gtk -gtk2 java -kde imap nls postgres mysql maildir php -qt3 -qt4 pam sockets sse sse2 ssl zlib" PORT_LOGDIR="/var/log/portage" </code=bash>

Ist dies erledigt kann man das make.profile ändern, falls gewünscht. Das kann z.B. notwendig sein, wenn der Host-Kernel eine ältere Version (2.4.x) ist, die noch kein NPTL unterstützt. Das aktuelle Profil kann man mit ls -FGg /etc/make.profile abfragen; bei Bedarf kann man diesen Link auf /usr/portage/profiles/default-linux/x86/vserver oder einen der Oberordner umbiegen. Für ein 2.4-kompatibles Profil müßte z.B. folgender Pfad gesetzt werden: <code=text> ln -snf /usr/portage/profiles/default-linux/x86/vserver/no-nptl /etc/make.profile </code=text>


Jetzt muss noch die glibc Locales angepasst werden, dazu muss die Datei /etc/locale.gen editiert werden und anschließend müssen die Locals erstellt werden locale-gen


Netzwerk Konfiguration

Jetzt muss das Netzwerk noch eingestellt werden, dazu sollte man sich einen Hostnamen für den Server ausdenken und ihn in die /etc/conf.d/hostname eintragen. Außerdem sollte der Domainname, in der /etc/conf.d/domainname in DNSDOMAIN eingetragen werden. Anschließend fügt man beide dem Startscript hinzu, damit sie beim Systemstart gesetzt werden. <code=text> rc-update add hostname boot rc-update add domainname boot </code=text>

Für die weitere Netzwerkkonfiguration muss jetzt erstmal ein Programm installiert werden, damit das Netzwerk auf dem vServer funktioniert. <code=text>

  1. Wenn Portage bisher noch nicht synchronisiert wurde sollte es jetzt gemacht werden

emerge --sync

  1. Installation von iproute2

emerge iproute2 </code=text> Wenn dies nicht funktioniert hat, weil der Compiler mit der Meldung, das er einige Header Dateien nicht gefunden hat, die Compilierung abgebrochen, müssen wohl noch die Headerdateien installiert werden. <code=text> emerge -av linux-headers </code=text> Versucht man anschließend die Installation von iproute2 noch einmal sollte dies funktionieren.

Wenn die Installation erfolgreich war, wird die /etc/conf.d/net editiert, hier werden die Netzwerkschnittstellen angegeben. Es muss folgendes in die Datei eingetragen werden, weobei "eigeneip" durch die IP Adresse ersetzt werden muss. <code=text> modules=("iproute2"); config_venet0=("eigeneip netmask 255.255.255.0 broadcast 0.0.0.0");

routes_venet0=( "191.255.255.0/24 scope link"

               "default via 191.255.255.1 dev venet0" )

</code=text> Im Anschluss wird noch das erforderlich Startscript erzeugt und mit dem Startscript für den Loopback eingetragen. <code=text> cd /etc/init.d ln -s net.lo net.venet0 rc-update add net.venet0 default rc-update add net.lo default </code=text>

Ist dies getan muss noch die /etc/hosts geändert werden, hier kommt eine neue Zeile hinzu, welche die IP sowie den Namen und die Domain des Servers enthält. <code=bash>

  1. /etc/hosts: This file describes a number of hostname-to-address
  2. mappings for the TCP/IP subsystem. It is mostly
  3. used at boot time, when no name servers are running.
  4. On small systems, this file can be used instead of a
  5. "named" name server. Just add the names, addresses
  6. and any aliases to this file...
  7. $Header: /var/cvsroot/gentoo-src/rc-scripts/etc/hosts,v 1.8 2003/08/04 20:12:25 azarah Exp $
  1. 127.0.0.1 lvps87-230-10-69.dedicated.hosteurope.de lvps87-230-10-69 localhost localhost.localdomain
  2. 195.214.233.190 dionysos.croup.de dionysos

127.0.0.1 localhost ip hostname.domain hostname </code=bash>

Allgemeine Konfiguration

Als nächstes wird der Zeichensatz der Tastatur eingestellt, dies geschied über die /etc/conf.d/keymaps. Will man kein UTF-8 verweden kann man hier z.B. de-latin1 einstellen. Außerdem sollte man sich die Datei /etc/rc.conf betrachten, ob die Einstellungen dort den eigenen Vorlieben entsprachen.

In der Datei /etc/conf.d/clock sollte man CLOCK in CLOCK="local" ändern damit die Uhr richtig läuft.

Desweiteren sollte man jetzt ein Passwort für den root Accout festlegen. <code=text> passwd </code=text>

Und man sollte auch nicht vergessen den SSH Server beim Systemstart zu aktivieren. <code=text> rc-update add sshd default </code=text>

Installation der Systemtools

Nach der Konfiguration folgen noch einige Programme die man besser installieren sollte.

System Logger

Einen Systemlogger soltle man immer installieren, damit Fehler protokolliert werden können. <code=text> emerge syslog-ng rc-update add syslog-ng default </code=text> Damit er ordentlich funktioniert sollte auch die Konfiguration angepasst werden, diese befindet sich in der Datei /etc/syslog-ng/syslog-ng.conf. Nach der Konfiguration kann die Datei z.B. so aussehen: <code=bash> options { chain_hostnames(off); sync(0); };

  1. Quelle von der das Log gelesen werden soll

source src { unix-stream("/dev/log"); internal(); }; source kernsrc { file("/proc/kmsg"); };

  1. Ziele festlegen

destination authlog { file("/log/auth.log"); }; destination syslog { file("/log/syslog"); }; destination cron { file("/log/cron.log"); }; destination daemon { file("/log/daemon.log"); }; destination kern { file("/log/kern.log"); }; destination lpr { file("/log/lpr.log"); }; destination user { file("/log/user.log"); }; destination mail { file("/log/mail.log"); };

  1. destination postgresql { file("/log/postgresql/syslog"); };

destination mailinfo { file("/log/mail.info"); }; destination mailwarn { file("/log/mail.warn"); }; destination mailerr { file("/log/mail.err"); };

destination newscrit { file("/log/news/news.crit"); }; destination newserr { file("/log/news/news.err"); }; destination newsnotice { file("/log/news/news.notice"); };

destination debug { file("/log/debug"); }; destination messages { file("/log/messages"); }; destination console { usertty("root"); }; destination console_all { file("/dev/tty12"); }; destination xconsole { pipe("/dev/xconsole"); };

  1. Filter erstellen

filter f_authpriv { facility(auth, authpriv); }; filter f_syslog { not facility(authpriv, mail); }; filter f_cron { facility(cron); }; filter f_daemon { facility(daemon); }; filter f_kern { facility(kern); }; filter f_lpr { facility(lpr); }; filter f_mail { facility(mail); }; filter f_user { facility(user); };

  1. filter f_postgresql { facility(postgres); };

filter f_debug { not facility(auth, authpriv, news, mail); }; filter f_messages { level(info..warn) and not facility(auth, authpriv, mail, news); }; filter f_emergency { level(emerg); };

filter f_info { level(info); }; filter f_notice { level(notice); }; filter f_warn { level(warn); }; filter f_crit { level(crit); }; filter f_err { level(err); }; filter f_failed { match("failed"); }; filter f_denied { match("denied"); };

  1. Filter und Ziele verbinden

log { source(src); filter(f_authpriv); destination(authlog); }; log { source(src); filter(f_syslog); destination(syslog); }; log { source(src); filter(f_cron); destination(cron); }; log { source(src); filter(f_daemon); destination(daemon); }; log { source(kernsrc); filter(f_kern); destination(kern); }; log { source(src); filter(f_lpr); destination(lpr); }; log { source(src); filter(f_mail); destination(mail); }; log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); }; log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };

  1. log { source(src); filter(f_postgresql); destination(postgresql); };

log { source(src); filter(f_debug); destination(debug); }; log { source(src); filter(f_messages); destination(messages); }; log { source(src); filter(f_emergency); destination(console); };

  1. Standard-Protokoll

log { source(src); destination(console_all); }; </code=bash>

Cron Daemon

Ein Cron Daemon sollte man auch immer installieren da sich so verschiedene Aufgaben Zeitgesteuert ausführen lassen, z.b. Synchronisation von Portage. <code=text> emerge vixie-cron rc-update add vixie-cron default </code=text> Wenn es gewünscht ist, kann gleich der Cronjob für Portage eingefügt werden. <code=bash> crontab -e

  1. Das kann dann z.B. eingefügt werden damit jeden Tag um 1 die Synchronisation durchgeführt werden kann
  2. min stunde tag monat wochentag befehl
       0       1       *       *       *               emerge --sync --quiet

</code=bash>

Abschluss

Jetzt kann über Viruozzo der Reperaturmodus verlassen werden, anschließend sollte das System hochfahren und alles laufen. Es ist zu empfehlen jetzt Portage noch einmal zu synchronisieren und ein Update durchzuführen, was einige Stunden in Anspruch nehmen kann. <code=text> emerge --sync emerge -Duav world </code=text> Ist dies erledigt kann man nach eigenen Wünschen das System weiter verändern.


Mögliche Probleme

System fährt nach Installation nicht hoch

Konttrollieren ob das Stagearchiv für vServer genommen wurde, da nach Erfahrung die normalen Stagearchive nicht korrekt laufen.

System ist nach Installation nicht erreichbar

Logdateien kontrollieren und sich z.B. die Ausgabe von ifconfig -a in ein Datei speichern lassen, die man im Reperatur Modus sich ansehen kann. Dies ist möglich indem man z.B. ein verwendetes Startscript int /etc/init.d/ ändert und dort <code=text>ifconfig -a > /ifconfig.conf</code=text> einträg.

Das System erhält keine IP Adresse

Kontrollieren ob /etc/conf.d/net richtig eingestellt ist und ob iproute2 installiert ist.

iproute2 lässt sich nicht installieren

Wenn z.B. der Fehler kommt sollte man überprüfen ob die Version von ipconfig2 mit der Version der Kernel Header übereinstimmt. <code=text> include -DRESOLVE_HOSTNAMES -c -o ipaddress.o ipaddress.c ipaddress.c: In function `print_link_flags': ipaddress.c:99: error: `IFF_DYNAMIC' undeclared (first use in this function) ipaddress.c:99: error: (Each undeclared identifier is reported only once ipaddress.c:99: error: for each function it appears in.) i686-pc-linux-gnu-gcc -D_GNU_SOURCE -O2 -march=pentium4 -pipe -Wstrict-prototypes -Wall -I../ </code=text>

Sollte der Fehler kommen muss man die Kernel Header installieren. <code=text> In file included from ../include/libiptc/libiptc.h:6,

                from ../include/iptables.h:5, 
                from m_ipt.c:20: 

../include/linux/netfilter_ipv4/ip_tables.h:20:38: linux/netfilter/x_tables.h: No such file or directory In file included from ../include/libiptc/libiptc.h:6,

                from ../include/iptables.h:5, 
                from m_ipt.c:20: 

../include/linux/netfilter_ipv4/ip_tables.h:87: error: field `counters' has incomplete type ../include/linux/netfilter_ipv4/ip_tables.h:115:39: linux/netfilter/xt_tcpudp.h: No such file or directory ../include/linux/netfilter_ipv4/ip_tables.h:144: error: `XT_FUNCTION_MAXNAMELEN' undeclared here (not in a function) In file included from m_ipt.c:20: </code=text> Installieren der Kernel Header <code=text> emerge linux-headers </code=text>