Wie erstelle ich eine angepasste Ubuntu Server ISO?

42

Ich möchte einen angepassten Ubuntu Server 12.04 ISO erstellen, habe aber keine klare Vorgehensweise gefunden. Ich sehe, dass Ubuntu-Builder eine sehr gute App zum Erstellen eines angepassten Ubuntu-Desktops ist, aber was ist mit Ubuntu Server?

Shadin
quelle

Antworten:

61

Herunterladen

Laden Sie die Ubuntu-Server-ISO von diesem Speicherort herunter . Sie können zwischen 32-Bit und 64-Bit wählen. Der Dateiname für die Server Edition sieht ungefähr so ​​aus:

ubuntu-13.10-server-i386.iso 
ubuntu-13.10-server-amd64.iso 

In den folgenden Anweisungen gehe ich von der 64-Bit-Version 13.10 aus. Passen Sie daher die Befehle an den von Ihnen vorgenommenen Download an. Bewahren Sie eine Kopie Ihres Downloads auf, damit Sie aus dem ursprünglichen Download mehrere neue Versionen erstellen können, falls Sie Ihr Projekt verbessern müssen. Ich ~/Downloads/gehe auch davon aus, dass wir all unsere Arbeit damit erledigen.

Ersteinrichtung

Dadurch werden 2 Verzeichnisse "iso" und "isoNew" in Ihrem Downloads-Verzeichnis erstellt, die ISO angehängt und der Inhalt von "iso" nach "isoNew" kopiert, um ein neues Projekt zu starten.

Fügen Sie dies in eine Textdatei ein, speichern Sie sie, machen Sie sie ausführbar und führen Sie sie aus:

# Ubuntu custom server 
# rinzwind askubuntu.com
# topic: http://askubuntu.com/questions/409607/how-to-create-a-customized-ubuntu-server-iso/409651#409651
cd ~/Downloads/    
mkdir -p iso newIso
sudo mount -o loop ./ubuntu-13.10-server-amd64.iso ./iso    
sudo cp -r ./iso/* ./newIso/
sudo cp -r ./iso/.disk/ ./newIso/    
sudo umount ./iso/
cd ~/Downloads/newIso/
  • Es wird 1 Fehlermeldung ausgegeben: mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

Beispielbilder, wie dies aussehen wird:

Ausführen:

Ausführen

Ergebnis:

Ergebnis

Hinzufügen einer Startmenüoption

Die Menüoptionen für das Installationsprogramm werden in gespeichert, isolinux/txt.cfgund Sie können zwischen default installund neue Optionen erstellen label install.

Dadurch wird eine neue Option namens "Install Custom Ubuntu Server" erstellt und eine Kickstart-Datei hinzugefügt (die Kickstart-Datei wird zum Ändern von Optionen verwendet; siehe unten):

label myownoption
  menu label ^Install Custom Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-custom.seed initrd=/install/initrd.gz quiet ks=cdrom:/preseed/ks-custom.cfg --
  • myownoption ist nur ein Etikett, mit dem Sie Ihre Option identifizieren können.
  • "Install Custom Ubuntu Server" ist der Text, der im Boot-Menü angezeigt wird.
  • Wenn Sie mögen Ihre Menüoption den Standard machen, müssen Sie nur die Änderungen default installzu default myownoption.

Beispiel:

Bildbeschreibung hier eingeben

und Bearbeiten der Datei (ich habe nano verwendet, aber wenn verfügbar, benutze gedit, vim oder einen anderen Editor). Hier ist meine Ergänzung zu dieser Datei, in der ich "lampserver" als Label verwendet habe und mein Seed wird auch "lampserver" heißen.

Bildbeschreibung hier eingeben

Kickstart (grafisches Einrichten einer Konfigurationsdatei)

Die Red Hat Kickstart-Installationsmethode wird hauptsächlich (aber nicht ausschließlich) vom Red Hat Enterprise Linux-Betriebssystem verwendet, um die unbeaufsichtigte Installation und Konfiguration des Betriebssystems automatisch durchzuführen.

Dokumentation zum Preseeding / Kickstart für Ubuntu . Ubuntu bietet nur eingeschränkte Unterstützung für Kickstart (und Voreinstellung). Eines der fehlenden Dinge ist eine grafische Oberfläche für die Voreinstellung. Kickstart hat dafür zwar Optionen (siehe Bilder), aber diese scheinen unter Ubuntu nicht zu funktionieren. Sie können dies jedoch manuell tun (siehe Voreinstellung unten).

Installation und Start von Kickstart:

sudo apt-get install system-config-kickstart
ksconfig

** WARNUNG **

Kickstart ist in Ubuntu 13.10 fehlerhaft und beim Starten tritt ein Fehler auf. Hier ist eine Lösung . Fügen Sie den Patch im Kommentar in eine Textdatei ein, speichern Sie ihn (ich habe ihn "Patch" genannt) und schreiben Sie ihn fest:

Bildbeschreibung hier eingeben

Danach hat es ksconfigfunktioniert und es wird ein Konfigurationseditor gestartet, mit dem Sie viele Optionen bearbeiten können.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Eine Beschreibung aller Optionen, die Sie festlegen können, finden Sie im Red Hat Linux 7.2: Das Offizielle Red Hat Linux-Anpassungshandbuch .

Wenn Sie fertig sind, speichern Sie die Änderungen in einer ks.cfgDatei und kopieren Sie sie in die ISO, die wir ändern:

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Wenn Sie hier etwas ändern, wird das Installationsprogramm diese Informationen überspringen, wenn dies als gültig erachtet wird. Wenn Sie eine Option nicht geändert haben, werden Sie vom Installationsprogramm weiterhin zur Beantwortung aufgefordert.
  • Sie können auch Kickstart- Dateien herunterladen und diese in wie ks-custom.cfgin speichern ~/Downloads/newIso/preseed/.

Beispiel, in dem ich meine Anmeldeinformationen eingegeben habe. Ich habe es mit sudo ksconfigvon der Kommandozeile gestartet .

Bildbeschreibung hier eingeben

Und im Projekt speichern:

Bildbeschreibung hier eingeben

Voreinstellung (manuelles Einrichten einer Konfigurationsdatei)

Mit der Voreinstellung können Sie Antworten auf Fragen festlegen, die während des Installationsvorgangs gestellt werden, ohne die Antworten manuell eingeben zu müssen, während die Installation ausgeführt wird. Dies ermöglicht die vollständige Automatisierung der meisten Installationsarten und bietet sogar einige Funktionen, die bei normalen Installationen nicht verfügbar sind.

Kopieren Sie die Voreinstellung für die normale Installation auf Ihr eigenes Etikett:

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • Ändern Sie das myownoptionzu dem , was Sie verwendet haben.

Nun zum Ändern der Einstellungen. Mithilfe debconf-get-selectionsvon debconf-utilskönnen Sie untersuchen, welche Parameter Sie mit einer bestimmten Software verwenden können.

Beispiel für die Einrichtung:

Bildbeschreibung hier eingeben

Und füge Lampenserver hinzu, der mit tasksel installiert werden soll:

Bildbeschreibung hier eingeben

  • Wenn Sie die Pakete "openssh" und "build-essential" hinzufügen möchten, können Sie dies in die Seed-Datei aufnehmen:

    d-i pkgsel/include string openssh-server build-essential
    
  • Ein Beispiel für openssh:

    debconf-get-selections | grep openssh
    openssh-server  ssh/vulnerable_host_keys    note
    openssh-server  ssh/use_old_init_script boolean true
    openssh-server  ssh/encrypted_host_key_but_no_keygen    note
    openssh-server  ssh/disable_cr_auth boolean false
    
  • Sie können diese Optionen zu hinzufügen custom-iso/preseed/ubuntu-myownoption.seed.

  • Erklärung / Beispiele mit Debconf-Einstellungen .
  • Eine Beispiel-Voreinstellungsdatei
  • Beispiele für: Lokalisierung, Netzwerkkonfiguration, Netzwerkkonsole, Uhrzeit und Partitionierung
  • Am Ende der Voreinstellungsdatei können Sie Pakete (zufällige Beispiele) wie folgt hinzufügen:

    % packages openssh-server mysql-server apache2

Offline-Installation

Falls Sie Pakete hinzufügen und diese NICHT in der ISO enthalten sind, lädt das Installationsprogramm diese aus dem Repository herunter. Wenn Sie keine aktive Internetverbindung haben, ist dies problematisch. Fügen Sie Ihrem Projekt alle diese Pakete (und Abhängigkeiten) hinzu und brennen Sie sie auf eine DVD. Glücklicherweise hat der normale ISO-Server viel Platz, aber Vorsicht: CDs und / oder DVDs haben eine begrenzte Größe.

Laden Sie alle benötigten DEB-Pakete herunter und speichern Sie sie in ~/Downloads/. Diese 2 Verzeichnisse werden auf der neuen ISO benötigt:

mkdir -p ~/Downloads/newIso/dists/stable/extras/binary-i386
mkdir -p ~/Downloads/newIso/pool/extras/
sudo cp ~/Downloads/*.deb newIso/pool/extras/

Und dies wird unser Projekt mit den neuen Paketen aktualisieren:

cd ~/Downloads/newIso
sudo apt-ftparchive packages ./pool/extras/ > dists/stable/extras/binary-i386/Packages
sudo gzip -c ./dists/stable/extras/binary-i386/Packages | tee ./dists/stable/extras/binary-i386/Packages.gz > /dev/null
cd ~/Downloads/

Erstellen Sie die ISO

cd ~/Downloads/     
sudo md5sum `find ! -name “md5sum.txt” ! -path “./isolinux/*” -follow -type f` > md5sum.txt
sudo mkisofs -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/isolinux.cat -o ./ubuntu-13.10-myowninstall-amd64.iso -joliet-long newIso/
  • Die 2. Zeile erzeugt eine neue Prüfsumme und wird nur beim Hinzufügen von Paketen benötigt.
  • der 3. macht aus deinem projekt eine iso, die du auf eine dvd brennen kannst.

Ergebnis:

Bildbeschreibung hier eingeben

Und jetzt können Sie es ausprobieren, indem Sie es tatsächlich brennen und installieren. Ich würde empfehlen, als virtuelle Maschine zu verwenden, da dies schneller zum Testen der ursprünglich erstellten ISO ist (andernfalls wird der Neustart fortgesetzt).

Und nach der Installation von VirtualBox bekomme ich folgendes Menü:

Bildbeschreibung hier eingeben

Wanzenjagd

Bei der Installation sind 1 Probleme aufgetreten: Die Standardeinstellung wurde nicht ausgewählt.

Shadin. Aus deiner Seed-Datei im Kommentar

### Package Selection
tasksel tasksel/first multiselect Custom-Ubuntu-Server
d-i pkgsel/include string openssh-server build-essential
%packages openssh-server postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

muss wohl so sein:

### Package Selection
tasksel tasksel/first multiselect lamp-server
d-i pkgsel/include string openssh-server build-essential postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

Schluss mit der Tasksel-Zeile, von der du keinen LAMP-Server willst (zB Apache, MySQL, Php)

Rinzwind
quelle
Kann dies für Desktops verwendet werden?
Braiam
ICH DANKE DIR SEHR!! Ich kann Ihnen wirklich nicht genug dafür danken, dass Sie diesen Prozess so einfach und reibungslos gemacht haben! Ich hatte nur ein Problem, nachdem ich VirtualBox installiert und meinen angepassten Server installiert hatte, bekam ich diese Fehlermeldung! Gültiges XHTML .
Shadin
Ja, habe ich. Eigentlich bevorzuge ich es, wenn Sie sich meine Seed-Datei ansehen [ megafileupload.com/en/file/493602/… Ich bin mir nicht sicher, wie ich die Pakete am Ende der Datei
hinzugefügt habe
Oh! Vielen Dank! Ich werde das versuchen und mich bei Ihnen melden. Außerdem möchte ich wissen, ob es eine Möglichkeit gibt, zusätzliche Server während dieses Vorgangs aus dem Image zu entfernen, z. B. Mailserver, Webserver, JBOSS usw. Ich möchte, dass nur postgresql und seine Pakete eingeschlossen werden.
Shadin
2
@shadin das ist ok schau wie Lucio das macht ;-) Kommentare aufgeräumt. Braiam: Ja, das kann es. Obwohl es auf dem Desktop noch viel mehr Dinge zu ändern gibt, ist dies ein Anfang (Kickstart funktioniert auch, wenn Sie es patchen, aber es wird immer noch von Ubuntu unterstützt).
Rinzwind