So erstellen Sie ein benutzerdefiniertes ISO-Image in CentOS

20

Ich versuche, ein benutzerdefiniertes ISO-Image zu erstellen, das die minimal erforderlichen RPMS zusammen mit einigen benutzerdefinierten geschriebenen RPM meiner App installiert. und möchte auch einige Schritte nach der Installation ausführen, z. B. das Konfigurieren meiner App und der VPN-Konfiguration usw.

Ich habe einige der Links auf Google gesehen, aber sie verweisen darauf, dass Repo und ISO von einer bereitgestellten Festplatte oder einem bereitgestellten ISO-Image erstellt werden.

Vielen Dank, Ramesh

Ramesh Kumar
quelle
Sie können auch RedHat Kickstart für diesen Job es einfacher und flexiblere Wahl Mehr Informationen hier verwenden access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/...
fyarci

Antworten:

45
  1. Erstellen Sie ein Verzeichnis, um Ihre Quelle einzuhängen.

    mkdir /tmp/bootiso
    
  2. Hängen Sie die zu ändernde Quell-ISO in einer Schleife ein. (Download von Red Hat / CentOS.)

    mount -o loop /path/to/some.iso /tmp/bootiso
    
  3. Erstellen Sie ein Arbeitsverzeichnis für Ihre benutzerdefinierten Medien.

    mkdir /tmp/bootisoks
    
  4. Kopieren Sie das Quellmedium in das Arbeitsverzeichnis.

    cp -r /tmp/bootiso/* /tmp/bootisoks/
    
  5. Hängen Sie die Quell-ISO aus und entfernen Sie das Verzeichnis.

    umount /tmp/bootiso && rmdir /tmp/bootiso
    
  6. Ändern Sie die Berechtigungen für das Arbeitsverzeichnis.

    chmod -R u+w /tmp/bootisoks
    
  7. Kopieren Sie Ihr Kickstart-Skript, das für die Pakete geändert wurde, %postin das Arbeitsverzeichnis.

    cp /path/to/someks.cfg /tmp/bootisoks/isolinux/ks.cfg
    
  8. Kopieren Sie alle zusätzlichen RPMs in die Verzeichnisstruktur und aktualisieren Sie die Metadaten.

    cp /path/to/*.rpm /tmp/bootisoks/Packages/.
    cd /tmp/bootisoks/Packages && createrepo -dpo .. .
    
  9. Fügen Sie Kickstart hinzu, um die Startoptionen zu aktivieren.

    sed -i 's/append\ initrd\=initrd.img/append initrd=initrd.img\ ks\=cdrom:\/ks.cfg/' /tmp/bootisoks/isolinux/isolinux.cfg
    
  10. Erstellen Sie die neue ISO-Datei.

    cd /tmp/bootisoks && \ 
    mkisofs -o /tmp/boot.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "CentOS 7 x86_64" -R -J -v -T isolinux/. .
    
  11. (Optional) Verwenden isohybridSie diese Option, wenn Sie dddie ISO-Datei auf einen bootfähigen USB-Stick speichern möchten .

    isohybrid /tmp/boot.iso
    
  12. Fügen Sie eine MD5-Prüfsumme hinzu (um das Testen von Medien zu ermöglichen).

    implantisomd5 /tmp/boot.iso
    

Wenn Sie beim Erstellen des Kickstart- Skripts weitere Hilfe benötigen, sollten Sie mit der offiziellen Red Hat-Dokumentation beginnen.

Aaron Copley
quelle
1
Ist es möglich, dass Sie Schritt 4 verpasst oder verpatzt haben?
Aaron Copley
3
@ AaronCopley ja, du hast wahrscheinlich recht. Ich habe auch folgendes gefunden: github.com/joyent/mi-centos-7, was mir geholfen hat.
Sivann
1
Bei Schritt 9 müssen Sie meines Erachtens den letzten Parameter angeben. (Punkt) zeigt das aktuelle Verzeichnis an. Seltsames Standardverhalten, aber ohne dies erstellt mkisofs eine ISO-Datei, die nur die Dateien aus dem obersten Verzeichnis und keine Unterverzeichnisse und darüber hinaus enthält.
hshib
2
Ich hatte auch ein Problem mit Schritt 4. Bei Verwendung des Befehls "cp" werden die versteckten Dateien .discinfo und .treeinfo nicht kopiert. Andernfalls schlägt die erstellte ISO-Datei während der Installation fehl und meldet, dass "CD / ROM nicht gefunden" wurde.
hshib
1
Sie können alles mit einem einzigen Befehl kopieren: "cp -r / tmp / bootiso /. / Tmp / bootisoks /" (dies ist eine etwas knifflige Single. Nach / tmp / bootiso /)
hshib