Hardware Enablement Stack für Ubuntu 14.04 LTS (Trusty Tahr)

Hardware Enablement Stack für Ubuntu 14.04 LTS (Trusty Tahr)

Ubuntu Longterm Support (LTS) Releases erhalten etwa 5 Jahre Support (Updates). In dieser langen Zeit wird jedoch der Linux-Kernel weiter entwickelt und um neuere Features ergänzt. Insbesondere wird neuere Hardware unterstützt. Grund genug, sich zu überlegen, ob man 5 Jahre auf dem selben Kernel bleiben möchte. In einem gesonderten Artikel wird erörtert, wann ein Wechsel auf einen aktuelleren Kernel Sinn macht. Im Folgenden wird beschrieben, wie ein Umstieg erfolgen kann, und welche Aufräumarbeiten man umsetzen sollte.

Disclaimer:

  • Dieser Artikel betrachtet nur die LTS-Version Trusty Tahr 14.04 LTS (bzw. Präfix 14.04). Andere Ubuntu-Versionen werden in diesem Artikel nicht betrachtet.
  • Dieser Artikel erhebt keinen Anspruch auf Richtigkeit oder Vollständigkeit und wendet sich nur an erfahrene Anwender, die sich der Konsequenzen ihres Tuns, unabhängig von diesem Artikel, bewusst sind. Die Durchführung des im Folgenden Beschriebenen erfolgt entsprechend auf eigenes Risiko des Anwenders.

Ubuntu Release-Zyklus in Bezug auf Kernel-Versionen

Ubuntu liefert seine LTS-Releases mit einem Kernel aus, der 5 Jahre unterstützt wird. Wichtige Sicherheitsupdates sollten also auf diesen Kernel zurückportiert werden, mitunter auch einige Bugfixes und sonstige Verbesserungen. Bei Ubuntu 14.04 LTS wird der Kernel 3.13 bis zum April 2019 unterstützt. Sofern man mit Ubuntu 14.04(.x), Kernel 3.13 zufrieden ist, kann man diesen bis April 2019 benutzen.

Nach dem Erscheinen einer LTS-Versionen bietet Ubuntu halbjährlich aktuellere LTS-Installationsmedien an, welche eine aktuellere Kernel-Version enthalten können. Hierbei handelt es sich um sogenannte Point-Releases. Die zugehörige Kernel-Version entspricht der letzten Ubuntu-Version, die vor einem Point-Release veröffentlicht wurde:

  • Ubuntu 14.04.1 LTS mit Kernel 3.13 erhält Kernel-Support bis April 2019 (da der Kernel nicht aktualisiert wurde). Insofern unterscheidet sich Ubuntu 14.04.1 LTS praktisch nicht von Ubuntu 14.04 LTS mit eingespielten Updates.
  • Ubuntu 14.04.2 LTS mit Kernel 3.16, Ubuntu 14.04.3 LTS mit Kernel 3.19 und Ubuntu 14.04.4 LTS mit Kernel 4.2 erhalten Kernel-Support bis August 2016. Im August 2016 ist per Ubuntu 14.04.5 LTS ein Umstiegsmöglichkeit auf den LTS-Kernel von Ubuntu 16.04 LTS geplant, welcher wiederum bis April 2019 unterstützt wird.
  • Ubuntu 14.04.5 mit Kernel 4.4, der Kernel-Version von 16.04 LTS, wird unterstützt bis April 2019. Man kann also mit HES 14.04.5 bis April 2019 bei Ubuntu 14.04.5 LTS bleiben. Alternativ bietet sich ab April 2016 die Migration auf Ubuntu 16.04 LTS an.

In Bezug auf Point-Releases ist zu beachten, dass neuere Kernel-Versionen regulär nur über neue Installationsmedien ausgeliefert werden. Mittels regulärer Updates innerhalb der LTS-Versionen kommt man hingegen nicht in den Genuss eines aktuelleren Kernels (ein Kernel-Update ist durchaus risikobehaftet und erfordert besondere Vorkehrungen, insbesondere ein funktionierendes Backup). Stattdessen kann der Benutzer selbst für einen aktuelleren Kernel optieren, sofern er dies wünscht und alle nötigen Vorkehrungen abgearbeitet sind.

Fazit:

  • Wer den aktuellsten Produktionskernel haben möchte, der benötigt nicht nur das letzte Point-Release, sondern auch den letzten Hardware Enablement Stack.
  • Gibt es jedoch keinen Grund für ein Kernel-Update, dann lässt es sich bis April 2019 auch gut mit dem Kernel 3.13 von Ubuntu 14.04 LTS bzw. 14.04.1 LTS leben. Hierzu muss das System mit Ubuntu 14.04 LTS oder Ubuntu 14.04.1 Installationsmedien installiert werden und es darf kein Hardware Enablement Stack eingespielt werden. Auch wenn Point-Releases (z. B. 14.04.2 LTS) später durch reguläre Updates ausgeliefert werden: Das System bleibt weiterhin auf Kernel 3.13, solange der Anwender keinen neueren HES installiert.

Was ist ein Hardware Enablement Stack?

Ein Hardware Enablement Stack (HES) enthält zumindest einen Linux-Kernel, welcher bezüglich Ubuntu 14.04 LTS aktueller als Kernel 3.13 ist, denn dieser Kernel wurde bereits von Anfang an in Ubuntu 14.04 LTS bzw. 14.04.1 LTS ausgeliefert.

Die Desktop-Variante von Ubuntu 14.04 LTS enthält zur grafischen Darstellung jedoch einen X-Server und es besteht eine Abhängigkeit der Version des X-Servers zur Kernel-Version. Bei einem Kernel-Upgrade ist folglich auch ein Upgrade des X-Servers notwendig. Kernel-Upgrade und X-Server-Upgrade zusammen bezeichnet Ubuntu als "Hardware Enablement Stack". Für Server-Installationen, welche keinen X-Server enthalten, wäre bereits ein aktuellerer Kernel bereits ausreichend.

Ein Hardware Enablement Stack erhält von Ubuntu vollen Support bis zum Supportende des HES. Insbesondere ist ein HES zu Produktionszwecken vorgesehen (genau wie Installationsmedien zu Point-Releases, welche den HES bereits enthalten). Kernelupdates aus Drittquellen oder selbst kompilierte Kernel sind somit in aller Regel obsolet und insbesondere mangels Sicherheitsupdates zumeist zu vermeiden.

Fazit: Der Weg zu offiziell unterstützten aktuelleren Kernelversionen führt über einen neueren Hardware Enablement Stack.

Folgende Begriffe sind synonym zum Hardware Enablement Stack (HES) gebräuchlich:

  • LTS Enablement Stack
  • HWE (für HardWare Enablement)

Um zu ermitteln, ob ein HES überhaupt anwendbar ist, muss zunächst die Ubuntu-Version und die Kernel-Version eines Ubuntu-Systems ermittelt werden, wie im Folgenden beschrieben:

Ubuntu-Version ermitteln

Die Ubuntu-Version eines Ubuntu-Systems lässt sich ermitteln mit:

lsb_release -a

Liefert z. B. für das Point-Release 14.04.2 LTS:

No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:    14.04
Codename:    trusty

Kernel-Version ermitteln

Die Kernel-Version eines Linux-Systems lässt sich ermitteln mit

uname -r

Für den Hardware Enablement Stack 14.04.2 erhält man als Ausgabe z. B.

3.16.0-40-generic

Hier wäre also Kernel 3.16 von HES 14.04.2 bzw. die versionsgleiche Kernel-Version von Ubuntu 14.10 (Utopic Unicorn) installiert.

Update auf HES 14.04.2, Kernel 3.16

HES 14.04.2 liefert Kernel 3.16 aus und ist anwendbar auf

  • Ubuntu 14.04 LTS
  • Ubuntu 14.04.1 LTS
  • Ubuntu 14.04.2 LTS mit Kernel älter als 3.16

HES 14.04.2 wurde am 19.02.2015 veröffentlicht und bis August 2016 unterstützt.

Bei Ubuntu Desktop:

#HES 14.04.2 installieren
sudo apt-get install --install-recommends linux-generic-lts-utopic xserver-xorg-lts-utopic libgl1-mesa-glx-lts-utopic libegl1-mesa-drivers-lts-utopic
#Symlinks umstellen
sudo dpkg-reconfigure xserver-xorg-lts-utopic

Bei Ubuntu Server:

#HES 14.04.2 installieren
sudo apt-get install --install-recommends linux-generic-lts-utopic

Mit der Option -s (apt-get -s) lassen sich die Änderungen zuvor simulieren.

Update auf HES 14.04.3, Kernel 3.19

HES 14.04.3 liefert Kernel 3.19 aus und ist anwendbar auf

  • Ubuntu 14.04 LTS
  • Ubuntu 14.04.1 LTS
  • Ubuntu 14.04.2 LTS
  • Ubuntu 14.04.3 LTS mit Kernel älter als 3.19

HES 14.04.3 wurde am 06.08.2015 veröffentlicht und bis August 2016 unterstützt. Analog zu früheren HES-Installationen müsste das Paket libegl1-mesa-drivers-lts-vivid installiert werden, jedoch existiert libegl1-mesa-drivers-lts-vivid nicht mehr. Um die Abhängigkeiten aufzulösen, wird daher erstmalig das Paket libegl1-mesa-lts-vivid installiert. Auf die Installation des Paketes libwayland-egl1-mesa-lts-vivid wird im Folgenden aus Gründen der Kontinuität verzichtet. Das Paket linux-lts-vivid-tools wird zwar vorgeschlagen, existiert jedoch nicht. Optional kann man das Paket linux-lts-vivid-tools-common installieren, welches laut der Metadaten des Pakets das Paket linux-lts-vivid-tools ersetzt (Server und Desktop). Allerdings enthält es keine Abhängigkeit zu den kernelspezifisischen Paketen linux-lts-vivid-tools-3.19.0-x.

Bei Ubuntu Desktop:

#HES 14.04.3 installieren
sudo apt-get -s install --install-recommends linux-generic-lts-vivid xserver-xorg-lts-vivid libgl1-mesa-glx-lts-vivid libegl1-mesa-lts-vivid
#Symlinks umstellen
sudo dpkg-reconfigure xserver-xorg-lts-vivid

Bei Ubuntu Server:

#HES 14.04.3 installieren
sudo apt-get -s install --install-recommends linux-generic-lts-vivid

Mit der Option -s (apt-get -s) lassen sich die Änderungen zuvor simulieren.

Update auf HES 14.04.4, Kernel 4.2

HES 14.04.4 liefert Kernel 4.2 aus und ist anwendbar auf

  • Ubuntu 14.04 LTS
  • Ubuntu 14.04.1 LTS
  • Ubuntu 14.04.2 LTS
  • Ubuntu 14.04.3 LTS
  • Ubuntu 14.04.4 LTS mit Kernel älter als 4.2

HES 14.04.4 wurde am 11.02.2016 veröffentlicht und wird bis August 2016 unterstützt.

Bei Ubuntu Desktop:

#HES 14.04.4 installieren
sudo apt-get -s install --install-recommends linux-generic-lts-wily xserver-xorg-lts-wily libgl1-mesa-glx-lts-wily libegl1-mesa-lts-wily
#Symlinks umstellen
sudo dpkg-reconfigure xserver-xorg-lts-wily

Bei Ubuntu Server:

#HES 14.04.4 installieren
sudo apt-get -s install --install-recommends linux-generic-lts-wily

Mit der Option -s (apt-get -s) lassen sich die Änderungen zuvor simulieren.

Update auf HES 14.04.5, Kernel 4.4

HES 14.04.5 liefert Kernel 4.4 aus und ist anwendbar auf

  • Ubuntu 14.04 LTS
  • Ubuntu 14.04.1 LTS
  • Ubuntu 14.04.2 LTS
  • Ubuntu 14.04.3 LTS
  • Ubuntu 14.04.4 LTS
  • Ubuntu 14.04.5 LTS mit Kernel älter als 4.4

HES 14.04.5 wird voraussichtlich im August 2016 veröffentlicht und bis April 2019 unterstützt.

Bei Ubuntu Desktop:

#HES 14.04.5 installieren
sudo apt-get -s install --install-recommends linux-generic-lts-xenial xserver-xorg-lts-xenial libgl1-mesa-glx-lts-xenial libegl1-mesa-lts-xenial
#Symlinks umstellen
sudo dpkg-reconfigure xserver-xorg-lts-xenial

Bei Ubuntu Server:

#HES 14.04.5 installieren
sudo apt-get -s install --install-recommends linux-generic-lts-xenial

Mit der Option -s (apt-get -s) lassen sich die Änderungen zuvor simulieren.

Alte Kernel deinstallieren

Bei Installation eines Hardware Enablement Stacks (HES) werden ältere Kernel-Versionen zur Sicherheit nicht deinstalliert. Diese lassen sich weiterhin im Boot-Menü auswählen, jedoch sollte man dies nur bei Rettungsaktionen ins Auge fassen, denn alte Kernel vertragen sich nicht zwingend mit bereits aktualisierten Komponenten (z. B. X-Server).

Ist man jedoch zufrieden mit dem neueren Kernel und insbesondere ein Neustart problemlos möglich, dann kann man sich überlegen, ob man den älteren Kernel nicht deinstallieren möchte. Dies hätte folgende Vorteile:

  • Man erhält keine Updates mehr für den ohnehin nicht mehr genutzten älteren Kernel. Die Datenübertragung und Einspielung dieser Updates entfällt somit komplett.
  • Speicherplatz und Dateisystem werden entlastet.
  • Das Backup wird entlastet. Das Volumen kann mehrere GB betragen und auch die Anzahl der eingesparten Dateien ist relevant.

Im Folgenden ist wichtig, dass man nicht versehentlich den aktuell geladenen Kernel (uname -r) deinstalliert. Ansonsten bootet das Ubuntu-System wahrscheinlich nicht mehr. Insofern empfielt es sich, neben einem Backup auch ein separates Bootmedium bereitzuhalten, z. B. eine SystemRescueCD.

Einen Überblick über aktuell installierte Kernel kann man sich verschaffen mit

dpkg -l linux* | grep ii

ii linux-generic 3.13.0.54.61
ii linux-generic-lts-utopic 3.16.0.40.32
ii linux-headers-3.13.0-40 3.13.0-40.69
[...]

Bei Verwendung von BTRFS könnte eine Balancierung des BTRFS-Dateisystems vor (ermöglicht größere Löschaktivitäten bei "voller" Festplatte) und nach (gibt Speicherplatz frei) der Deinstallation der Kernel-Pakete sinnvoll sein.

Kernel 3.13 deinstallieren

Nach erfolgreicher Einspielung von HES 14.04.2 (Kernel 3.16) kann man den Kernel 3.13 deinstallieren bzw. dies mit der Option -s simulieren:

sudo apt-get -s remove linux-generic linux-headers-generic linux-image-generic "^linux-.*3\.13.*$"

Die folgenden Pakete werden ENTFERNT:
  linux-headers-3.13.0-40 linux-headers-3.13.0-40-generic
  linux-image-3.13.0-40-generic linux-image-3.13.0-44-generic
  linux-image-extra-3.13.0-40-generic linux-image-extra-3.13.0-44-generic [...]
0 aktualisiert, 0 neu installiert, 32 zu entfernen und 0 nicht aktualisiert.

Nun ist zu prüfen, dass der aktuell verwendete Kernel nicht enthalten ist und keine benötigten Pakete entfernt werden. Die tatsächliche Ausführung lässt sich mit Enfernen der Option -s erzielen.

Kernel 3.16 von HES 14.04.2 deinstallieren

Nach erfolgreicher Einspielung von HES 14.04.3 (Kernel 3.19) kann man den Kernel 3.16 deinstallieren bzw. dies mit der Option -s simulieren:

sudo apt-get -s remove linux-generic-lts-utopic linux-headers-generic-lts-utopic linux-image-generic-lts-utopic "^linux-.*3\.16.*$"

Die folgenden Pakete werden ENTFERNT:
  linux-generic-lts-utopic linux-headers-3.16.0-31
  linux-headers-3.16.0-31-generic linux-headers-3.16.0-41
  linux-headers-3.16.0-41-generic linux-headers-3.16.0-44 [...]
0 aktualisiert, 0 neu installiert, 19 zu entfernen und 0 nicht aktualisiert.

Nun ist zu prüfen, dass der aktuell verwendete Kernel nicht enthalten ist und keine benötigten Pakete entfernt werden. Die tatsächliche Ausführung lässt sich mit Enfernen der Option -s erzielen.

Kernel 3.19 von HES 14.04.3 deinstallieren

Nach erfolgreicher Einspielung von HES 14.04.4+ (Kernel 4.2+) kann man den Kernel 3.19 von HES 14.04.3 deinstallieren bzw. dies mit der Option -s simulieren:

sudo apt-get -s remove linux-generic-lts-vivid linux-headers-generic-lts-vivid linux-image-generic-lts-vivid "^linux-.*3\.19.*$"

Die folgenden Pakete werden ENTFERNT:
  linux-generic-lts-vivid linux-headers-3.19.0-31
  linux-headers-3.19.0-31-generic linux-headers-3.19.0-41
  linux-headers-3.19.0-41-generic linux-headers-3.19.0-44 [...]
0 aktualisiert, 0 neu installiert, 19 zu entfernen und 0 nicht aktualisiert.

Nun ist zu prüfen, dass der aktuell verwendete Kernel nicht enthalten ist und keine benötigten Pakete entfernt werden. Die tatsächliche Ausführung lässt sich mit Enfernen der Option -s erzielen.

Kernel 4.2 von HES 14.04.4 deinstallieren

Nach erfolgreicher Einspielung von HES 14.04.4+ (Kernel 4.4+) kann man den Kernel 4.2 von HES 14.04.4 deinstallieren bzw. dies mit der Option -s simulieren:

sudo apt-get -s remove linux-generic-lts-wily linux-headers-generic-lts-wily linux-image-generic-lts-wily "^linux-.*4\.2.*$"

Die folgenden Pakete werden ENTFERNT:
  linux-generic-lts-wily linux-headers-4.2.0-31
  linux-headers-4.2.0-31-generic linux-headers-4.2.0-41
  linux-headers-4.2.0-41-generic linux-headers-4.2.0-44 [...]
0 aktualisiert, 0 neu installiert, 19 zu entfernen und 0 nicht aktualisiert.

Nun ist zu prüfen, dass der aktuell verwendete Kernel nicht enthalten ist und keine benötigten Pakete entfernt werden. Die tatsächliche Ausführung lässt sich mit Enfernen der Option -s erzielen.

Alte Kernel-Updates deinstallieren

Mit uname -r lässt sich der aktuell verwendete Kernel ermitteln, z. B. im Folgenden 3.16.0-40-generic. Mit

dpkg -l linux* | grep ii | grep 3.16

lässt sich prüfen, welche Kernel-Updates zwischenzeitlich installiert wurden. Es empfiehlt sich, z. B. nur die älteste (funktionierende!) und die neueste Fassung zu behalten.

Alle Versionen dazwischen lassen sich entfernen mit

sudo apt-get remove --purge linux-image-3.16.0-xx-generic linux-headers-3.16.0-xx
sudo apt-get autoremove

Eine erneute Prüfung liefert nun nur noch den ältesten und den neuesten (den verwendeten) Kernel:

dpkg -l linux* | grep ii | grep 3.16

ii  linux-generic-lts-utopic                              3.16.0.40.32
ii  linux-headers-3.16.0-31                               3.16.0-31.43~14.04.1
ii  linux-headers-3.16.0-31-generic                       3.16.0-31.43~14.04.1
ii  linux-headers-3.16.0-40                               3.16.0-40.54~14.04.1
ii  linux-headers-3.16.0-40-generic                       3.16.0-40.54~14.04.1
ii  linux-headers-generic-lts-utopic                      3.16.0.40.32
ii  linux-image-3.16.0-31-generic                         3.16.0-31.43~14.04.1
ii  linux-image-3.16.0-40-generic                         3.16.0-40.54~14.04.1
ii  linux-image-extra-3.16.0-31-generic                   3.16.0-31.43~14.04.1
ii  linux-image-extra-3.16.0-40-generic                   3.16.0-40.54~14.04.1
ii  linux-image-generic-lts-utopic                        3.16.0.40.32