Live/Boot-CD für RedHat Linux

Problem: Der Entry-Server IBM x306 in der SATA Version (xSeries 306 8489-2SY) hat einen SATA-RAID Controller, der durch das RedHat Enterprise 3 Basissystem nicht unterstützt wird, der automatisch geladene ata_piix Treiber zerstört das RAID.

Abhilfe: Erstellung einer eigenen Boot/Install-CD mit aarich-Treiber.

Basis: rhel3 ES/AS/WS Update 3 → enhält Kernel 2.4.21-20.EL

Für andere Distros: http://www.minimix.ch/debian-live/

Basis

  • RedHat Enterprise Linux 3 - Install-CD: /images/boot.iso
  • RedHat Enterprise Linux 3 - Updates: /RedHat/base/updates.img (optional)
  • RedHat Enterprise Linux 3 - ProductInfo: /RedHat/base/product.img (ext2)
  • RedHat Enterprise Linux 3 - rescue-System: /RedHat/base/stage2.img (cramfs)
  • RedHat Enterprise Linux 3 - rescue-System: /RedHat/base/netstg2.img (cramfs)

Schritt 1 - Rescue-Root erstellen

mkdir -p /mnt/source 
mount -o loop rhel3.disc1.iso /mnt/source
mkdir -p /mnt/rescue/RedHat/base
cp -ar /mnt/source/isolinux /mnt/rescue
cp -ar /mnt/source/RedHat/base/product.img \
  /mnt/source/RedHat/base/stage2.img \
  /mnt/rescue/RedHat/base
cp -ar /mnt/source/.discinfo /mnt/rescue

Schritt 2 - Zugriff für rescue-Image

Alternativer Zugriff aufs Rescue-Image ist auch via netstg2.img möglich.

System für anonymous ftp vorbereiten (alternativ http)

cd ~ftp
mkdir -p ~ftp/RedHat/base
cp -ar /mnt/source/RedHat/base/product.img \
  /mnt/source/RedHat/base/netstg2.img \
  ~ftp/RedHat/base

Schritt 3 - Boot-CD erstellen

Erstellen der Boot-CD.

mkisofs -o ../tiri.Boot.iso -v -l -N -r -J -T -b isolinux/isolinux.bin -c isolinux/boot.cat \
 -no-emul-boot -boot-load-size 4 -boot-info-table -V "volume-name" dir/

Schritt 4 - Test

  • Booten mit der neu erstellten CD
  • Eingabe am boot-Prompt: linux rescue
  • Auf die Frage, wo sich das rescue-System befindet:
    • local-CDROM antworten 1)
    • alternativ: ftp/http → Pfad auf den in Schritt 2 erstellten ftp-Pfad 2)

TODO:

  • stage2.img soweit kürzen, dass < 32M für Visiten-Karten-CD.

Schritt 5 - Enjoy

Jetzt kann mit dem Rescue-System gearbeitet werden.

Die gesamte CD wird automatisch nach /mnt/source gemountet. Somit können hier bequem eigene Programme, Treiber etc. eingebunden werden.

Anpassungen für IBM x306

  • System mit aarich-Treiber ausstatten
    • Diese Dateien müssen modifiziert werden
      • isolinux/initrd.img
      • RedHat/base/netstg2.img
Es ist wichtig beim Einbinden von third Party Modules auf die genaue Versionsbezeichnung zu achten, da ansonsten das Modul beim Boot Vorgang nicht geladen werden kann.

Vorbereitung

initrd

KVER=2.4.21-15.ELBOOT
export KVER
gzip -dc isolinux/initrd.img > /tmp/initrd
mount -o loop /tmp/initrd /mnt/initrd
mkdir -p /tmp/rescue.data
cd /tmp/rescue.data
zcat /mnt/initrd/modules/modules.cgz | cpio -i -d
# Es wird der Tree <kernel-version>/i386 erstellt, bei rhel3.u2 ist es
# ${KVER}/i386
# Hier hinein können wir jetzt die zusätzlichen Module einkopieren bzw.
# störende Module entfernen (hier ata_piix)
cp aarich-${KVER}.o /tmp/rescue.data/${KVER}/i386

# Jetzt wieder zusammenbauen
find . -type f | cpio -H crc -o | gzip -9 > ../modules.cgz

# und in die initrd kopieren
cd ..
cp modules.cgz /tmp/rescue/modules/modules.cgz

# Jetzt noch die module-info anpassen (Alle hier aufgeführten Module
# können geladen werden)
# Nach Bedarf auch noch modules.dep, modules.pcimap und pcitable

# initrd speichern
sync
umount /tmp/initrd
gzip -9c initrd > /mnt/rescue/isolinux/initrd.img

netstg2.img bzw. stage2.img

# netstg2.img bzw. stage2.img anpassen
mkdir -p /mnt/netstg2
mount -o loop,ro -t cramfs ./netstg2.img /mnt/netstg2
mkdir -p /tmp/newnetstg2
cd /tmp/newnetstg2
# Kopieren des Inhaltes des gemounteten netstg2.img in das aktuelle Verzeichnis (/tmp/newnetstg2)
( cd ../mnt/netstg2 ; tar cf - * .buildstamp) | tar xvpf -

Jetzt kann man im aktuellen Verzeichnis (Struktur der neuen netstg2.img) die Änderungen vornehmen Also Einfügen der neuen Module

cd modules

Anpassen der Datei pcitable Von der Treiberdiskette wird das für die Karte benötigte Eintrag an die pcitable Datei angehängt z.B. bei Broadcom muessen diese beiden Absaetze in die Datei mittels vi eingefügt werden

0x105a 0x4d38 "ft" "Promise|FastTrak 66 "
0x105a 0x0d30 "ft" "Promise|FastTrak 100"
0x105a 0x4d30 "ft" "Promise|FastTrak 100"
0x105a 0x6268 "ft" "Promise|FastTrak 100 TX2"

0x14e4 0x1644 "bcm5700" "Broadcom NetXtreme BCM5700 Gigabit Ethernet"
0x14e4 0x1645 "bcm5700" "Broadcom NetXtreme BCM5701 Gigabit Ethernet"
0x14e4 0x1646 "bcm5700" "Broadcom NetXtreme BCM5702 Gigabit Ethernet"
0x14e4 0x16a6 "bcm5700" "Broadcom NetXtreme BCM5702 Gigabit Ethernet"
0x14e4 0x1647 "bcm5700" "Broadcom NetXtreme BCM5703 Gigabit Ethernet"
0x14e4 0x16a7 "bcm5700" "Broadcom NetXtreme BCM5703 Gigabit Ethernet"
0x14e4 0x1648 "bcm5700" "Broadcom NetXtreme BCM5704 1000Base-T Ethernet"
0x14e4 0x16a8 "bcm5700" "Broadcom NetXtreme BCM5704S 1000Base-SX Ethernet"
0x14e4 0x1653 "bcm5700" "Broadcom NetXtreme BCM5705 1000Base-T Ethernet"
0x14e4 0x165d "bcm5700" "Broadcom NetXtreme BCM5705M 1000Base-T Ethernet"

Datei modules-info (bzw. auf der Treiberdiskette modinfo)

Hier muss ebenfalls der Inhalt der entsprechenden Datei (modinfo) an eine passende Stelle eingefügt werden

bcm5700
eth
  "Broadcom NetXtreme BCM 570x Gigabit Ethernet adapter"

Jetzt muss noch das eigentliche Treibermodul in der Datei modules.cgz eingefügt werden.

cp ../modules.cgz /tmp/newnetstg2/modules/

Schließlich muss die neue netstg2.img erstellt werden

sync
mkcramfs . ../netstg2.img

Finale

1) wenn stage2.img auf der CD
2) wenn netstg2.img via ftp/http erreichbar
 
wissen/linux/bootcd.txt · Zuletzt geändert: 05.09.2010 20:31
 
Recent changes RSS feed Donate Valid XHTML 1.0 Valid CSS Recent cached RSS feed cacert-signed web site: inhalt.serviert.de