1. Aktuelles
  2. Dashboard
  3. Forum
    1. Unerledigte Themen
  4. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
  5. Community vs. Enterprise
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Seiten
  • Erweiterte Suche
  1. efw-forum - Endian Firewall Support Forum
  2. Forum
  3. Tips,Tricks, HowTo´s, MODs
  4. Tips, Links

Kernel für neue Hardware zu alt - Fremdkernel nutzen

  • ProfessorG
  • 21. April 2009 um 12:33
1. offizieller Beitrag
  • ProfessorG
    Anfänger
    Beiträge
    11
    • 21. April 2009 um 12:33
    • #1

    Problem:
    Der Kernel der Installations-CD ist zu alt und erkennt die neuere Hardware (RAID-Controller, Chipsatz, etc.) des neuen Servers nicht. Installation endet in einer Endlosschleife der Hardwareerkennung...

    In dem hier beschriebenen Fall handelt es sich um die 2.2 RC3 Version mit integriertem Kernel 2.6.22.19-72.Endian15.
    Ziel-Hardware:

    • Mainboard: Supermicro SMCI-X7DCLi, Chipsatz Intel 5100, 2x LAN 1GBit Intel 82573V/L

    • Prozessor: Intel Xeon E5405

    • Arbeitsspeicher: 2 GB ECC

    • RAID-Controller: 3Ware Escalade 9650SE-2LP, PCI-e, RAID1 mit 2x160GB


    Lösung:
    Klappt das Booten mit einer Live-CD einer anderen Linux-Distribution, die einen neueren Kernel verwendet, und kann diese die Hardware auch erkennen und ansprechen, kann man eine bestehende EFW mit dem neuen Kernel nachrüsten.

    Vorraussetzung
    : EFW muss bereits auf einem anderen Rechner installiert sein.

    Ablauf:
    1. Fremdkernel installieren, hier: Debian-basierter Kernel:

    debian-Installation (hier: Debian 5.0, Kernel 2.6.26 i386/686), expert-installation

    • Partitionierung (Beispiel 160 GB), 4 Partitionen:

      Code
      1: /boot, 100 MB
      2: swap,  4 GB
      3: /, 55,9 GB
      4: /var, 100 GB
    • Grundsystem installieren
    • Kernel installieren (einen auswählen, hier 2.6.26-2-686) (alle Treiber)
    • Grub in den MBR installieren lassen (nicht Grub V2 (experimental))

    2. Kernel sichern und Platte neu formatieren:

    • Knoppix starten (Bootparameter knoppix 2)
      Kerneldaten auf einen Stick oder anderes Medium kopieren (hier: /tmp)

      Code
      mount /media/sda1
      mount /media/sda3
      rsync -av /media/sda1/* /tmp/boot
      rmdir /tmp/boot/lost+found/
      rsync -av /media/sda3/lib/modules/* /tmp/modules

      /media/sda1 (Bootpartition), /media/sda3 (Systempartition)

    • Partitionen neu formatieren

      Code
      umount /media/sda1
      umount /media/sda3
      mkfs.ext3 -m 1 /dev/sda1
      mkfs.ext3 -m 0.3 /dev/sda3
      mkfs.ext3 -m 0.2 /dev/sda4

      Parameter m = Prozentualer Anteil der reservierten Blöcke für Superuser

    3. Endian Firewall kopieren:

    Code
    rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/

    remoteuser=root, remotehost=Servername der Quelle, /remote/dir=die jeweiligen Verzeichnisse, /this/dir=die Zielpartition

    Code
    mount /media/sda1
    mount /media/sda3
    mount /media/sda4
    rsync -av -e ssh root@remotehost:/boot/* /media/sda1
    for I in bin etc home lib mnt opt root sbin tmp usr; do rsync -avz -e ssh root@remotehost:/$I /media/sda3; done
    rsync -av -e ssh root@remotehost:/var/* /media/sda4

    4. Links erstellen und neue Kernel-Dateien kopieren:

    • mount-Verzeichnisse und System-Verzeichnisse:
      Code
      mkdir /media/sda3/boot /media/sda3/var /media/sda3/dev /media/sda3/proc /media/sda3/sys
      cp /tmp/boot/*-2.6.26-2-686 /media/sda1
    • für alte Dateien in /media/sda1 Sicherungen erstellen und anschließend neue verlinken:

      • a) als bash-Schleife:
        Code
        cd /media/sda1
        ls -1 *2.6.22* | while read I; do mv $I $I.old; NEU=`ls -1 ${I:0:5}*-2.6.26*`; ln -s $NEU $I; done
      • b) als Einzel-Befehle:
        Code
        cd /media/sda1
        mv config-2.6.22.19-72.endian15 config-2.6.22.19-72.endian15.old
        mv initrd-2.6.22.19-72.endian15.img initrd-2.6.22.19-72.endian15.img.old
        mv System.map-2.6.22.19-72.endian15 System.map-2.6.22.19-72.endian15.old
        mv vmlinuz-2.6.22.19-72.endian15 vmlinuz-2.6.22.19-72.endian15.old
        ln -s config-2.6.26-2-686 config-2.6.22.19-72.endian15
        ln -s initrd.img-2.6.26-2-686 initrd-2.6.22.19-72.endian15.img
        ln -s System.map-2.6.26-2-686 System.map-2.6.22.19-72.endian15
        ln -s vmlinuz-2.6.26-2-686 vmlinuz-2.6.22.19-72.endian15
    • altes Kernelmodul-Verzeichnis in /media/sda3/lib/modules sichern und neuere Dateien des neuen Modules kopieren:

      Code
      rsync -av /tmp/modules/* /media/sda3/lib/modules
      cd /media/sda3/lib/modules
      mv 2.6.22.19-72.endian15 2.6.22.19-72.endian15.old
      ln -s  2.6.26-2-686 2.6.22.19-72.endian15

    5. Grub installieren: (optional!)

    Zunächst sollte man probieren, ob der bereits durch Debian installierte Grub noch funktioniert - einfach neu ohne CD booten ;)

    Falls man die Knoppix-CD zum installieren des grub-loaders verwenden möchte, so hat Knoppix einen Bug, den es vor dem "chrooten" zu berücksichtigen gilt (siehe: http://www.knoppix.net/wiki/Dev_null_permission_denied

    Also bei mir musste ich in der Simulation in einer virtuellen Maschinenumgebung den Grub neu installieren. Bei der echten Installation brauchte ich es nicht.

    Die gesamte Firewall wurde nun geklont und läuft auf dem Server mit dem Kernel 2.6.26-2-686.

    :?:Selbstbeantwortete Fragen: :!:

    • Warum nicht gleich den (viel neueren) Kernel von Knoppix 2.6.28?
      Bei Knoppix habe ich keine Boot-Ramdisk (initrd) im /boot gefunden. Es geistert zwar eine minird.gz herum, aber ob die die richtigen Module enthält habe ich nicht überprüft.
    • Warum erst Debian installieren nur um an den Kernel heranzukommen - kann man den nicht von irgendeiner anderen Maschine schon kopieren?
      Man kann nicht sicher sein, ob auch die Treiber/Module für den Zielserver dabei sind. In der manuellen (expert-install) Installation, kann man beispielsweise alles mögliche schon für den Zielserver hereinladen lassen.
      Man kann natürlich auch sich den Kernel erst auf einer anderen Maschine bauen, aber ich habe bisher immer kein Erfolg dabei gehabt.
    • Wie sieht es mit 64Bit-Kerneln aus?
      Endian selbst ist ja 32Bit. Da weiß ich nicht, wie die alten gcc-kompillierten Bibliotheken aus /lib mit den neueren Modulen zusammenarbeiten. Was man auf jeden Fall nicht machen sollte, die älteren lib-Dateien mit den neueren Überschreiben - und da beginnt das Dilemma: bei 64Bit gibt es /lib, /lib32 (verlinkt nach /emul/ia32-linux/lib) und /lib64. Da ist bei dem Versuch einiges daneben gegangen.
      Falls es bei Endian auch mal eine 64Bit-Version gibt, dürfte dann wohl auch ein 64Bit-Fremdkernel auch möglich sein.


    -----------------------------------------
    Edit (30.04.2009):
    Also bei mir läuft das Ganze jetzt seit 1 Woche auf einem Produktiv-System ohne Ausfälle und ohne andere Probleme. Einzige Ausnahme: Ich kann über das Webfrontend die Passwörter für den Zugriff nicht ändern.

    -----------------------------------------
    Edit (30.04.2009):
    Ok, es liefen auch die anderen cgi-Scripte nicht vernünftig zum Ändern :cry: . Das Problem war, dass der User "nobody" in der alten Version die ID 65534 hatte und somit die FW keinen Schreibzugriff mehr darauf hatte.
    Ein Ändern aller 65534:nobody - Dateien auf nobody:nobody brachte Abhilfe und nun kann auch das Webfrontend-PAsswort geändert werden :D

    Code
    cd /
    find . -user 65534 -exec chown nobody:nobody {} \;

    3 Mal editiert, zuletzt von ProfessorG (30. April 2009 um 14:36)

  • ffischer
    Moderator
    Reaktionen
    18
    Trophäen
    1
    Artikel
    8
    Beiträge
    2.414
    • 21. April 2009 um 12:40
    • Offizieller Beitrag
    • #2

    :o wow kann ich da nur sagen,
    super ausführlich beschrieben das wird sicherlich einigen Anwendern helfen.
    Danke.

    gruß Frank

    Endian Authorized Partner

    freaky-media
    Kein Support per PN dafür ist das Forum da.
    Preisanfragen zur Appliance Produkten sind über freaky-media möglich.

  • murmel
    Endian Frischling
    Beiträge
    157
    • 21. April 2009 um 16:45
    • #3

    Ja danke dann kann ich ja meine Neue Hardware bestelle^^

    Albert Einstein:
    Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.

  • ProfessorG
    Anfänger
    Beiträge
    11
    • 22. Februar 2010 um 11:56
    • #4

    Tja, leider gilt dieses Workarround nicht mehr für die 2.3-Version:
    Bei mir war es so, dass zwar der Treiber für den Controller (3Ware 9650SE) im endian2.3-Kernel enthalten war, aber nach der Installation der Boot-Vorgang immer mit Kernel-Panic abbrach.
    Mit dem Debian-Kernel konnte zwar gebootet werden, aber das Netzwerk funktionierte nicht über dem Browser (ping und ssh funktionierte). Ursache scheint eine engere Zusammenarbeit einiger neuerer (notwendiger?) endian-Pakete mit dem spezifischen Kernel zu sein :twisted: - Offenbar mag Endian es nicht, dass man in der Community in ihren OpenSource-Paketen hackt :evil:

    Lösung
    Da endian sich eher an redhat-Paketen (centOS, Fedora) orientiert probierte ich es nun mit einem CentOS-Kernel. Obwohl dieser älter ist, konnten alle Module für die Hardware des Servers eingeladen werden.
    Die Installation von endian erkannte die Platte, so dass ich nun anders an die Sache heranging:

    Ablauf

    1. Fremdkernel installieren:


    Cent-OS 5.4 (32Bit) Installation, minimale Auswahl

    2. Kernel sichern:

    • Mit knoppix booten (knoppix 2 als Bootparameter)
    • Sicherung auf einen anderen PC

      Code
      mount /media/sda1
      rsync -av /media/sda1/lib/modules root@gastrechner:/tmp/endian/lib
      rsync -av /media/sda1/boot root@gastrechner:/tmp/endian

    3. endian installieren:


    Standard-Installation

    4. Kernel kopieren:

    • Mit knoppix booten (knoppix 2 als Bootparameter)
    • Auf dem anderen PC das CentOS-grub entfernen

      Code
      ssh root@gastrechner mv /tmp/endian/boot/grub /tmp/endian/boot/grub.centos
    • Kopieren von einem anderen PC

      Code
      mount /media/sda1
      rsync -av root@gastrechner:/tmp/endian/lib/modules /media/sda1/lib
      rsync -av root@gastrechner:/tmp/endian/boot /media/sda1
    • endian-Kernel sichern und fremden Kernel verlinken:

      Code
      cd /media/sda1/lib/modules
      mv 2.6.22.19-72.e18 2.6.22.19-72.e18.old
      ln -s 2.6.18-164.el5 2.6.22.19-72.e18
      cd /media/sda1/boot
      ls -1 *2.6.22* | while read I; do mv $I $I.old; NEU=`ls -1 ${I:0:5}*-2.6.18*`; ln -s $NEU $I; done

    Beim booten gibt es allerdings noch ein SWAP-Resume-Hänger, der aber nur den boot-Prozess um 1 Minute verlängert ;)

    Das wars und die efw ist nun auch im Webinterface aufrufbar. Ich hoffe nur, dass Endian sich wieder etwas mehr der Community öffnet und nicht in der nächsten Version wieder neue Hürden einbaut :evil:, die einen nach Alternativen ausprobieren lassen.

Unterstützt von

Benutzer online in diesem Thema

  • 1 Besucher
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™