Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
de:services:server_services:preseeding:start [2021/06/14 17:51] – [Download] Ubuntu 20.04 bwegman1de:services:server_services:preseeding:start [2022/08/15 14:20] (aktuell) bwegman1
Zeile 1: Zeile 1:
 +====== Preseeding ======
 +
 +
 +
 +===== Was ist preseeding? =====
 +
 +Preseeding ist ein Verfahren für den Debian-Installer (([[http://wiki.debian.org/DebianInstaller/Preseed|Debian Wiki zu Preseed im Debian Installer]]))(([[http://www.debian.org/releases/stable/i386/apb.html|Debian Handbuch zur "Automatisieren der Installation mittels Voreinstellung"]])), Vorgaben für die Installation zu einem frühen Zeitpunkt auszulesen, indem die Antworten für die Fragen des Installers vorgegeben werden.
 +
 +Die Antworten - und damit die Konfiguration des Installers - werden in einer ''preseed.cfg'' hinterlegt. Diese kann von dem Installer während der Installation über das Netzwerk, über ein zusätzlichen Datenträger, über das Installationsmedium oder aus dem Kernel-Image des Installers gelesen werden. Je nach dem wo die Konfiguration liegt und damit ab wann sie im Installationsprozess zur Verfügung steht, können praktisch alle Antworten zu den Fragen des Installers vorgegeben werden.
 +
 +===== Preseeding-Images =====
 +
 +Die hier angebotenen ISO-Images können genutzt werden, um Ubuntu-Server in der jeweiligen Version und Umgebung zu installieren.
 +
 +=== Bitte beachten! ===
 +
 +
 +
 +Diese ISO-Images sind **modifizierte Netinstaller-Images von Ubuntu und Debian**, in denen eine Preseeding-Konfiguration direkt in der initrd des Installers platziert wurde. Dies bedeutet, dass ein Server in dieser Version und mit dieser Konfiguration automatisch installiert wird. 
 +
 +<WRAP center round important 70%>
 +Diese ISOs sollten __**NIEMALS**__ von einem System mit einem vorhandenen Betriebssystem gebootet werden, da __**ungefragt und automatisch**__ mit der Installation und damit __**dem Überschreiben der ersten Festplatte ''/dev/sda'' begonnen wird**__.
 +</WRAP>
 +
 +
 +==== Anpassungen der Images ====
 +
 +Folgendes wurde in den Images angepasst:
 +
 +  * Hostname und Domain sind auf ubuntu.local bzw debian.local festgelegt, was durch ein erfolgreichen reverse DNS lookup bzw. DHCP während der Installation aber überschrieben wird
 +  * primärer Benutzer ist ''boss'', Passwort ''preseedpasswd''
 +  * die erste Festplatte wird als LVM (([[http://www.howtoforge.com/linux_lvm|"A Beginner's Guide To LVM" howtoforge.com]]))(([[http://www.linuxhaven.de/dlhp/HOWTO/DE-LVM-HOWTO.html|"Linux LVM HOWTO" linuxhaven.de]])) formatiert mit einer LV für Swap (nicht bei VMWare-VM-Images) und einer für das Root-Dateisystem
 +  * ''ntp'' und ''openssh-server'' werden automatisch installiert
 +  * verschiedene Voreinstellung für deutsche Sprache (locale, apt mirror, keyboard layout)
 +  * automatische Installation von Sicherheitsupdates durch das Paket ''unattended-upgrades''
 +
 +Für die VMWare-VMs wurde zusätzlich angepasst:
 +
 +  * ''open-vm-tools'' mit DKMS wird installiert
 +  * RAM-Komprimierung mit ''zram''((http://wiki.ubuntuusers.de/zRam))
 +  * kein Swap auf physischen Blockdevices
 +  * IO-Scheduler per Kernel-Parameter auf ''noop'' gestellt (([[https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2011861|Tuning options for disk I/O performance in Linux virtual machines (2011861)]]))
 +
 +==== Voraussetzungen ====
 +
 +Diese Images können auf Systemen oder VMs eingesetzt werden, die folgende Voraussetzungen erfüllen:
 +
 +  * ''/dev/sda'' mind. 6GB groß, unpartitioniert
 +  * de.archive.ubuntu.com muss für das System erreichbar sein.
 +  * Bootreihenfolge muss "HDD, CDROM" sein, damit nach einem Neustart nicht die Installation erneut beginnt.
 +  * falls kein DHCP vorhanden ist, wird der Installer nach einer statischen Netzwerkkonfiguration fragen, der Rest läuft weiterhin automatisch ab.
 +
 +==== Download ====
 +
 +Die Images und verwendeten preseed.cfg können hier herunter geladen werden:
 +
 +  * Images für die Verwendung in __Virtual Machines__ (VMWare und andere):
 +    * [[https://owncloud.gwdg.de/index.php/s/7sG9SbLlQESrcmV/download?path=%2F&files=ubuntu-20.04-amd64_vmware-vm-preseed_install.iso|Ubuntu 20.04, amd64]]
 +  * Übersicht aller Downloads:
 +    * [[https://owncloud.gwdg.de/index.php/s/7sG9SbLlQESrcmV|gwdg_preseeding]] auf owncloud.gwdg.de
 +
 +===== Installation und Nacharbeiten =====
 +
 +Die Installation eines Servers mit einem der Preseeding-Images läuft weitgehend (abhängig von der Umgebung) automatisch ab, indem der Server von diesem Image gebootet wird ([[#voraussetzungen|Voraussetzungen]] beachten).
 +
 +Da praktisch alle Fragen des Installers vorgegeben sind, ist die grafische Rückmeldung während der Installation reduziert. Die Installation sollte aber nicht unterbrochen werden, wenn für ein paar Minuten keine Meldung oder kein Fortschritt dargestellt wird. Am Ende der Installation startet der Installer das System neu und man kann sich mit dem vorgegebenen Benutzernamen und Passwort anmelden, lokal oder per SSH.
 +
 +Folgende Schritte sollten möglichst direkt nach der Installation geprüft und ggf. unternommen werden:
 +
 +  - __**Änderung des Passwort**__ des primären Benutzers boss
 +  - ggf. Änderung des Hostnamens und der Domain, falls diese bei der Installation nicht durch ein reverse DNS lookup aufgelöst und gesetzt wurden.
 +  - Anlegen von neuen Logical Volumes oder Vergrößerung von vorhandenen Logical Volumes, um bisher ungenutzten Speicherplatz zu verwenden.
 +
 +==== Änderung von Passwörtern ====
 +
 +Nach der Anmeldung am System mit dem Standardbenutzernamen und -passwort aus der Preseeding-Konfiguration muss das Passwort((http://wiki.ubuntuusers.de/passwd)) des Benutzers ''boss'' auf folgende Weise geändert werden:
 +
 +<code>
 +boss@ubuntu:~$ passwd
 +Ändern des Passworts für boss.
 +(aktuelles) UNIX-Passwort: 
 +Geben Sie ein neues UNIX-Passwort ein: 
 +Geben Sie das neue UNIX-Passwort erneut ein: 
 +passwd: Passwort erfolgreich geändert
 +boss@ubuntu:~$
 +</code>
 +
 +==== Änderung des Hostnames ====
 +
 +Eine nachträgliche Änderung des Hostnames((http://wiki.ubuntuusers.de/Rechnername)) sollte nur dann erforderlich sein, wenn zum Zeitpunkt der Installation für die IP-Adresse des Servers noch kein DNS-Eintrag existierte und statt dessen der Standard-Name "ubuntu.local" verwendet wurde. Der geltende Hostname kann mit **hostname -f** festgestellt werden:
 +
 +<code>
 +pfadmin@powerfolder:~$ hostname -f
 +powerfolder.gwdg.de
 +pfadmin@powerfolder:~$
 +</code>
 +Zum Ändern des Hostnamens von "ubuntu.local" nach "ubuntu-machine.gwdg.de" müssen die Dateien ''/etc/hosts'' (für die Auflösung des neuen Namens) und ''/etc/hostname'' (für den eigentlichen Namen) als Benutzer root bearbeitet werden.
 +
 +<code>
 +boss@ubuntu:~$ sudo -s
 +[sudo] password for boss: 
 +root@ubuntu:~#
 +root@ubuntu:~# cat /etc/hosts
 +
 +127.0.0.1 localhost
 +127.0.1.1 ubuntu.local  ubuntu
 +
 +# The following lines are desirable for IPv6 capable hosts
 +::1     ip6-localhost ip6-loopback
 +fe00::0 ip6-localnet
 +ff00::0 ip6-mcastprefix
 +ff02::1 ip6-allnodes
 +ff02::2 ip6-allrouters
 +
 +root@ubuntu:~# 
 +root@ubuntu:~# nano /etc/hosts
 +root@ubuntu:~# cat /etc/hosts
 +
 +127.0.0.1 localhost
 +127.0.1.1 ubuntu-machine.gwdg.de  ubuntu-machine
 +
 +# The following lines are desirable for IPv6 capable hosts
 +::1     ip6-localhost ip6-loopback
 +fe00::0 ip6-localnet
 +ff00::0 ip6-mcastprefix
 +ff02::1 ip6-allnodes
 +ff02::2 ip6-allrouters
 +
 +root@ubuntu:~# 
 +root@ubuntu:~# cat /etc/hostname 
 +
 +ubuntu
 +
 +root@ubuntu:~# nano /etc/hostname 
 +root@ubuntu:~# cat /etc/hostname 
 +
 +ubuntu-machine
 +
 +root@ubuntu:~#
 +root@ubuntu:~# reboot
 +root@ubuntu:~# 
 +An alle Benutzer verteilte Nachricht von boss@ubuntu
 +  (/dev/pts/0) um 13:19 ...
 +
 +Das System wird sich JETZT zum Neustarten herunterfahren!
 +</code>
 +==== Änderung des Logical Volume Managers ====
 +
 +Unabhängig von der Größe der Festplatte richtet die Installation recht sparsam bemessene Logical Volumes für Dateisysteme ein, um für später größere Flexibilität zu behalten. Hier wird beschrieben, wie eine vorhandene LV mit Dateisystem vergrößert und eine neue LV mit Dateisystem angelegt und eingebunden wird.
 +
 +=== Vergrößerung eines Logical Volumes ===
 +
 +Im Folgenden wird festgestellt, wie viel Speicherplatz noch zur Verfügung steht, und dann das Hauptdateisystem ''/'' um 1GB vergrößert.
 +
 +Wechsel zu root, anzeigen der Mount-Points:
 +
 +<code>
 +boss@ubuntu-machine:~$ sudo -s
 +[sudo] password for boss: 
 +root@ubuntu-machine:~# 
 +root@ubuntu-machine:~# mount
 +/dev/mapper/rootvg-rootlv on / type ext4 (rw,errors=remount-ro)
 +proc on /proc type proc (rw,noexec,nosuid,nodev)
 +sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
 +udev on /dev type devtmpfs (rw,mode=0755)
 +(...)
 +root@ubuntu-machine:~# 
 +</code>
 +Das Haupt-Dateisystem ''/'' ist gemounted von dem Logical Volume ''/dev/mapper/rootvg-rootlv''. Informationen zu diesem LV anzeigen, um die zugehörige Volume Group zu finden:
 +
 +<code>
 +root@ubuntu-machine:~# lvs /dev/mapper/rootvg-rootlv
 +  LV     VG     Attr   LSize Origin Snap%  Move Log Copy%  Convert
 +  rootlv rootvg -wi-ao 4,79g                                      
 +root@ubuntu-machine:~# 
 +</code>
 +Die LV ''rootlv'' ist Teil der VG ''rootvg'' und zur Zeit 4,79GB groß. Information zu der VG ''rootvg'' anzeigen, um den freien Platz zu ermitteln:
 +
 +<code>
 +root@ubuntu-machine:~# vgs
 +  VG     #PV #LV #SN Attr   VSize VFree
 +  rootvg       0 wz--n- 8,00g 2,41g
 +</code>
 +Die VG ''rootvg'' ist 8,00GB groß und hat noch 2,41GB frei. Nun wird die LV ''rootlv'' um 1GB erweitert:
 +
 +<code>
 +root@ubuntu-machine:~# 
 +root@ubuntu-machine:~# lvextend -L +1G /dev/mapper/rootvg-rootlv
 +  Extending logical volume rootlv to 5,79 GiB
 +  Logical volume rootlv successfully resized
 +root@ubuntu-machine:~# 
 +</code>
 +Danach kann auch das in dem LV liegende Dateisystem erweitert werden. Da es sich hier um ein ext4-Dateisystem handelt, kann die Größenänderung online erfolgen, ohne das Dateisystem auszuhängen:
 +
 +<code>
 +root@ubuntu-machine:~# resize2fs /dev/mapper/rootvg-rootlv
 +resize2fs 1.42 (29-Nov-2011)
 +Das Dateisystem auf /dev/mapper/rootvg-rootlv ist auf / eingehängt; Online-Grössenveränderung nötig
 +old_desc_blocks = 1, new_desc_blocks = 1
 +Eine Online-Grössenänderung von /dev/mapper/rootvg-rootlv auf 1518592 (4k) Blöcke wird durchgeführt.
 +Das Dateisystem auf /dev/mapper/rootvg-rootlv ist nun 1518592 Blöcke groß.
 +
 +root@ubuntu-machine:~# 
 +root@ubuntu-machine:~# df -h
 +Dateisystem               Größe Benutzt Verf. Verw% Eingehängt auf
 +/dev/mapper/rootvg-rootlv  5,8G    1,1G  4,4G   21% /
 +udev                       241M    4,0K  241M    1% /dev
 +tmpfs                      100M    300K   99M    1% /run
 +none                       5,0M        5,0M    0% /run/lock
 +none                       248M        248M    0% /run/shm
 +root@ubuntu-machine:~#
 +</code>
 +=== Anlegen eines neuen Logical Volumes ===
 +
 +Im Folgenden wird ein neues Logical Volume mit einem ext4-Dateisystem angelegt und unter dem neuen Mount-Point ''/var/www'' eingebunden.
 +
 +Wechsel zu ''root'', anzeigen der Größe und des freien Platz der Volume Group ''rootvg'':
 +
 +<code>
 +boss@ubuntu-machine:~$ sudo -s
 +[sudo] password for boss: 
 +root@ubuntu-machine:~# 
 +root@ubuntu-machine:~# vgs
 +  VG     #PV #LV #SN Attr   VSize VFree
 +  rootvg       0 wz--n- 8,00g 1,41g
 +root@ubuntu-machine:~# 
 +</code>
 +In der Volume Group rootvg ist noch 1,41GB frei. Nun wird ein Logical Volume mit dem Namen ''docroot'' und einer Größe von 700MB in der ''rootvg'' angelegt und ein ext4-Dateisystem darauf erzeugt:
 +
 +<code>
 +root@ubuntu-machine:~# lvcreate -n docroot -L 700M rootvg
 +  Logical volume "docroot" created
 +root@ubuntu-machine:~#
 +root@ubuntu-machine:~# mkfs.ext4 /dev/mapper/rootvg-docroot
 +mke2fs 1.42 (29-Nov-2011)
 +Dateisystem-Label=
 +OS-Typ: Linux
 +Blockgröße=4096 (log=2)
 +Fragmentgröße=4096 (log=2)
 +Stride=0 Blöcke, Stripebreite=0 Blöcke
 +44832 Inodes, 179200 Blöcke
 +8960 Blöcke (5.00%) reserviert für den Superuser
 +Erster Datenblock=0
 +Maximale Dateisystem-Blöcke=184549376
 +6 Blockgruppen
 +32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe
 +7472 Inodes pro Gruppe
 +Superblock-Sicherungskopien gespeichert in den Blöcken: 
 +  32768, 98304, 163840
 +
 +Platz für Gruppentabellen wird angefordert: erledigt                        
 +Inode-Tabellen werden geschrieben: erledigt                        
 +Erstelle Journal (4096 Blöcke): erledigt
 +Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt
 +
 +root@ubuntu-machine:~#
 +</code>
 +Nun wird ein Mount-Point ''/var/www'' erzeugt, in die ''/etc/fstab'' eingetragen und das Dateisystem eingehängt:
 +
 +<code>
 +root@ubuntu-machine:~# mkdir -p /var/www
 +root@ubuntu-machine:~# nano /etc/fstab
 +root@ubuntu-machine:~# cat /etc/fstab
 +
 +# /etc/fstab: static file system information.
 +#
 +# Use 'blkid' to print the universally unique identifier for a
 +# device; this may be used with UUID= as a more robust way to name devices
 +# that works even if disks are added and removed. See fstab(5).
 +#
 +# <file system> <mount point>   <type>  <options>       <dump>  <pass>
 +proc            /proc           proc    nodev,noexec,nosuid 0       0
 +/dev/mapper/rootvg-rootlv /               ext4    errors=remount-ro 0       1
 +/dev/mapper/rootvg-swaplv none            swap    sw              0       0
 +/dev/mapper/rootvg-docroot /var/www/  ext4  defaults 0 0 
 +
 +root@ubuntu-machine:~# 
 +root@ubuntu-machine:~# mount /var/www 
 +root@ubuntu-machine:~# 
 +root@ubuntu-machine:~# df -h
 +Dateisystem                Größe Benutzt Verf. Verw% Eingehängt auf
 +/dev/mapper/rootvg-rootlv   5,8G    1,1G  4,4G   21% /
 +udev                        241M    4,0K  241M    1% /dev
 +tmpfs                       100M    304K   99M    1% /run
 +none                        5,0M        5,0M    0% /run/lock
 +none                        248M        248M    0% /run/shm
 +/dev/mapper/rootvg-docroot  689M     17M  638M    3% /var/www
 +root@ubuntu-machine:~#
 +</code>
 +=== Vergrößerung einer Volume Group mit zusätzlichen Festplatten ===
 +
 +Dem virtuellen Server wurde zuvor eine zusätzliche, zweite Festplatte konfiguriert und mit dieser Konfiguration gestartet.
 +
 +Der Befehl ''lsblk'' zeigt die aktuellen Blockdevices und ihre Nutzung an. ''sda'' ist partitioniert und diese Partition enthält drei Logical Volumes. ''sdb'' ist die neue Festplatte und ist unpartitioniert. ''pvs'' listet nur die Partition von ''sda'' als Physical Volume auf, welches der Volume Group ''rootvg'' zugeordnet ist. ''rootvg'' ist laut ''vgs'' im Moment 8GB groß.
 +
 +<code>
 +root@ubuntu-machine:~# lsblk 
 +NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
 +sda                         8:   0     8G  0 disk 
 +└─sda1                      8:1    0     8G  0 part 
 +  ├─rootvg-swaplv (dm-0)  252:0    0   808M  0 lvm  [SWAP]
 +  ├─rootvg-rootlv (dm-1)  252:1    0   5,8G  0 lvm  /
 +  └─rootvg-docroot (dm-2) 252:2    0   700M  0 lvm  /var/www
 +sdb                         8:16       8G  0 disk 
 +sr0                        11:0    1  20,7M  0 rom  
 +root@ubuntu-machine:~#
 +root@ubuntu-machine:~# pvs
 +  PV         VG     Fmt  Attr PSize PFree  
 +  /dev/sda1  rootvg lvm2 a-   8,00g 748,00m
 +root@ubuntu-machine:~#
 +root@ubuntu-machine:~# vgs
 +  VG     #PV #LV #SN Attr   VSize VFree  
 +  rootvg       0 wz--n- 8,00g 748,00m
 +root@ubuntu-machine:~#
 +</code>
 +Nun wird ''sdb'' für die Verwendung durch den LVM markiert und taucht als verfügbares Physical Volume damit auch schon bei ''pvs'' auf, ist aber noch keiner Volume Group zugeordnet.
 +
 +<code>
 +root@ubuntu-machine:~# pvcreate /dev/sdb
 +  Physical volume "/dev/sdb" successfully created
 +root@ubuntu-machine:~# 
 +root@ubuntu-machine:~# pvs
 +  PV         VG     Fmt  Attr PSize PFree  
 +  /dev/sda1  rootvg lvm2 a-   8,00g 748,00m
 +  /dev/sdb          lvm2 a-   8,00g   8,00g
 +root@ubuntu-machine:~# 
 +</code>
 +Die Volume Group ''rootvg'' kann nun auf das neue Physical Volume ausgedehnt werden, was sich in der Übersicht über die PVs und der Gesamtgröße der VG ''rootvg'' sofort wieder spiegelt.
 +
 +<code>
 +root@ubuntu-machine:~# vgextend rootvg /dev/sdb
 +  Volume group "rootvg" successfully extended
 +root@ubuntu-machine:~#
 +root@ubuntu-machine:~# pvs
 +  PV         VG     Fmt  Attr PSize PFree  
 +  /dev/sda1  rootvg lvm2 a-   8,00g 748,00m
 +  /dev/sdb   rootvg lvm2 a-   8,00g   8,00g
 +root@ubuntu-machine:~#
 +root@ubuntu-machine:~# vgs
 +  VG     #PV #LV #SN Attr   VSize  VFree
 +  rootvg       0 wz--n- 15,99g 8,73g
 +root@ubuntu-machine:~#
 +</code>
 +Neue Logical Volumes oder Vergrößerungen von Logical Volumes in rootvg können nun den gesamten freien Platz der ''rootvg'' nutzen, auch über die Grenzen der eigentlichen Physical Volumes hinweg.
 +
 +===== Anpassung eines Images mit eigener Konfiguration =====
 +
 +Die hier unter [[##download|Download]] zur Verfügung gestellten Preseed-Images lassen sich recht einfach mit einer eigenen Preseed-Konfiguration, Skripten oder zusätzlichen Softwarepaketen anpassen. Die Vorgehensweise ist dabei die gleiche, wie die ursprüngliche Erstellung der Images.
 +
 +Im Folgenden werden Schritte mit Beispiel-Befehlen beschrieben. Pfade, Dateinamen etc. können von dem jeweiligen, individuellen Einsatzzweck abweichen. Das Ergebnis der u.s. Schritte ist eine Nezinstall-ISO mit einer Preseed-Konfiguration in der initrd des Installers.
 +
 +Die Ablauf ist dabei im wesentlichen:
 +
 +  - Mounten der ISO
 +  - Kopieren des Inhalts
 +  - Entpacken der initrd
 +  - Platzieren der Preseeding-Konfiguration
 +  - Packen der Initrd
 +  - Remastering der ISO
 +
 +==== Erstellen einer angepassten Preseeding-ISO ====
 +
 +Erster Schritt ist der Download eines ISO-Images. Es muss sich hierbei um ein bootbares ISO-Image mit dem Debian Installer handeln, von dem sonst eine normale Installation möglich wäre. Als Ausgangsbasis kann auch eines der unter #Download hinterlegten Images verwendet werden.
 +
 +<code>
 +benny@UbuntuBW:~/Downloads$ wget http://archive.ubuntu.com/ubuntu/dists/quantal/main/installer-amd64/current/images/netboot/mini.iso
 +--2013-05-28 09:56:32--  http://archive.ubuntu.com/ubuntu/dists/quantal/main/installer-amd64/current/images/netboot/mini.iso
 +Auflösen des Hostnamen »archive.ubuntu.com (archive.ubuntu.com)«... 2001:67c:1360:8c01::23, 2001:67c:1360:8c01::15, 2001:67c:1360:8c01::19, ...
 +Verbindungsaufbau zu archive.ubuntu.com (archive.ubuntu.com)|2001:67c:1360:8c01::23|:80... verbunden.
 +HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
 +Länge: 35651584 (34M) [application/x-iso9660-image]
 +In »»mini.iso«« speichern.
 +
 +100%[===========================================================================================>] 35.651.584  9,78M/  in 3,6s    
 +
 +2013-05-28 09:56:35 (9,54 MB/s) - »»mini.iso«« gespeichert [35651584/35651584]
 +</code>
 +Als nächstes werden zwei Arbeitsverzeichnisse angelegt, wo das ISO gmounted und dann der Inhalt dorthin kopiert wird.
 +
 +<code>
 +root@UbuntuBW:~/Downloads$ mkdir /tmp/remaster ; mkdir /tmp/cdrom
 +</code>
 +Dann wird mit ''losetup'' das ISO-Image als Blockdevice gemounted und der Inhalt mit ''rsync'' in das zweite Arbeitsverzeichnis kopiert.
 +
 +<code>
 +root@UbuntuBW:~/Downloads$ losetup -f ~/Downloads/mini.iso 
 +root@UbuntuBW:~/Downloads$ losetup -a
 +/dev/loop0: [fc04]:266574 (/home/benny/Downloads/mini.iso)
 +root@UbuntuBW:~/Downloads$ mount /dev/loop0 /tmp/cdrom/
 +mount: warning: /tmp/cdrom/ seems to be mounted read-only.
 +root@UbuntuBW:~/Downloads$ rsync -a /tmp/cdrom/ /tmp/remaster/ ; cd /tmp/remaster/
 +</code>
 +Der folgende Schritt ist optional, aber empfohlen. Hierbei wird ein Timeout für das Bootmenü der Installer-CD gesetzt, damit die Installation davon auch automatisch beginnen kann und nicht auf eine Benutzereingabe gewartet werden muss. Hier wurde der Wert ''timeout'' auf ''100'' gesetzt, was 10 Sek. entspricht. Wird während des Timeouts eine Taste gedrückt, stoppt der Timeout und es können z.B. Kernel-Parameter dem Installer übergeben werden.
 +
 +<code>
 +root@UbuntuBW:/tmp/remaster# cat isolinux.cfg 
 +# D-I config version 2.0
 +include menu.cfg
 +default vesamenu.c32
 +prompt 0
 +timeout 100
 +</code>
 +Im nächsten Schritt wird ein Arbeitsverzeichnis für das Entpacken der initrd angelegt, die initrd entpackt, eine preseed.cfg dorthin kopiert, die initrd wieder gepackt und das Arbeitsverzeichnis gelöscht, um Platz auf der ISO zu sparen.
 +
 +<code>
 +root@UbuntuBW:/tmp/remaster# mkdir -p /tmp/remaster/initrd ; cd /tmp/remaster/initrd
 +root@UbuntuBW:/tmp/remaster/initrd# zcat ../initrd.gz | cpio -iv
 +root@UbuntuBW:/tmp/remaster/initrd# cp ~/Downloads/preseed.txt preseed.cfg
 +root@UbuntuBW:/tmp/remaster/initrd# find . -print0 | cpio -0 -H newc -ov | gzip -c > ../initrd.gz
 +root@UbuntuBW:/tmp/remaster# cd .. ; rm -rf initrd/
 +</code>
 +Nun kann das ISO mit der neuen initrd erstellt, danach das ursprüngliche ISO ausgehängt und alle Arbeitsverzeichnisse gelöscht werden. Der Befehl ''mkisofs'' muss dazu in dem Verzeichnis ausgeführt werden, in dem die Dateien für das ISO-Image liegen.
 +
 +<code>
 +root@UbuntuBW:/tmp/remaster# mkisofs -r -V "Custom Ubuntu Preseed Install CD" -cache-inodes -J -l -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ~/Downloads/custom_preseed_install_cd.iso ./
 +root@UbuntuBW:/tmp/remaster# cd ; umount /dev/loop0 ; losetup -d /dev/loop0 ; rm -rf /tmp/remaster/
 +</code>
 +==== Automatische Erstellung einer Preseeding-ISO mittels Skript ====
 +
 +Die [[#Anpassung_eines_Images_mit_eigener_Konfiguration|o.g. Schritte]] zum Erstellen einer eigenen ISO mit Preseeding-Konfiguration in der initrd können auch mit einem Skript automatisiert werden.
 +
 +Das Skript, welches zur Erstellung der hier angebotenen Images verwendet wurde, findet sich ebenfalls unter den Downloads der Images:
 +
 +  * [[https://owncloud.gwdg.de/index.php/s/7sG9SbLlQESrcmV/download?path=%2F&files=mkpreseediso.sh|mkpreseediso.sh]]
 +
 +Das Skript wird als root aufgerufen mit den originalen ISO, der ''preseed.cfg'' und dem Pfad für das neue ISO als Argumenten:
 +
 +<code>
 +mkpreseediso.sh <original-iso> <path-to-preseed.cfg> <path-to-new-iso>
 +</code>
 +Zusätzlich zu den o.g. Schritten erzwingt das Skript das deutsche Tastaturlayout beim Installer per Kernelparameter, da in einigen Tests trotz Preseeding-Option der Installer noch danach fragte.
 +
 +Für weitere Änderungen, z.B. platzieren von Paketen oder Skripten auf der ISO oder weiteren Kernelparameter, muss das Skript angepasst werden. Zu Neuerstellung einer ISO bei Verwendung einer anderen Ausgangs-ISO oder mit einer neuen preseed.cfg kann das Skript direkt verwendet werden, z.B.:
 +
 +<code>
 +benny@UbuntuBW:~$ sudo bin/mkpreseediso.sh ~/PowerFolders/preseed-dev/debian-7.1.0-amd64-mini.iso ~/PowerFolders/preseed-dev/debian-7.1.0-generic-preseed.cfg ~/Downloads/demo-debian7.iso
 +OK: ISO file found at /home/benny/PowerFolders/preseed-dev/debian-7.1.0-amd64-mini.iso.
 +OK: preseed.cfg found at /home/benny/PowerFolders/preseed-dev/debian-7.1.0-generic-preseed.cfg.
 +INFO: Creating working directories... done.
 +INFO: mounting ISO on loopback... done. Mounted at /dev/loop0.
 +INFO: mounting loopback at working directory... done.
 +INFO: copying netinstall contents to working directory... done.
 +INFO: adding timeout to boot menu... done.
 +INFO: adding keymap tp kernel parameters... done.
 +INFO: creating working directories for initrd... done.
 +INFO: unpacking initrd... done.
 +INFO: copying preseed.cfg... done.
 +INFO: rebuilding initrd... done.
 +INFO: cleaning up initrd tmp dir... done.
 +INFO: remastering ISO... done. ISO file written to /home/benny/Downloads/demo-debian7.iso.
 +INFO: cleaning up... done.
 +benny@UbuntuBW:~$
 +</code>
 +===== Links =====