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/
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
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
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/
TODO:
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.
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.
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 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