N
nosajnbg
Grünschnabel
Hallo zusammen,
ich möchte gerne eine automatisierte Linux Installation in Vmware ESX Server ohne die Treiberdiskette einzulegen vornehmen. Also den benötigten Treiber in die DVD integrieren. Der Lösung bin ich in soweit auf der Spur, dass eine INITRD.IMG mit dem benötigten BusLogic.ko Modul erstellt wurde. Diese funktioniert auch so weit, nur wird das Kernelmodul nicht während der Installation auf die Festplatte übertragen. Ich habe mir mit einem kleinen Trick zwar bereits geholfen, jedoch ist das nicht der beste Weg. Es wird im Vorfeld der automatisierten Installationen eine Vmware Maschine mit Treiberdiskette durchgeführt aus diesem System werden folgende dateien kopiert: /boot/config-2.6.9-22.EL /boot/System.map-2.6.9-22.EL /boot/initrd-2.6.9-22.EL.img /boot/vmlinuz-2.6.9-22.EL
Erst mal die Technischen Daten der Testumgebung:
Vmware ESX Server
RAM: 1 GB
SCSI-HDD: 20 GB
Modus: BusLogic
Ethernet: Briged
Eingesetzte Software:
Lineox 4.0.53 DVD mit Kernel 2.6.9-22.EL
VMware ESX Server Driver Disk für Red Hat Enterprise Linux 4.0 Update 2 (Lineox 4) vom 08.02.2006
Mkisofs Version 1.5.1.2
und Kickstartdatei zum Automatischen Installieren (was auch funktioniert)
Nun die bisherige Vorgehensweise:
0. Lineox mit Treiberdiskette installieren
Benötigt wird eine ISO-Datei oder DVD-ROM von Lineox 4 mit Kernel 2.6.9-22.EL sowie die BusLogic Treiberdiskette oder Disketten-Image von Vmware (http://download3.vmware.com/software/esx/dd.img.gz), diese legt man in den Vmware ESX Server ein und startet diese virtuelle Maschine. Während des Bootscreens [ESC] drücken und „CD-ROM“ auswählen. Anschließend
linux dd ks=http://<IP-WEBSERVER>/lineox/ks/ks.cfg
eingeben. Die Frage nach der Treiberdiskette mit „ja“ beantworten und „fd0“ für das Diskettenlaufwerk auswählen. Danach läuft die Installation automatisch in kurzer Zeit durch.
Mit dem jetzt installierten System können auch die nachinstallierten Kapitel bearbeitet werden.
jetzt kann die Grundstruktur der späteren DVD angelegt werden:
mkdir -p /root/lineoxdvd/image
Kopieren der benötigten Daten nach /root/lineoxdvd/image:
cp -f /boot/config-2.6.9-22.EL /root/lineoxdvd/image
cp -f /boot/System.map-2.6.9-22.EL /root/lineoxdvd/image
cp -f /boot/initrd-2.6.9-22.EL.img /root/lineoxdvd/image
cp -f /boot/vmlinuz-2.6.9-22.EL /root/lineoxdvd/image
Wichtig!
Die Anpassung der Kickstartdatei nicht vergessen. (Letztes Kapitel)
1. Vorhandene initrd.img bearbeiten:
Lineox DVD Version 4.0.53 in das DVD-Laufwerk (Kernel 2.6.9-22.EL) legen.
mount /media/cdrom
Den Inhalt der Lineox DVD nach /root/lineoxdvd kopieren:
mkdir /root/lineoxdvd
cp -Rf /media/cdrom /root/lineoxdvd
cp /root/lineoxdvd/isolinux/initrd.img /root/initrd.ext2.gz
Das Initrd Image ist standardmäßig mit gzip2 gepackt:
gunzip /root/initrd.ext2.gz
Verzeichnis erstellen um die das Initrd Image einzuhängen:
mkdir /media/initrd
Initrd Image einhängen:
mount -o loop /root/initrd.ext2 /media/initrd
2. BusLogic Treiberdiskette besorgen
Die BusLogic Treiberdiskette unter VMWare
http://download3.vmware.com/software/esx/dd.img.gz
herunterladen.
Treiberdiskette entpacken: gunzip dd.img.gz
Treiberdiskette mounten und Inhalt nach /root/lineoxdvd/buslogic kopieren.
mount -o loop /root/dd.img /media/floppy
cp -R /media/floppy/* /root/lineoxdvd/buslogic
3. BusLogic Modul hinzufügen
Die letzten drei Zeilen der Datei /root/lineoxdvd/budlogic/modinfo in die Datei /media/initrd/modules/module-info eintragen:
cat /root/lineoxdvd/buslogic/modinfo
Ausgabe: Version0
BusLogic
scsi
„BusLogic SCSI driver“
vi /media/initrd/modules/module-info
Die Zeilen eintragen und den vi-Editor mit [ESC] und :wq! verlassen.
Den Inhalt der Datei /root/lineoxdvd/buslogic/modules.dep in die Datei /media/intird/modules/modules.dep eintragen:
cat /root/lineoxdvd/buslogic/modules.dep
Ausgabe: BusLogic: scsi_mod
vi /media/initrd/modules/modules.dep
Den gewünschten Inhalt eintragen und den vi-Editor mit [ESC] und :wq! verlassen.
Den Inhalt der Datei /root/lineoxdvd/buslogic/pictable in die Datei /media/initrd/modules/pictable eintragen:
cat /root/lineoxdvd/buslogic/pcitable
Ausgabe: 0x104b 0x0140 „BusLogic“ „BusLogic|BT-946C (old) [multimaster 01]“
0x104b 0x0140 „BusLogic“ „BusLogic|BT-946C (BA80C30) [MultiMaster 10]“
0x104b 0x8130 „BusLogic“ „BusLogic|Flashpoint LT“
vi /media/initrd/modules/pcitable
Den gewünschten Inhalt eintragen und den vi-Editor mit [ESC] und :wq! Verlassen.
3.1. BusLogic Modulliste entpacken
Die Module sind in einem Gzip2 komprimierten Cpio-Archiv unter /media/initrd/modules/modules.cgz
gunzip -c /media/initrd/modules/modules.cgz > /root/modules.cpio
cd /root
cpio -idv < /root/modules.cpio
Nun entsteht ein Verzeichnis mit Versionnummer des Kernels unter /root. In jedem dieser Verzeichnisse befindet sich ein BusLogic Modul für den jeweiligen Kernel.
/root/2.6.9-22.EL/i686
/root/2.6.9-22.ELhughmem/i686
/root/2.6.9-22.ELsmp/i686
Das benötigte BusLogic Modul für die VMware Maschine befindet sich unter /root/2.6.9-22.EL/i686.
cp /root/2.6.9-22.EL/i686/BusLogic.ko /root
Die Verzeichnisse wieder löschen:
rm -Rf /root/2.6.9-22.EL*
Nun mit dem nächsten Schritt fortfahren.
3.2. Modulliste Initrd.img entpacken
Die Module sind in einem Gzip2 komprimierten Cpio-Archiv unter /media/initrd/modules/modules.cgz
gunzip -c /media/initrd/modules/modules.cgz > /root/modules.cpio
cd /root
cpio -idv < /root/modules.cpio
Nun entsteht ein Verzeichnis mit Versionnummer des Kernels unter /root. In dieses Verzeichnis können eigene Module integriert oder nicht benötigte Module gelöscht werden.
/root/2.6.9-22.EL/i686
3.3. BusLogic Modul in Modulliste kopieren
Da jetzt die Modulliste in das Verzeichni /root/2.6.9-22.EL entpackt wurde, kann jetzt das BusLogic Modul mit einem einfachen Kopier befehl dorthin befördert werden.
cp /root/BusLogic.ko /root/2.6.9-22.EL/i686
Berechtigung des BusLogic Kernelmoduls anpassen:
chmod u+x /root/2.6.9-22.EL/i686/BusLogic.ko
Alle zu integrierende Module können nach dem oben beschriebenen Schema integriert werden.
3.4. Modulliste packen
Nachdem die benötigten Kernelmodule in die Kernelliste integriert wurden, müssen folgende Befehle ausgeführt werden.
cd /root
Modulliste zusammen fassen:
find /root/2.6.9-22.EL -print -depth | cpio -ov -H crc > /root/modules.cpio
Modulliste packen:
gzip -c9 /root/modules.cpio > /root/modules.cgz
Modulliste in initrd.img kopieren:
cp -f /root/modules.cgz /media/initrd/modules/
4. Initrd.img packen
Das initrd.img unmounten:
umount /media/initrd
Das initrd.img in ursprünglichen Namen umbenennen:
mv /root/initrd.ext2 /root/initrd
Das initrd.img packen:
gzip -c9 /root/initrd > /root/initrd.img
Abschließend wird das initrd.img in das isolinux Verzeichnis zurück kopiert:
cp -f /root/initrd.img /root/lineoxdvd/isolinux/
5. ISO-Image erstellen
Es wird mindestens Version 1.5.1.2 von mkisofs benötigt, da vorhergehende Versionen nicht alle Features unterstützen.
cd /root/lineoxdvd
mkisofs -o /root/neu-boot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-info-table -R -J -v -T ./
6. Anpassungen der Kickstartdatei
In die Kickstartdatei folgende Zeilen aufnehmen:
deviceprobe
device scsi BusLogic
und unter %post:
# Buslogic Treiber Modul kopieren
#/bin/cp /media/cdrom/BusLogic.ko /lib/modules/2.6.9-22.EL/updates
mkdir -p /lib/modules/2.6.9-22.EL/updates
cp /mnt/source/BusLogic.ko /lib/modules/2.6.9-22.EL/updates
cp /mnt/source/BusLogic.ko /lib/modules/2.6.9-22.EL/kernel/drivers/scsi
echo "/lib/modules/2.6.9-22.EL/updates/BusLogic.ko: /lib/modules/2.6.9-22.EL/kernel/drivers/scsi/scsi_mod.ko" >> /lib/modules/2.6.9-22.EL/modules.dep
rm -f /boot/config-2.6.9-22.EL
rm -f /boot/System.map-2.6.9-22.EL
rm -f /boot/initrd-2.6.9-22.EL.img
rm -f /boot/vmlinuz-2.6.9-22.EL
cp -f /mnt/source/image/config-2.6.9-22.EL /boot/
cp -f /mnt/source/image/System.map-2.6.9-22.EL /boot/
cp -f /mnt/source/image/initrd-2.6.9-22.EL.img /boot/
cp -f /mnt/source/image/vmlinuz-2.6.9-22.EL /boot/
rm -f /etc/modprobe.conf
/usr/bin/echo "alias scsi_hostadapter BusLogic" > /etc/modprobe.conf
/usr/bin/echo "alias eth0 pcnet32" >> /etc/modprobe.conf
#/usr/bin/echo "alias eth1 pcnet32" >> /etc/modprobe.conf
#/usr/bin/echo "alias eth2 pcnet32" >> /etc/modprobe.conf
#/usr/bin/echo "alias eth3 pcnet32" >> /etc/modprobe.conf
#/usr/bin/echo "alias eth4 pcnet32" >> /etc/modprobe.conf
ich möchte gerne eine automatisierte Linux Installation in Vmware ESX Server ohne die Treiberdiskette einzulegen vornehmen. Also den benötigten Treiber in die DVD integrieren. Der Lösung bin ich in soweit auf der Spur, dass eine INITRD.IMG mit dem benötigten BusLogic.ko Modul erstellt wurde. Diese funktioniert auch so weit, nur wird das Kernelmodul nicht während der Installation auf die Festplatte übertragen. Ich habe mir mit einem kleinen Trick zwar bereits geholfen, jedoch ist das nicht der beste Weg. Es wird im Vorfeld der automatisierten Installationen eine Vmware Maschine mit Treiberdiskette durchgeführt aus diesem System werden folgende dateien kopiert: /boot/config-2.6.9-22.EL /boot/System.map-2.6.9-22.EL /boot/initrd-2.6.9-22.EL.img /boot/vmlinuz-2.6.9-22.EL
Erst mal die Technischen Daten der Testumgebung:
Vmware ESX Server
RAM: 1 GB
SCSI-HDD: 20 GB
Modus: BusLogic
Ethernet: Briged
Eingesetzte Software:
Lineox 4.0.53 DVD mit Kernel 2.6.9-22.EL
VMware ESX Server Driver Disk für Red Hat Enterprise Linux 4.0 Update 2 (Lineox 4) vom 08.02.2006
Mkisofs Version 1.5.1.2
und Kickstartdatei zum Automatischen Installieren (was auch funktioniert)
Nun die bisherige Vorgehensweise:
0. Lineox mit Treiberdiskette installieren
Benötigt wird eine ISO-Datei oder DVD-ROM von Lineox 4 mit Kernel 2.6.9-22.EL sowie die BusLogic Treiberdiskette oder Disketten-Image von Vmware (http://download3.vmware.com/software/esx/dd.img.gz), diese legt man in den Vmware ESX Server ein und startet diese virtuelle Maschine. Während des Bootscreens [ESC] drücken und „CD-ROM“ auswählen. Anschließend
linux dd ks=http://<IP-WEBSERVER>/lineox/ks/ks.cfg
eingeben. Die Frage nach der Treiberdiskette mit „ja“ beantworten und „fd0“ für das Diskettenlaufwerk auswählen. Danach läuft die Installation automatisch in kurzer Zeit durch.
Mit dem jetzt installierten System können auch die nachinstallierten Kapitel bearbeitet werden.
jetzt kann die Grundstruktur der späteren DVD angelegt werden:
mkdir -p /root/lineoxdvd/image
Kopieren der benötigten Daten nach /root/lineoxdvd/image:
cp -f /boot/config-2.6.9-22.EL /root/lineoxdvd/image
cp -f /boot/System.map-2.6.9-22.EL /root/lineoxdvd/image
cp -f /boot/initrd-2.6.9-22.EL.img /root/lineoxdvd/image
cp -f /boot/vmlinuz-2.6.9-22.EL /root/lineoxdvd/image
Wichtig!
Die Anpassung der Kickstartdatei nicht vergessen. (Letztes Kapitel)
1. Vorhandene initrd.img bearbeiten:
Lineox DVD Version 4.0.53 in das DVD-Laufwerk (Kernel 2.6.9-22.EL) legen.
mount /media/cdrom
Den Inhalt der Lineox DVD nach /root/lineoxdvd kopieren:
mkdir /root/lineoxdvd
cp -Rf /media/cdrom /root/lineoxdvd
cp /root/lineoxdvd/isolinux/initrd.img /root/initrd.ext2.gz
Das Initrd Image ist standardmäßig mit gzip2 gepackt:
gunzip /root/initrd.ext2.gz
Verzeichnis erstellen um die das Initrd Image einzuhängen:
mkdir /media/initrd
Initrd Image einhängen:
mount -o loop /root/initrd.ext2 /media/initrd
2. BusLogic Treiberdiskette besorgen
Die BusLogic Treiberdiskette unter VMWare
http://download3.vmware.com/software/esx/dd.img.gz
herunterladen.
Treiberdiskette entpacken: gunzip dd.img.gz
Treiberdiskette mounten und Inhalt nach /root/lineoxdvd/buslogic kopieren.
mount -o loop /root/dd.img /media/floppy
cp -R /media/floppy/* /root/lineoxdvd/buslogic
3. BusLogic Modul hinzufügen
Die letzten drei Zeilen der Datei /root/lineoxdvd/budlogic/modinfo in die Datei /media/initrd/modules/module-info eintragen:
cat /root/lineoxdvd/buslogic/modinfo
Ausgabe: Version0
BusLogic
scsi
„BusLogic SCSI driver“
vi /media/initrd/modules/module-info
Die Zeilen eintragen und den vi-Editor mit [ESC] und :wq! verlassen.
Den Inhalt der Datei /root/lineoxdvd/buslogic/modules.dep in die Datei /media/intird/modules/modules.dep eintragen:
cat /root/lineoxdvd/buslogic/modules.dep
Ausgabe: BusLogic: scsi_mod
vi /media/initrd/modules/modules.dep
Den gewünschten Inhalt eintragen und den vi-Editor mit [ESC] und :wq! verlassen.
Den Inhalt der Datei /root/lineoxdvd/buslogic/pictable in die Datei /media/initrd/modules/pictable eintragen:
cat /root/lineoxdvd/buslogic/pcitable
Ausgabe: 0x104b 0x0140 „BusLogic“ „BusLogic|BT-946C (old) [multimaster 01]“
0x104b 0x0140 „BusLogic“ „BusLogic|BT-946C (BA80C30) [MultiMaster 10]“
0x104b 0x8130 „BusLogic“ „BusLogic|Flashpoint LT“
vi /media/initrd/modules/pcitable
Den gewünschten Inhalt eintragen und den vi-Editor mit [ESC] und :wq! Verlassen.
3.1. BusLogic Modulliste entpacken
Die Module sind in einem Gzip2 komprimierten Cpio-Archiv unter /media/initrd/modules/modules.cgz
gunzip -c /media/initrd/modules/modules.cgz > /root/modules.cpio
cd /root
cpio -idv < /root/modules.cpio
Nun entsteht ein Verzeichnis mit Versionnummer des Kernels unter /root. In jedem dieser Verzeichnisse befindet sich ein BusLogic Modul für den jeweiligen Kernel.
/root/2.6.9-22.EL/i686
/root/2.6.9-22.ELhughmem/i686
/root/2.6.9-22.ELsmp/i686
Das benötigte BusLogic Modul für die VMware Maschine befindet sich unter /root/2.6.9-22.EL/i686.
cp /root/2.6.9-22.EL/i686/BusLogic.ko /root
Die Verzeichnisse wieder löschen:
rm -Rf /root/2.6.9-22.EL*
Nun mit dem nächsten Schritt fortfahren.
3.2. Modulliste Initrd.img entpacken
Die Module sind in einem Gzip2 komprimierten Cpio-Archiv unter /media/initrd/modules/modules.cgz
gunzip -c /media/initrd/modules/modules.cgz > /root/modules.cpio
cd /root
cpio -idv < /root/modules.cpio
Nun entsteht ein Verzeichnis mit Versionnummer des Kernels unter /root. In dieses Verzeichnis können eigene Module integriert oder nicht benötigte Module gelöscht werden.
/root/2.6.9-22.EL/i686
3.3. BusLogic Modul in Modulliste kopieren
Da jetzt die Modulliste in das Verzeichni /root/2.6.9-22.EL entpackt wurde, kann jetzt das BusLogic Modul mit einem einfachen Kopier befehl dorthin befördert werden.
cp /root/BusLogic.ko /root/2.6.9-22.EL/i686
Berechtigung des BusLogic Kernelmoduls anpassen:
chmod u+x /root/2.6.9-22.EL/i686/BusLogic.ko
Alle zu integrierende Module können nach dem oben beschriebenen Schema integriert werden.
3.4. Modulliste packen
Nachdem die benötigten Kernelmodule in die Kernelliste integriert wurden, müssen folgende Befehle ausgeführt werden.
cd /root
Modulliste zusammen fassen:
find /root/2.6.9-22.EL -print -depth | cpio -ov -H crc > /root/modules.cpio
Modulliste packen:
gzip -c9 /root/modules.cpio > /root/modules.cgz
Modulliste in initrd.img kopieren:
cp -f /root/modules.cgz /media/initrd/modules/
4. Initrd.img packen
Das initrd.img unmounten:
umount /media/initrd
Das initrd.img in ursprünglichen Namen umbenennen:
mv /root/initrd.ext2 /root/initrd
Das initrd.img packen:
gzip -c9 /root/initrd > /root/initrd.img
Abschließend wird das initrd.img in das isolinux Verzeichnis zurück kopiert:
cp -f /root/initrd.img /root/lineoxdvd/isolinux/
5. ISO-Image erstellen
Es wird mindestens Version 1.5.1.2 von mkisofs benötigt, da vorhergehende Versionen nicht alle Features unterstützen.
cd /root/lineoxdvd
mkisofs -o /root/neu-boot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-info-table -R -J -v -T ./
6. Anpassungen der Kickstartdatei
In die Kickstartdatei folgende Zeilen aufnehmen:
deviceprobe
device scsi BusLogic
und unter %post:
# Buslogic Treiber Modul kopieren
#/bin/cp /media/cdrom/BusLogic.ko /lib/modules/2.6.9-22.EL/updates
mkdir -p /lib/modules/2.6.9-22.EL/updates
cp /mnt/source/BusLogic.ko /lib/modules/2.6.9-22.EL/updates
cp /mnt/source/BusLogic.ko /lib/modules/2.6.9-22.EL/kernel/drivers/scsi
echo "/lib/modules/2.6.9-22.EL/updates/BusLogic.ko: /lib/modules/2.6.9-22.EL/kernel/drivers/scsi/scsi_mod.ko" >> /lib/modules/2.6.9-22.EL/modules.dep
rm -f /boot/config-2.6.9-22.EL
rm -f /boot/System.map-2.6.9-22.EL
rm -f /boot/initrd-2.6.9-22.EL.img
rm -f /boot/vmlinuz-2.6.9-22.EL
cp -f /mnt/source/image/config-2.6.9-22.EL /boot/
cp -f /mnt/source/image/System.map-2.6.9-22.EL /boot/
cp -f /mnt/source/image/initrd-2.6.9-22.EL.img /boot/
cp -f /mnt/source/image/vmlinuz-2.6.9-22.EL /boot/
rm -f /etc/modprobe.conf
/usr/bin/echo "alias scsi_hostadapter BusLogic" > /etc/modprobe.conf
/usr/bin/echo "alias eth0 pcnet32" >> /etc/modprobe.conf
#/usr/bin/echo "alias eth1 pcnet32" >> /etc/modprobe.conf
#/usr/bin/echo "alias eth2 pcnet32" >> /etc/modprobe.conf
#/usr/bin/echo "alias eth3 pcnet32" >> /etc/modprobe.conf
#/usr/bin/echo "alias eth4 pcnet32" >> /etc/modprobe.conf