Automatische Linux Installationen: Unterschied zwischen den Versionen
(init) |
|||
(19 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | ''vorläufig eingestellt, im prod. Einsatz zu kompliziert/aufwändig, Cem 2016-06-20'' | ||
+ | |||
+ | ''Gründe für die Einstellung:'' | ||
+ | |||
+ | * ''der Aufwand zur Verwaltung der images ist sehr gross e.g.:'' | ||
+ | :* ''images können auf unserem LTSP nicht mit qemu gestartet werden (der LTSP ist bereits eine xen-vm)'' | ||
+ | :* ''für einen regulären Anwender ist das Verwalten von images zu kompliziert / unverständlich'' | ||
+ | |||
+ | * ''eine Idee wäre gewesen die Benutzerumgebung vorgängig einzurichten, da der Benutzername (Kunde) vorgängig nicht bekannt ist, ist dies nur begrenzt möglich, zusätzlich ist es fraglich ob dies wirklich sinnvoll wäre, wenn z.B. vom Kunden später ein neuer Benutzer erstellt würde sähe dieser dann ganz anders (Standardeinstellungen) aus, für den Kunden wäre das nicht nachvollziehbar, vorgängige Einstellungen müssten systemweit gemacht werden, das ist aber bei Einstellungen der Oberfläche eben genau mühsam, schwierig oder unmöglich'' | ||
+ | |||
+ | * ''der PXE-booter an sich ([[Installationen_über_PXE]]) bietet eine einfache Möglichkeit live-/installationsmedien zu starten und von dort können auch Installationen, mit den für Anwender bekannten Installern, ausgeführt werden'' | ||
+ | |||
+ | ''Fazit:'' | ||
+ | |||
+ | ''Damit sich der Aufwand für ein solches System lohnte, müssten schätzungsweise pro Woche so um die 20 Geräte installiert werden. Das ist bei uns nicht der Fall. Eine Person wäre praktisch ausschliesslich damit beschäftigt.'' | ||
+ | |||
+ | ''ToDo:'' | ||
+ | |||
+ | * ''image Partition leere Bereiche mit Null beschreiben, wie ? --> dokumentieren'' | ||
+ | |||
Zur Zeit ist die Installation von Linux, auf Geräten die wir verkaufen möchten oder auf Kundengeräten, extrem mühsam und Zeitaufwändig. | Zur Zeit ist die Installation von Linux, auf Geräten die wir verkaufen möchten oder auf Kundengeräten, extrem mühsam und Zeitaufwändig. | ||
Zeile 19: | Zeile 39: | ||
* Festplatten müssen ausgebaut, wieder eingebaut werden | * Festplatten müssen ausgebaut, wieder eingebaut werden | ||
* Festplatten müssen die gleiche Grösse haben (ansonsten komplizierte Anpassungen nötig, unflexibel) usw. usf... | * Festplatten müssen die gleiche Grösse haben (ansonsten komplizierte Anpassungen nötig, unflexibel) usw. usf... | ||
+ | |||
+ | === Individuell angepasste Installationsmedien erstellen === | ||
+ | MX Linux bietet die Möglichkeit, von einem voll konfigurierten MX Linux aus, ein ISO-Installations-Image zu erstellen, das dann auf einen USB-Stick kopiert oder auf eine DVD / CD gebrannt werden kann.<br /> | ||
+ | Dies hat folgende Vorteile: | ||
+ | * Die Festplattengrösse bei der Installation ist beliebig wählbar | ||
+ | * Nach der Installation, die sehr schnell und einfach abläuft, ist das neue System sofort einsatzbereit | ||
+ | * Der Benutzermanager von MX Linux ermöglicht es sehr einfach, Benutzerkonten zu kopieren, so dass auch weitere Benutzerkonten mit genau den gleichen Einstellungen einfach erzeugt werden können. | ||
+ | Bisher nur mit MX Linux Installationen getestet.<br /> | ||
+ | Details zu den bei uns verwendeten individuellen Anpassungen plus Anleitung zum Erstellen eines angepassten ISO-Images: [[MX-16 Installation]], [[Checkliste für Installationen]]<br /> | ||
+ | '''To Do''':<br /> | ||
+ | * Einrichten der angepassten MX Linux ISO-Images auf unserem PXE-Server | ||
+ | * Testen mit Debian oder anderen Distros, die direkt die Debian Paketquellen verwenden<br /> | ||
+ | (Da MX Linux die Paketquellen von Debian verwendet, ist es vermutlich möglich, die dafür nötigen Tools von MX Linux auf einer normalen Debian Installation zu verwenden.) | ||
+ | auch | ||
=== Bestehende Lösungen / Systeme === | === Bestehende Lösungen / Systeme === | ||
Zeile 33: | Zeile 67: | ||
=== Neuer Lösungsansatz === | === Neuer Lösungsansatz === | ||
− | Es soll ein System entwickelt werden mit welchem fertig konfigurierte ' | + | Es soll ein System entwickelt werden mit welchem '''fertig konfigurierte Images''' automatisch/sehr einfach installiert werden können. |
Vorteile: | Vorteile: | ||
Zeile 40: | Zeile 74: | ||
** wichtige Änderungen könnten sogar so getestet und an Kunden mitgeteilt werden z.B. newsletter | ** wichtige Änderungen könnten sogar so getestet und an Kunden mitgeteilt werden z.B. newsletter | ||
* einfachste und schnelle Installation mittels Scripten | * einfachste und schnelle Installation mittels Scripten | ||
− | * das System inkl. Images könnten anderen zur Verfügung gestellt werden | + | * das System inkl. Images könnten anderen zur Verfügung gestellt werden, Beitrag zur Allgemeinheit (ein System basierend auf images existiert meines wissens noch nicht) |
+ | |||
+ | '''Anforderungen:''' | ||
+ | |||
+ | * das system ''muss'' reproduzierbar sein | ||
+ | * .. [WIP] | ||
+ | |||
+ | == Entwicklung == | ||
+ | |||
+ | [WIP] | ||
+ | |||
+ | ''Ende 2014 hatte ich (Cem) angefangen ein solches System zu entwickeln. Dieses System sollte die Installation über ein Netzwerk durchführen. Dies wird dann aber relativ aufwändig. Nach einer Zeit habe ich nicht mehr daran weitergearbeitet. Ich denke ein einfacheres System, basierend auf einem externen Medium, wäre für unsere Zwecke besser geeignet. Mein angefangenes Projekt ist dennoch auf Github zu finden: https://github.com/rebootl/MAuI'' | ||
+ | |||
+ | ''Hampa hat nun mal ein solches Installationsscript für Images geschrieben.'' | ||
+ | |||
+ | === install-image === | ||
+ | |||
+ | {{Bemerkung revamp| | ||
+ | Das Skript, sowie auch einige Images, befinden sich zur Zeit in unserer internen Ablage. | ||
+ | Unter: <code>/data/Intern/Projekte/install-image/</code>}} | ||
+ | |||
+ | <code>README</code> (2015-09-29): | ||
+ | <pre>install-image | ||
+ | ============= | ||
+ | |||
+ | An installable image consists of a description file (.desc) and | ||
+ | a (possibly compressed) image file (.img). | ||
+ | |||
+ | The image file contains a complete hard disk image, partition | ||
+ | table and all. | ||
+ | |||
+ | During installation one partition can optionally be extended to the | ||
+ | end of the physical hard disk. | ||
+ | |||
+ | |||
+ | Description files | ||
+ | ----------------- | ||
+ | |||
+ | desc: One line image description | ||
+ | partition: The partition that will be extended. Empty or 0 disable. | ||
+ | |||
+ | |||
+ | Image files | ||
+ | ----------- | ||
+ | |||
+ | The image file must have the same name as the description file, | ||
+ | with an extension of .img, .img.gz, .img.bz2 or .img.xz. | ||
+ | |||
+ | Requirements for the image: | ||
+ | |||
+ | - The partition to be extended must be physically last on the | ||
+ | disk and must contain an ext2, ext3 or ext4 file system. | ||
+ | |||
+ | |||
+ | Requirements for the host: | ||
+ | |||
+ | - parted | ||
+ | - fsck | ||
+ | - resize2fs | ||
+ | </pre> | ||
+ | |||
+ | == Images Verwaltung == | ||
+ | |||
+ | Zum starten der Images in einer VM eignet sich ''qemu'' mit KVM sehr gut. | ||
+ | |||
+ | {{Bemerkung revamp|Da bei uns die meisten Server mittels Xen virtualisiert sind, kann KVM dort nicht verwendet werden (siehe unten: Versuche mit Xen). Zur Zeit (2016-01-27) kann beispielsweise unser Schulungs LTSP ''workshop'' verwendet werden (auch über SSH).}} | ||
+ | |||
+ | '''Versuche mit Xen:''' | ||
+ | |||
+ | Ich hatte versucht qemu innerhalb einer Xen VM zu starten, dies funktioniert aber nicht, weder als ''domU'' Guest noch in der ''dom0''. KVM ist nicht verfügbar und ohne kommt die qemu VM kaum über den Bootloader hinaus. | ||
+ | |||
+ | Des weiteren habe ich versucht ein image mittels ''virt-manager'' zu erstellen. Das GUI ist mir persönlich aber eher etwas umständlich. Ansonsten konnte ich ein image erstellen, der Mauszeiger wurde dann aber nicht dargestellt (evtl. lösbar)... | ||
+ | |||
+ | '''Einrichtung von qemu (auf ''workshop'' gemacht):''' | ||
+ | |||
+ | <code>qemu</code> installieren. | ||
+ | |||
+ | Der Benutzer muss in der Gruppe ''kvm'' sein. | ||
+ | |||
+ | Zusätzlich musste ich die berechtigung (ACL) auf <code>/dev/kvm</code> anpassen. (Gruppe kvm muss rw haben. Möglicherweise Bug, Debian 8 ?) | ||
+ | |||
+ | === Erstellen === | ||
+ | |||
+ | Das starten von qemu erfordert einige Parameter, da sonst die VM zu langsam oder nicht richtig läuft. Daher habe ich mir diese in kleinen Scripten zusammengestellt.<br /> | ||
+ | Siehe auch: https://github.com/rebootl/qemu-scripts | ||
+ | Clone: <code>git clone https://github.com/rebootl/qemu-scripts.git</code> | ||
+ | |||
+ | Zum erstellen eines image muss zuerst ein leeres image-file erstellt werden. | ||
+ | |||
+ | <code>./create-img</code>: | ||
+ | <source lang="bash"> | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # create an empty image file | ||
+ | # for use as a vm | ||
+ | # | ||
+ | # arguments: | ||
+ | # $1 image name | ||
+ | |||
+ | qemu-img create -f raw "$1" 8G | ||
+ | </source> | ||
+ | |||
+ | Der Aufruf <code>./create-img <image name></code> erstellt ein 8GB grosses, leeres imagefile mit dem angegebenen Namen. | ||
+ | |||
+ | Dann kann die Installation einer <code>.iso</code> Datei gestartet werden. | ||
+ | |||
+ | <code>./launch-qemu-install</code>: | ||
+ | <source lang="bash"> | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # launch vm to install a new system | ||
+ | # from iso image into image file | ||
+ | # | ||
+ | # arguments: | ||
+ | # $1 iso image name | ||
+ | # $2 image file name | ||
+ | |||
+ | # arch wiki | ||
+ | #qemu-system-i386 -cdrom iso_image -boot order=d -drive file=disk_image,format=raw | ||
+ | |||
+ | qemu-system-i386 \ | ||
+ | -m 2048 \ | ||
+ | -enable-kvm \ | ||
+ | -vga std \ | ||
+ | -boot d \ | ||
+ | -cdrom "$1" \ | ||
+ | -drive file="$2",format=raw | ||
+ | </source> | ||
+ | |||
+ | Aufruf <code>./launch-qemu-install <ISO file> <image file></code> startet die Installation (die VM wird in einem grafischen Fenster ausgeführt). | ||
+ | |||
+ | Die Partitionierung kann dort normal vorgenommen werden. Dabei ist obiges README bezüglich den Voraussetzungen für ein image zu beachten (die physisch letzte Partition kann vom Installationsscript vergrössert werden). | ||
+ | |||
+ | === Starten === | ||
+ | |||
+ | Ein vorhandenes image kann mit folgendem Befehl/Script gestartet werden. | ||
+ | |||
+ | <code>./launch-qemu <image file></code>: | ||
+ | <source lang="bash"> | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # launch vm using existing imagefile | ||
+ | # | ||
+ | # using qemu | ||
+ | # | ||
+ | # arguments: | ||
+ | # $1 image name | ||
+ | |||
+ | qemu-system-i386 \ | ||
+ | -m 2048 \ | ||
+ | -enable-kvm \ | ||
+ | -drive file="$1",if=virtio,cache=none | ||
+ | </source> | ||
+ | |||
+ | Im laufenden image können Änderungen, Updates etc. gemacht werden. | ||
+ | |||
+ | === Images === | ||
+ | |||
+ | ==== Linux Mint XFCE 32-bit ==== | ||
+ | |||
+ | Image starten: | ||
+ | |||
+ | Braucht noch die Option -vga vmware damit X überhaupt startet Pietro Stäheli (Diskussion) 16:23, 2. Feb. 2016 (CET) <br /> | ||
+ | --> ab qemu v2.2 ist "std" standard, Debian hat zur Zeit noch v2.1 Cem 2016-02-03 | ||
+ | |||
− | + | [[Category: Systemadministration]] | |
+ | [[Category: Programmierung]] |
Aktuelle Version vom 29. April 2017, 16:40 Uhr
vorläufig eingestellt, im prod. Einsatz zu kompliziert/aufwändig, Cem 2016-06-20
Gründe für die Einstellung:
- der Aufwand zur Verwaltung der images ist sehr gross e.g.:
- images können auf unserem LTSP nicht mit qemu gestartet werden (der LTSP ist bereits eine xen-vm)
- für einen regulären Anwender ist das Verwalten von images zu kompliziert / unverständlich
- eine Idee wäre gewesen die Benutzerumgebung vorgängig einzurichten, da der Benutzername (Kunde) vorgängig nicht bekannt ist, ist dies nur begrenzt möglich, zusätzlich ist es fraglich ob dies wirklich sinnvoll wäre, wenn z.B. vom Kunden später ein neuer Benutzer erstellt würde sähe dieser dann ganz anders (Standardeinstellungen) aus, für den Kunden wäre das nicht nachvollziehbar, vorgängige Einstellungen müssten systemweit gemacht werden, das ist aber bei Einstellungen der Oberfläche eben genau mühsam, schwierig oder unmöglich
- der PXE-booter an sich (Installationen_über_PXE) bietet eine einfache Möglichkeit live-/installationsmedien zu starten und von dort können auch Installationen, mit den für Anwender bekannten Installern, ausgeführt werden
Fazit:
Damit sich der Aufwand für ein solches System lohnte, müssten schätzungsweise pro Woche so um die 20 Geräte installiert werden. Das ist bei uns nicht der Fall. Eine Person wäre praktisch ausschliesslich damit beschäftigt.
ToDo:
- image Partition leere Bereiche mit Null beschreiben, wie ? --> dokumentieren
Zur Zeit ist die Installation von Linux, auf Geräten die wir verkaufen möchten oder auf Kundengeräten, extrem mühsam und Zeitaufwändig.
Daher möchten wir dies vereinfachen.
Bisherige methoden bei uns
1) Linux wird von Grund auf, von einem Live-/Installationsmedium, installiert.
Nachteile:
- Installation muss begleitet werden
- grosser Aufwand bis alle Einstellungen gemacht sind, Sprache, Zusatzpakete, Oberfläche, usw. usf...
2) Ein fertig konfiguriertes und installiertes System wird per dd
komplett auf weitere Festplatten kopiert.
Nachteile:
- Festplatte mit installiertem System muss gefunden werden
- Festplatten müssen ausgebaut, wieder eingebaut werden
- Festplatten müssen die gleiche Grösse haben (ansonsten komplizierte Anpassungen nötig, unflexibel) usw. usf...
Individuell angepasste Installationsmedien erstellen
MX Linux bietet die Möglichkeit, von einem voll konfigurierten MX Linux aus, ein ISO-Installations-Image zu erstellen, das dann auf einen USB-Stick kopiert oder auf eine DVD / CD gebrannt werden kann.
Dies hat folgende Vorteile:
- Die Festplattengrösse bei der Installation ist beliebig wählbar
- Nach der Installation, die sehr schnell und einfach abläuft, ist das neue System sofort einsatzbereit
- Der Benutzermanager von MX Linux ermöglicht es sehr einfach, Benutzerkonten zu kopieren, so dass auch weitere Benutzerkonten mit genau den gleichen Einstellungen einfach erzeugt werden können.
Bisher nur mit MX Linux Installationen getestet.
Details zu den bei uns verwendeten individuellen Anpassungen plus Anleitung zum Erstellen eines angepassten ISO-Images: MX-16 Installation, Checkliste für Installationen
To Do:
- Einrichten der angepassten MX Linux ISO-Images auf unserem PXE-Server
- Testen mit Debian oder anderen Distros, die direkt die Debian Paketquellen verwenden
(Da MX Linux die Paketquellen von Debian verwendet, ist es vermutlich möglich, die dafür nötigen Tools von MX Linux auf einer normalen Debian Installation zu verwenden.) auch
Bestehende Lösungen / Systeme
Die bestehenden Systeme basieren auf Scripten welche das System bei oder nach der Installation anpassen.
[Links suchen und hier einfügen.]
Nachteile:
- es basiert auf einer vielzahl von Scripten u. U. buggy und schwierig zu debuggen
- bei gewissen Einstellungen ist es u. U. extrem mühsam wenn man diese mittels Scripten machen muss, denn man muss zuerst herausfinden wo diese überhaupt gemacht werden. e.g. Anpassungen an der Oberfläche
- nicht mehr Zeitgemäss, es gibt bessere Möglichkeiten, siehe unten
Neuer Lösungsansatz
Es soll ein System entwickelt werden mit welchem fertig konfigurierte Images automatisch/sehr einfach installiert werden können.
Vorteile:
- Images können als VM (virtuelle Maschine) gestartet, konfiguriert und eingerichtet, sowie up-to-date gehalten werden (komfortabel)
- wichtige Änderungen könnten sogar so getestet und an Kunden mitgeteilt werden z.B. newsletter
- einfachste und schnelle Installation mittels Scripten
- das System inkl. Images könnten anderen zur Verfügung gestellt werden, Beitrag zur Allgemeinheit (ein System basierend auf images existiert meines wissens noch nicht)
Anforderungen:
- das system muss reproduzierbar sein
- .. [WIP]
Entwicklung
[WIP]
Ende 2014 hatte ich (Cem) angefangen ein solches System zu entwickeln. Dieses System sollte die Installation über ein Netzwerk durchführen. Dies wird dann aber relativ aufwändig. Nach einer Zeit habe ich nicht mehr daran weitergearbeitet. Ich denke ein einfacheres System, basierend auf einem externen Medium, wäre für unsere Zwecke besser geeignet. Mein angefangenes Projekt ist dennoch auf Github zu finden: https://github.com/rebootl/MAuI
Hampa hat nun mal ein solches Installationsscript für Images geschrieben.
install-image
README
(2015-09-29):
install-image ============= An installable image consists of a description file (.desc) and a (possibly compressed) image file (.img). The image file contains a complete hard disk image, partition table and all. During installation one partition can optionally be extended to the end of the physical hard disk. Description files ----------------- desc: One line image description partition: The partition that will be extended. Empty or 0 disable. Image files ----------- The image file must have the same name as the description file, with an extension of .img, .img.gz, .img.bz2 or .img.xz. Requirements for the image: - The partition to be extended must be physically last on the disk and must contain an ext2, ext3 or ext4 file system. Requirements for the host: - parted - fsck - resize2fs
Images Verwaltung
Zum starten der Images in einer VM eignet sich qemu mit KVM sehr gut.
Versuche mit Xen:
Ich hatte versucht qemu innerhalb einer Xen VM zu starten, dies funktioniert aber nicht, weder als domU Guest noch in der dom0. KVM ist nicht verfügbar und ohne kommt die qemu VM kaum über den Bootloader hinaus.
Des weiteren habe ich versucht ein image mittels virt-manager zu erstellen. Das GUI ist mir persönlich aber eher etwas umständlich. Ansonsten konnte ich ein image erstellen, der Mauszeiger wurde dann aber nicht dargestellt (evtl. lösbar)...
Einrichtung von qemu (auf workshop gemacht):
qemu
installieren.
Der Benutzer muss in der Gruppe kvm sein.
Zusätzlich musste ich die berechtigung (ACL) auf /dev/kvm
anpassen. (Gruppe kvm muss rw haben. Möglicherweise Bug, Debian 8 ?)
Erstellen
Das starten von qemu erfordert einige Parameter, da sonst die VM zu langsam oder nicht richtig läuft. Daher habe ich mir diese in kleinen Scripten zusammengestellt.
Siehe auch: https://github.com/rebootl/qemu-scripts
Clone: git clone https://github.com/rebootl/qemu-scripts.git
Zum erstellen eines image muss zuerst ein leeres image-file erstellt werden.
./create-img
:
#!/bin/bash
#
# create an empty image file
# for use as a vm
#
# arguments:
# $1 image name
qemu-img create -f raw "$1" 8G
Der Aufruf ./create-img <image name>
erstellt ein 8GB grosses, leeres imagefile mit dem angegebenen Namen.
Dann kann die Installation einer .iso
Datei gestartet werden.
./launch-qemu-install
:
#!/bin/bash
#
# launch vm to install a new system
# from iso image into image file
#
# arguments:
# $1 iso image name
# $2 image file name
# arch wiki
#qemu-system-i386 -cdrom iso_image -boot order=d -drive file=disk_image,format=raw
qemu-system-i386 \
-m 2048 \
-enable-kvm \
-vga std \
-boot d \
-cdrom "$1" \
-drive file="$2",format=raw
Aufruf ./launch-qemu-install <ISO file> <image file>
startet die Installation (die VM wird in einem grafischen Fenster ausgeführt).
Die Partitionierung kann dort normal vorgenommen werden. Dabei ist obiges README bezüglich den Voraussetzungen für ein image zu beachten (die physisch letzte Partition kann vom Installationsscript vergrössert werden).
Starten
Ein vorhandenes image kann mit folgendem Befehl/Script gestartet werden.
./launch-qemu <image file>
:
#!/bin/bash
#
# launch vm using existing imagefile
#
# using qemu
#
# arguments:
# $1 image name
qemu-system-i386 \
-m 2048 \
-enable-kvm \
-drive file="$1",if=virtio,cache=none
Im laufenden image können Änderungen, Updates etc. gemacht werden.
Images
Linux Mint XFCE 32-bit
Image starten:
Braucht noch die Option -vga vmware damit X überhaupt startet Pietro Stäheli (Diskussion) 16:23, 2. Feb. 2016 (CET)
--> ab qemu v2.2 ist "std" standard, Debian hat zur Zeit noch v2.1 Cem 2016-02-03