Automatische Linux Installationen

From revampedia

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

Bemerkung Revamp:

Das Skript, sowie auch einige Images, befinden sich zur Zeit in unserer internen Ablage.

Unter: /data/Intern/Projekte/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.

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):

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