TLP Programmdokumentation: Unterschied zwischen den Versionen

Aus ThinkPad-Wiki
(Link)
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Zielgruppe ==
'''Die aktuelle Entwicklerdokumentation für TLP gibt es [http://linrunner.de/en/tlp/docs/tlp-developer-documentation.html hier] (englisch).'''
Diese Anleitung wendet sich an Programmierer bzw. Paketierer, die TLP anpassen und für weitere Linux-Distributionen verfügbar machen wollen.
 
'''Wer TLP nur benutzen möchte, liest bitte [[TLP_-_Stromspareinstellungen_fuer_Ubuntu|hier]] weiter.'''
== Einleitung ==
TLP besteht - abgesehen von Manpages und Dokumentation - ausschließlich aus POSIX-kompatiblen Shell-Skripten (d.h. ohne Bash-Erweiterungen).
 
== Download des Quellcodes ==
Der Quellcode von TLP wird auf [https://github.com/linrunner/TLP github.com] bereitgestellt. Die Quellen checkt man aus mit:
git clone git://github.com/linrunner/TLP.git
git checkout 0.3.0.202-dev # bzw. aktuelle Version
 
Ein Changelog der aktuellen Version findet sich [https://github.com/linrunner/TLP/blob/master/debian/changelog hier].
 
Alternativ kann man die Quellen der Releaseversionen im [https://launchpad.net/~linrunner/+archive/tlp/+packages?field.name_filter=&field.status_filter=published&field.series_filter=lucid TLP-PPA] herunterladen (tlp_VERSION.orig.tar.gz) - zu verwenden ist die Version für Lucid.
 
== Erzeugen eines Source-Archivs ==
Beim Erzeugen eines Source-Archivs für Paketquellen, sollte man darauf achten, statt '''TLP.git/''' einen Verzeichnispfad mit der Version einzupacken und außerdem die Verzeichnisse '''debian/''' und '''.git/''' auszusparen:
ln -s TLP.git tlp-0.3.0.202
tar --exclude=debian --exclude=.git -cvz -f tlp-0.3.0.202.tar.gz tlp-0.3.0.202/
 
== Programmbestandteile ==
Tabelle 1 listet die Inhalte des Source-Tarballs '''tlp_VERSION.orig.tar.gz''' auf:
{| border="1"
! width="15%" |Datei
! width="20%" |Installationsort
! width="65%" |Verwendung
|-
|49bay
|/usr/lib/pm-utils/sleep.d/
|Skript zum Sichern und Wiederherstellen des Wechselschacht- bzw. Ultrabay-Schaltzustands. Wird von pm-utils vor einem Suspend bzw. Hibernate und nach dem darauffolgenden Resume aufgerufen.
|-
|49wwan
|/usr/lib/pm-utils/sleep.d/
|Skript zum Sichern und Wiederherstellen des WWAN-Schaltzustands. Wird von pm-utils vor einem Suspend bzw. Hibernate und nach dem darauffolgenden Resume aufgerufen.
|-
|default
|/etc/default/
|Zentrale Konfigurationsdatei.
|-
|tlp
|/usr/sbin/
|TLP-Hauptprogramm.
|-
|tlp.desktop
|/etc/xdg/autostart/
|Autostart nach der Benutzeranmeldung (derzeit ohne Funktion).
|-
|tlp-functions
|/usr/lib/tlp-pm/
|Funktionsbibliothek allgemein.
|
|-
|tlp-ifup
|/etc/networking/if-up.d/
|Skript zum Setzen des WLAN-Power-Save-Modus:
* wird vom System stets nach dem Start eines IP-Interfaces aufgerufen
* wir nur aktiv, wenn es sich um ein WLAN-Interface handelt
Installationsort und das Skript selbst müssen ggf. distributionsspezifisch angepaßt werden.
|-
|tlp.init
|/etc/init.d/tlp
|Systemstartskript (SysV) - schaltet Funkgeräte aus und setzt die Akkuladeschwellen.
|-
|tlp-nop
|/usr/lib/tlp-pm/
|Dummyskript - liefert rc=0.
|-
|tlp-rf
|/usr/bin/bluetooth
:wifi
:wwan
|Hauptprogramm zum Schalten der Funkgeräte (3 Hardlinks auf dasselbe Skript).
|-
|tlp-rf-func
|/usr/lib/tlp-pm/
|Funktionsbibliothek zum Schalten der Funkgeräte.
|-
|tlp-run-on
|/usr/bin/run-on-bat
:run-on-ac
|Bedingtes Starten von Befehlen in Abhängigkeit von der aktiven Stromquelle (2 Hardlinks auf dasselbe Skript).
|
|-
|tlp-stat
|/usr/bin/
|Statusbericht aller aktiven Einstellungen.
|-
|tlp.upstart
|n/a
|Systemstartskript für Upstart (derzeit nicht verwendet).
|-
|zztlp
|/usr/lib/pm-utils/power.d/
|Skript zum Setzen aller Einstellungen in Abhängigkeit von der aktiven Stromquelle:
* ruft tlp auf
* wird von pm-utils bei jedem Wechsel der Stromquelle sowie beim Systemstart aufgerufen (via pm-powersave)
|
|-
|man/bluetooth.1
:run-on-ac.1
:run-on-bat.1
:tlp.8
:tlp-stat.8
:wifi.1
:wwan.1
|n/a
|Manpages für die gleichnamigen Kommandos. Installation ist distributionsspezifisch und daher nicht im Makefile enthalten.
|-
|Makefile
|n/a
|Installation aller Skripte und der Konfigurationsdatei an die angegebenen Installationsorte.
|-
|README
|n/a
|README zu TLP. Installationsort ist distributionsspezifisch und daher nicht im Makefile enthalten.
|
|-
|COPYING
|n/a
|Angaben zum Copyright - Lizenzierung nach GPL v2. Installationsort ist distributionsspezifisch und daher nicht im Makefile enthalten. Die Installation dieser Datei auf dem Zielsystem (oder die Aufnahme in ein distributionsspezifisches Template) ist dient zur Einhaltung der Lizenz.
|-
|LICENSE
|n/a
|Angaben zum Programmautor.
|}
'''Tabelle 1 - Quellcode'''
 
Die in Tabelle 2 aufgeführten Ubuntu- bzw. Debian-spezifischen Metadaten können als Vorlage für die Paketierung nützlich sein. Man erhält sie durch Patchen der ausgepackten Quellen per
zcat tlp_VERSION.diff.gz | patch -p1
 
{| border="1"
! width="20%" |Datei
! width="65%" |Verwendung
|-
|debian/control
|Enthält Kurzbeschreibungen von TLP.
|-
|debian/changelog
|Changelog von TLP.
|-
|debian/tlp.postinst
|Skript das nach der Installation des Pakets auszuführen ist - siehe Abschnitt [[TLP_Programmdokumentation#Installationsskripte|Installationsskripte]].
|-
|debian/tlp.postrm
|Skript das nach dem Entfernen des Pakets auszuführen ist - siehe Abschnitt [[TLP_Programmdokumentation#Installationsskripte|Installationsskripte]].
|}
'''Tabelle 2 - Metadaten von Ubuntu/Debian'''
 
== Abhängigkeiten ==
TLP baut auf den folgenden Tools auf, die vom erstellten Paket als Abhängigkeiten angezogen werden sollten:
=== pm-utils ===
'''(immer erforderlich)'''
 
Stellt das Framework bereit, um TLP beim jedem Wechsel der Stromquelle aufzurufen.
 
<u>Hinweis:</u> pm-utils bietet durch die Skripte im Verzeichnis '''/usr/lib/pm-utils/power.d/''' diverse Stromsparfunktionen an, die auch durch TLP bereitgestellt werden. Daher sollten bei der Installation von TLP die pm-utils-Skripte deaktiviert werden. Wie das geht beschreibt der Abschnitt [[TLP_Programmdokumentation#Installationsskripte|Installationsskripte]].
 
=== on_ac_power ===
'''(immer erforderlich)'''
 
on_ac_power ist ein Skript, um festzustellen, ob das Netzteil angeschlossen ist. Die "Fundstelle" variert ja nach Distribution: bei Debian und Derivaten kommt es mit dem Paket powermgmt-base, bei Arch Linux ist es in pm-utils enthalten.
 
=== hdparm ===
'''(immer erforderlich)'''
 
Wird für die Stromsparfunktion (APM) der Festplatten und für das Anzeigen von Daten in tlp-stat benötigt.
 
=== wireless-tools ===
'''(immer erforderlich)'''
 
Wird für die WLAN-Stromsparfunktionen (iwconfig) und für das Schalten der Funkgeräte (rfkill) benötigt.
 
<U>Hinweis:</u> '''rfkill''' wird von manchen Distributionen als separates Paket abgebildet.
 
=== dmidecode ===
'''(immer erforderlich)'''
 
Wird zum Erkennen von ThinkPad-Modellen und zur Anzeige von Systeminfos in tlp-stat benötigt.
 
=== ethtool ===
'''(optional)'''
 
Wird für das Deaktivieren von Wake On LAN benötigt.
 
=== smartmontools ===
'''(optional)'''
 
Ermöglicht tlp-stat das Anzeigen von SMART-Werten zu den Festplatten (smartctl).
 
=== tp-smapi ===
'''(optional bei ThinkPads)'''
 
Wird für das Einstellen von Akkuladenschwellen bei ThinkPads benötigt. Es handelt sich um Kernelmodule, deren Implementierung, wegen der Abhängigkeit zur Kernelversion, je nach Distribution sehr unterschiedlich sein kann. Es macht daher keinen Sinn eine direkte Abhängigkeit ins TLP-Paket zu schreiben.
 
== Systemstart ==
Bei der Paketinstallation muß '''/etc/init.d/tlp''' mit der vorgesehenen Methode der Zieldistribution in die Runlevel eingehängt werden (bei Suse z.B. mit chkconfig). Unterstützt die Zieldistribution keine SysV-Skripte, ist ein eigenes Skript zu implementieren, das die relevanten Funktionen aus '''tlp.init''' übernimmt.
 
== Installationsskripte ==
Wie im Abschnitt [[TLP_Programmdokumentation#pm-utils|pm-utils]] bereits angesprochen, sind Bestandteile von pm-utils zu deaktivieren.
 
Das geschieht, indem zu jedem pm-utils-Skript aus dem Verzeichnis '''/usr/lib/pm-utils/power.d/''' im Verzeichnis''' /etc/pm/power.d/''' ein Skript mit identischem Namen, jedoch ohne Funktion, angelegt wird. Der Einfachheit halber wird ein Symlink auf '''/usr/lib/tlp-pm/tlp-nop''' gesetzt.
 
<u>Wichtig:</u> Die Links sind nach dem Enfernen des TLP-Pakets wieder sauber zu entfernen.
 
=== Skriptcode nach der Paketinstallation ===
# Disable conflicting pm-utils hooks
for i in 95hdparm-apm disable_wol hal-cd-polling intel-audio-powersave laptop-mode \
          journal-commit pcie_aspm sata_alpm sched-powersave wireless \
          xfs_buffer; do
    if [ -x /usr/lib/pm-utils/power.d/$i ]; then
        ln -sf /usr/lib/tlp-pm/tlp-nop /etc/pm/power.d/$i
    fi
done
 
=== Skriptcode nach dem Entfernen des Pakets ===
# Remove pm-utils hook disablers
for i in 95hdparm-apm disable_wol hal-cd-polling intel-audio-powersave laptop-mode \
          journal-commit pcie_aspm sata_alpm sched-powersave wireless \
          xfs_buffer; do
    if [ "$(readlink /etc/pm/power.d/$i)" = "/usr/lib/tlp-pm/tlp-nop" ]; then
        rm /etc/pm/power.d/$i
    fi
done
 
== Test ==
Das fertige, installierte Paket sollte man am besten mit aktiviertem Trace testen:
TLP_DEBUG="run rf pm usb sysfs path"
 
== Verzeichnis der Portierungen ==
Bisher wurde TLP (neben Ubuntu / Debian) für folgende Distributionen paketiert:
 
* [http://aur.archlinux.org/packages.php?ID=48464 Arch Linux] ([https://wiki.archlinux.org/index.php/Tlp Installationsanleitung im Wiki]) - Status: freigegeben
* [https://build.opensuse.org/package/show?package=tlp&project=home%3Acdersch OpenSUSE] - Status: in Arbeit
* [https://github.com/dywisor/tlp-gentoo Gentoo] - Status: in Arbeit
 
== Changelog für diese Dokumentation ==
* 13.06.2011 - Git Doku ergänzt, Liste der Portierungen
* 25.05.2011 - Git Repository
* 25.04.2011 - Abhängigkeiten zu dmidecode, hdparm, on_ac_power hinzugefügt
* 20.04.2011 - initiale Version

Aktuelle Version vom 30. Mai 2012, 10:07 Uhr

Die aktuelle Entwicklerdokumentation für TLP gibt es hier (englisch).