Eigene Linux Distribution - Tools um Live CDs oder ISO Images von Ubuntu Installationen zu erstellen (Version 2016)

Im letzten Jahr hatte ich verschiedene Varianten vorgestellt, um aus der eigenen Linux Installation ISO Images bzw. Sicherungen zu erstellen. Der ursprüngliche Artikel ist bald ein Jahr alt. Somit ist es Zeit nach dem aktuellen Wasserstand zu schauen.

Zunächst noch kurz was zu eventuellen Altlasten auf der Platte.

Der Artikel über das mittlerweile veraltete Remastersys liegt ja noch länger zurück, sollte es dennoch auf der Platte installiert sein, hilft folgendes um es endgültig zu entfernen.

sudo apt-get purge remastersys

Systemback

Mein Favorit aus dem letzten Jahr ist immer noch verfügbar und erhält regelmäßige Updates. Am Aufbau des Backup und ISO Tools hat sich wenig geändert.

Die aktuelle Version 1.8.402 unterstützt Ubuntu 16.04 LTS, kann mit Snap packages umgehen und beherrscht verschiedene Sprachen.

Eigentlich erübrigt sich die Frage nach anderen Tools, denn Systemback deckt in meinen Augen alles ab, was der Nutzer für das Erstellen einer eigenen Distribution auf Ubuntu benötigt.

Dennoch gibt es inzwischen weitere Möglichkeiten sich der Aufgabe "Linux Images erstellen" zu widmen.

systemback

Installation Systemback auf Ubuntu Systemen

Die Installation des Tools ist dank ppa recht einfach.

   

sudo add-apt-repository ppa:nemh/systemback

sudo apt-get update

sudo apt-get install systemback


Distroshare

Hier sieht die Sache schon etwas anders aus. Die Homepage ist leider nicht mehr erreichbar und das Github Repository wurde zuletzt im Jahr 2015 aktualisiert.

Ob das Script noch mit aktuellen Ubuntu Releases funktioniert ist daher fraglich.


Pinguy Builder

Ein weiterer Fork vom guten alten Remastersys ist der Pinguy Builder. Er ist eigentlich für Pinguy OS gedacht. Da dieses auf Ubuntu basiert, können auch andere Systeme damit erstellt oder gesichert werden.

Momentan existieren zwei Versionen. Ein ältere Version 3 basierend auf Ubuntu 14.04 und Beta Version 4 basierend auf Ubuntu 15.04.

Letztere ist unter Ubuntu 16.04 lauffähig.

pinguybuilder

 

Da es sich um einen Fork handelt unterscheidet sich der Pinguybuilder nicht sonderlich von Remastersys oder Systemback.

Eine ISO Erstellung sollte somit einfach von der Hand gehen.

Fertige ISOs können mit dem Startup Disk Creator auf CD oder USB-Stick gebracht werden.

 

Installation Pinguy Builder auf Ubuntu 16.04 LTS

Das Tool setzt die Installation von xresprobe voraus, welches nicht mehr in den offiziellen Repository von Ubuntu vorhanden ist.

Es muss von Hand installiert werden.

wget https://launchpad.net/ubuntu/+source/xresprobe/0.4.24ubuntu9/+build/1274262/+files/xresprobe_0.4.24ubuntu9_amd64.deb

sudo dpkg -i xresprobe_0.4.24ubuntu9_amd64.deb

 

wget http://downloads.sourceforge.net/project/pinguy-os/ISO_Builder/pinguybuilder_4.3-8_all-beta.deb

sudo dpkg -i pinguybuilder_4.3-*

 

Sollte es zu weiteren Problemen mit Abhängigkeiten kommen hilft ein apt-get install -f eventuell schon aus.


Respin

Beim Aufruf der alten Remastersys URL landen Anwender auf Linux Respin. Die Seite verspricht Custom Distros für Debian, Ubuntu und Mint. Im Prinzip stimmt das , allerdings befindet sich der Fork immer noch in der Entwicklung.

Die Pakete für Ubuntu und Mint werden zwar via Github fleißig gepflegt, leider ist ein GUI noch nicht verfügbar und es bleibt nur das CLI für die Verwendung. Was allerdings nicht schlechter als die Oberfläche und auch für verwöhnte Klicker zu meistern ist.

respin

 

Installation auf Ubuntu 16.04

sudo nano /etc/apt/sources.list.d/respin.list

  deb http://ppa.launchpad.net/sergiomejia666/respin/ubuntu xenial main

  deb-src http://ppa.launchpad.net/sergiomejia666/respin/ubuntu xenial main

sudo apt-get install respin

Respin starten und verwenden

sudo respin

Wichtige Respin Optionen

sudo respin backup (normales backup erstellen)

sudo respin backup mein.iso (normales backup mit iso Erstellung)

sudo respin clean (temporäre dateien löschen)


Fazit

Das erfreulichste an diesem Fazit, ist die Tatsache: Auf dem "Custom Distro Tool" Markt hat sich etwas getan und alle hier vorgestellten Tools (Distroshare ist außen vor) haben im ersten Test ohne Probleme ein Image von Ubuntu 16.04 erstellen können.

Somit bleibt es dem Anwender überlassen, welches Tool er nutzt. Da die Anwendungen Respin oder Pinguy Builder sowieso von Remastersys abstammen, ist die Funktionsweise und Handhabung so oder so ähnlich.

Respin machte einen guten Eindruck auf der Konsole, Systemback erfreut sich regelmäßiger Updates und Bugfixes und der Pinguy Builder bringt mit der Beta Version 4 schon Unterstützung für Ubuntu 16.04 mit.

Let's Encrypt - Ein erster Blick auf die kostenlose Zertifizierungsstelle von Mozilla und der EFF

Mozilla, die Electronic Frontier Foundation und weitere wollen in Zukunft mit der Initiative "Lets Encrypt" sichere Server bereitstellen.
Genauer gesagt wollen sich die Partner als CA (Zertifizierungsstelle) in Stellung bringen, um kostenlose SSL/TLS-Zertifikate für Linux Server anzubieten.

Lets_Encrypt
Anders als bei bekannten Anbietern wie Cacert oder StartSSL, sollen bei "Lets Encrypt" zwei Linux Befehle ausreichen, um ein Zertifikat zu generieren es in den Server einzubinden und sofort live zu schalten.
Ob das klappt wird sich zeigen, denn bei den bereits bekannten Anbietern sorgte in der Vergangenheit oft die nicht vorhandene Akzeptanz der Browserhersteller für Probleme, auch die soll sich beim neuen Projekt ändern.


Laut eigenen Aussagen soll das Projekt im Sommer 2015 fertig gestellt werden, einen ersten Einblick konnte sich jeder beim C31c3 verschaffen.
Doch wie steht es momentan um das Projekt und wie soll es im Endeffekt funktionieren.
Eine Installation der bereits vorhandenen Skripte sollte einen ersten Einblick geben.
Referenzsystem ist ein Ubuntu 14.04 mit installiertem Apache.

Voraussetzung

Voraussetzung ist ein installierter Apache Server, mit einer Beispielseite, da Lets-encrypt automatisch eingerichtete Webseiten im Apache erkennt und konfiguriert.
Nginx und anderen Webserver werden in der jetzigen Entwickler Version leider noch nicht unterstützt.

Apache einrichten und Beispielseite konfigurieren

sudo apt-get install apache2
sudo touch /etc/apache2/sites-available/beispiel-le
sudo mkdir /home/beispiel
sudo touch /var/log/apache2/beispiel-access.log
sudo touch /var/log/apache2/beispiel-error.log

Die VirtualHosts Konfiguration sieht nach einer Grundeinrichtung wie folgt aus:

sudo nano /etc/apache2/sites-available/beispiel-le

<VirtualHost server:80>

 ServerName beispiel
 ServerAlias
 DocumentRoot /home/beispiel/
 ServerAdmin prontos@email.de
 CustomLog /var/log/apache2/beispiel-access.log combined
 ErrorLog /var/log/apache2/beispiel-error.log
 LogLevel warn

</VirtualHost>

Webseite aktivieren und Konfiguration neu laden

sudo a2ensite beispiel
sudo service apache2 reload

Testinstallation Lets Encrypt

Zunächst müssen die nötigen Pakete installiert werden.

sudo apt-get install python python-setuptools python-virtualenv python-dev gcc swig dialog libaugeas0 libssl-dev ca-certificates python-m2crypto python-augeas

sudo virtualenv --no-site-packages -p python2 venv

    Running virtualenv with interpreter /usr/bin/python2
    New python executable in venv/bin/python2
    Also creating executable in venv/bin/python
    Installing setuptools, pip...done.

Nun das Git Repository auschecken

sudo git clone  https://github.com/letsencrypt/lets-encrypt-preview.git

Die Python Umgebung verschieben

sudo mv /home/user/venv/ /home/user/lets-encrypt-preview/

Nun kann die eigentliche Installation gestartet werden


cd lets-encrypt-preview
sudo ./venv/bin/python setup.py install

    Installing easy_install-3.4 script to /home/user/lets-encrypt-preview/venv/bin
    Installing easy_install script to /home/user/lets-encrypt-preview/venv/bin

        Using /home/user/lets-encrypt-preview/venv/lib/python2.7/site-packages
        Finished processing dependencies for letsencrypt==0.1

Ist alles ohne Fehler verlaufen, kann LetsEncrypt ausgeführt werden.

sudo ./venv/bin/letsencrypt
        
     Generating key: /etc/apache2/ssl/key-letsencrypt_1.pem               
     x Performing the following challenges:                                 
     x   DVSNI challenge for name beispiel.                                 
     x Created an SSL vhost at                                              
     x /etc/apache2/sites-available/beispiel-le-ssl.conf                    
     x Ready for verification...                                            
     x Waiting for 3 seconds...                                             
     x Expected message (authorization) not received                        
     x Failed Authorization procedure - cleaning up challenges              
     x Cleaning up challenges for beispiel    
        

let-encryptlet-encrypt

Lets Encrypt passt die vorhandene Webseite so an, dass diese auf HTTPS hört und bindet zusätzlich eine TLS/SSL Konfigurationsdatei namens "options-ssl.conf" ein.
Ein Blick in die erzeugte VirtualHosts zeigt die Details.

sudo nano /etc/apache2/sites-available/beispiel-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost 10.8.0.49:443>
 ServerName beispiel
 ServerAlias
 DocumentRoot /home/beispiel/
 ServerAdmin prontos@email.de
 CustomLog /var/log/apache2/beispiel-access.log combined
 ErrorLog /var/log/apache2/beispiel-error.log
 LogLevel warn
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Include /etc/letsencrypt/options-ssl.conf
</VirtualHost>
</IfModule>

Ein weiterer Blick auf die eingebundene Zusatzkonfiguration zeigt typische Sicherheitseinstellungen für Apache Webserver, der ITrig Leser sollte diese bereits aus vergangenen Artikeln kennen.
SSL 2.0 und 3.0 sind deaktiviert, Kompression ist ausgeschaltet, es sind sichere CypherSuites hinterlegt, die Serversignatur ist deaktiviert, usw.

Hier die Konfiguration im Detail:


sudo nano /etc/letsencrypt/options-ssl.conf
    # Baseline setting to Include for SSL sites
    SSLEngine on
    # Intermediate configuration, tweak to your needs
    SSLProtocol             all -SSLv2 -SSLv3
    SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-     ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE$
    SSLHonorCipherOrder     on
    SSLCompression          off
    ServerSignature Off
    AcceptPathInfo Off
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/pdf
    AddDefaultCharset UTF-8
    SSLOptions +StrictRequire
    # Add vhost name to log entries:
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
    LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
    CustomLog /var/log/apache2/access.log vhost_combined
    LogLevel warn
    ErrorLog /var/log/apache2/error.log
    # Always ensure Cookies have "Secure" set (JAH 2012/1)
    #Header edit Set-Cookie (?i)^(.*)(;\s*secure)??((\s*;)?(.*)) "$1; Secure$3$4"

Troubleshooting

Fehlermeldung, wenn die Umgebung nicht richtig gefunden wurde.

sudo ./venv/bin/python lets-encrypt-preview/setup.py install

        running bdist_egg
        running egg_info
        creating letsencrypt.egg-info
        writing dependency_links to letsencrypt.egg-info/dependency_links.txt
        writing requirements to letsencrypt.egg-info/requires.txt
        writing letsencrypt.egg-info/PKG-INFO
        writing top-level names to letsencrypt.egg-info/top_level.txt
        writing entry points to letsencrypt.egg-info/entry_points.txt
        writing manifest file 'letsencrypt.egg-info/SOURCES.txt'
        error: package directory 'letsencrypt' does not exist

Fazit

Zum jetzigen Zeitpunkt ein Urteil zu fällen ist recht schwer. Die Installation ist noch im Entwicklungsstadium und wird, sobald das Projekt produktiv geht, sicherlich einfach von der Hand gehen. Mit den versprochenen zwei Befehlen "sudo apt-get install lets-encrypt" und "lets-encrypt webseitename" kann zwar bis jetzt noch nicht gearbeitet werden, dennoch lädt das Installationsskript automatisch das SSL Modul in den Apache und fragt nach der gewünschten HTTPS Seite. Die Sicherheitseinstellungen die automatisch eingebunden werden sind so gut wie up2date und könnten zu diesem Zeitpunkt belassen werden. (Bei CipherSuites gehen die Meinungen ja bekanntlich auseinander)

Die automatische Einbindung des Zertifikats hat bei disen Versuch nicht geklappt, was nicht weiter verwundert, da die Autorisierung fehlschlägt.

Schon jetzt kann jedoch behauptet werden, dass dieses Projekt wenn dann an der Browserintegration scheitern könnte und nicht an der Bedienung.

Das automatische Erneuern (renew) oder das Zurücknehmen von Zertifikaten (revoke) ist leider noch nicht funktionsfähig, genauso werden andere Webserver wie Nginx vermisst, aber bis zum Sommer ist auch noch etwas Zeit.

Um sich diese zu verkürzen kann das Installationsskript gerne selbst ausprobiert werden, aber bitte nicht auf Produktivsystemen.

github

Ruby auf Ubuntu installieren - so funktioniert es mit der Programmiersprache unter Linux

Um Ruby auf Ubuntu zu installieren gibt es mehrere Möglichkeiten. Drei davon möchte ich heute zeigen. Referenzsystem für die unten gezeigten Beispiele ist Ubuntu 14.04 LTS.

Ruby

Ruby über Ubuntu 14.04 direkt installieren

Ruby wird mit Ubuntu ausgeliefert und es kann mit einem Befehl installiert werden.

sudo apt-get update
sudo apt-get install ruby

Vorteil: Schnelle Installation
Nachteil: keine aktuelle Version (1.9.x)


Ruby über RVM installieren

Ruby hat eine eigene Versionsverwaltung, kurz RVM. Auch damit lässt Ruby installieren, praktischerweise auch eine aktuelle Version.

Zur Installation des Version Managers wird lediglich ein Curl Befehl benötigt.

sudo apt-get update
sudo apt-get install curl
\curl -sSL https://get.rvm.io | bash
    Downloading https://github.com/wayneeseguin/rvm/archive/master.tar.gz

Installing RVM to /home/x/.rvm/
    Adding rvm PATH line to /home/x/.profile /home/x/.mkshrc /home/x/.bashrc /home/x/.zshrc.
    Adding rvm loading line to /home/x/.profile /home/x/.bash_profile /home/x/.zlogin.
Installation of RVM in /home/x/.rvm/ is almost complete:

  * To start using RVM you need to run `source /home/x/.rvm/scripts/rvm`
    in all your open shell windows, in rare cases you need to reopen all shell windows.

    

Im nächsten Schritt müssen ein paar Abhängigkeiten nachinstalliert werden. Zunächst wird dem System mitgeteilt, dass RVM verwendet werden soll.

source /home/x/.rvm/scripts/rvm
rvm requirements
  Checking requirements for ubuntu.
    Installing requirements for ubuntu.
    Updating system
Installing required packages: gawk, libreadline6-dev, libyaml-dev, libgdbm-dev, libncurses5-dev, libtool, libffi-dev.........
Requirements installation successful.

Nun kann die eigentlich Ruby Version installiert werden. Im gleichen Zug werden RubyGems mit installiert. Dabei handelt es sich um eine eigenes Paketsystem, zur Verwaltung verschiedenener Versionen.

rvm install ruby
rvm rubygems current

Vorteil: aktuelle Version mit Versionsverwaltung, für Entwickler
Nachteil: umständlicher zu verwalten

Ruby über ein fremdes Repository installieren

Abschließend noch eine Variante, die für den Endanwender sicherlich am Besten geeignet ist. Als Alternative zum integrierten Ubuntu Repository kann das Repository von Brightbox eingebunden werden Dieses stellt Ruby in den Versionen 1.8, 1.9.3, 2.x und 2.2 zur Verfügung.

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.2
    Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libjs-jquery libruby2.2 rubygems-integration
Suggested packages:
  javascript-common bundler
The following NEW packages will be installed:
  libjs-jquery libruby2.2 ruby2.2 rubygems-integration
0 upgraded, 4 newly installed, 0 to remove and 2 not upgraded.
Need to get 3.545 kB of archives.
After this operation, 15,7 MB of additional disk space will be used.

Vorteil: Einfache Installation
Nachteil: Fremdes Repository, Optimierungen am Quellcode durch Brightbox

Fazit

Bei den gezeigten Varianten sollte jeder eine Möglichkeit finden, Ruby auf das lokale System zu bringen.


Quellen
rvm.io
ruby-lang.org
brightbox.com

Raspberry Pi 2 - OpenELEC und das Boot Problem

Seit einigen Tagen nenne ich einen Raspberry Pi 2 mein Eigen. Diesen mit einem Media Center zu bestücken und zu starten, stelle sich schwieriger heraus als gedacht.

Raspberry Pi 2 - OpenELEC 5.0.x installieren

OpenELEC auf einem Raspberry Pi2 zu installieren, stellt eigentlich keine große Herausforderung dar. Laut Anleitung ist ein System Image, eine SD Karte und ein ImageKonverter notwendig. Die einzelnen Schritte lassen sich auf einem Installations Wiki genau nachlesen. In meinem Fall habe ich die Windows Variante angewendet.

  1. OpenELEC Image herunterladen und entpacken
  2. Win32DiskImager herunterladen und öffnen
  3. SD Formatter herunterladen und SD Karte formatieren (Format Size Adjustment = On)
  4. Entpacktes Image auf die SD Karte schreiben
  5. Fertig

Vielleicht noch zur Info, bei der SD Karte handelte es sich um eine neue Intenso 16 GB Micro SDHC-Card Class 4.

openelec

Die Probleme

Schon beim ersten Bootversuch fingen die Probleme an. Der Bildschirm zeigte den Bootscreen und meldete "/dev/mmcblk0p2 not found", danach hing das System.

Die mehrfache Wiederholung des Installationsvorgangs, sowie die Kontrolle der Konfigurationsdateien auf der Karte brachten ebenfalls keine Erfolg.

Die genannte Partition wurde sogar teilweise beim Bootvorgang gefunden (Zur Erklärung: OpenElec legt ein zweite ext4 Partition an), dennoch blieb das System beim ersten Start aus unerfindlichen Gründen stehen.

Die Lösung

Anscheinend wollte die Kombination aus SD Karte, OpenELEC Image und Raspberry Pi 2 nicht so wie ich, also musste eine Alternative her. Ich dachte mir wenn OpenELEC nicht möchte, dann vielleicht Raspian.

noobs

Praktischerweise gibt es über Noobs (New Out Of The Box Software) für Raspberry Pi 2 eine idiotensichere und zeitschonende Variante Raspian und OpenElec zu installieren.

Also zurück auf Los.

  1. Download Noobs Lite
  2. SD Formatter herunterladen und SD Karte formatieren (Format Size Adjustment = On)
  3. Image entpacken und Dateien auf SD Karte kopieren
  4. Raspberry Pi2 starten
  5. Raspian und OpenELEC installieren (Netzwerkanschluss notwendig)
  6. Gewünschtes System starten

Siehe da, nach dieser Installationsvariante startet nicht nur Raspian sondern auch OpenElec. Es lässt sich zusätzlich ohne Probleme aktualisieren und läuft seit her auch nach dem 20sten Neustart ohne Probleme.

Fazit

Insgesamt eine etwas schwere Geburt... ich kann mir den Fehler zusätzlich nicht erklären, denn das System ist im Endeffekt das gleiche, vermutlich liegt es an einem defektem Installations Image oder dem Schreibvorgang über Windows, denn die SD Karte ist ja die gleiche. Vielleicht recherchiere ich noch einmal, fürs Erste funktioniert es.

Quelle

Datenblumen - Visualisierung von Webseiten, inklusive externes JavaScript

Seit diesem Jahr ist Wired Deutschland als monatliche Zeitschrift für den "gemeinen" Nerd verfügbar. In der aktuellen Printausgabe wurden sogenannte Datenblumen abgedruckt.

Dabei handelt es sich um Visualisierungen von Webseiten, welche verdeutlichen sollen, wie viel Teile einer Webseite aus Inhalten (Bilder, HTML) oder aus Skripten (JavaScript, CSS) bestehen. Letztere dienen meist zur Gestaltung der Webseite in Form von CSS, aber auch als Codeschnipsel für Social Media Buttons von Facebook und Co.

Datenblume

Wired hat in Zusammenarbeit mit OpenDataCity einen Dienst online gestellt, der es ermöglicht solche Datenblumen für jede Webseite zu erstellen. Das Ergebnis ist durchaus interessant, gerade in Betracht auf die Vielfältigkeit der Blüten, denn hier lässt sich gut erkennen, wie viele externe Skripte auf der jeweiligen Seite eingebunden sind.

Datenblumen_caschy

Der reine HTML Inhalt wird auf den Grafiken grün dargestellt, Skripte in rot und Styleinformationen in einem Orangeton. Die zwei Beispiele zeigen, dass meistens Bild- und Javascript Dateien für den Großteil eines Seitencontents verantwortlich sind. Reines HTML tritt nur sporadisch auf.

Eigene Datenblumen gestalten