Dokumentacja programu TLP

Z ThinkPad-Wiki

Przejdź do: nawigacja, szukaj

Spis treści

Grupa docelowa

Niniejsza instrukcja jest skierowana do programistów oraz osób tworzących pakiety, które chcą dostosować TLP i udostępnić go dla kolejnych dystrybucji Linuksa.

Jeśli chcesz tylko używać TLP, przejdź tutaj.

Wprowadzenie

TLP składa się – poza stronami podręcznika (manpages) i dokumentacją – wyłącznie ze skryptów powłoki zgodnych z POSIX (tzn. bez rozszerzeń Bash).

Pobieranie kodu źródłowego

Kod źródłowy TLP jest udostępniany na github.com. Źródła pobiera się poleceniem:

git clone git://github.com/linrunner/TLP.git
git checkout 0.3.1 # bzw. aktuelle Version

Dziennik zmian (changelog) bieżącej wersji znajduje się tutaj.

Alternatywnie można pobrać źródła wersji wydań z TLP-PPA (tlp_VERSION.orig.tar.gz) – należy użyć wersji dla Lucid.

Tworzenie archiwum źródłowego

Przy tworzeniu archiwum źródłowego dla repozytoriów pakietów należy zadbać o to, aby zamiast TLP.git/ spakować katalog z numerem wersji w nazwie oraz pominąć katalogi debian/ i .git/:

ln -s TLP.git tlp-VERSION
tar --exclude=debian --exclude=.git -cvz -f tlp-VERSION.tar.gz tlp-VERSION/

Składniki programu

Tabela 1 zawiera zawartość archiwum źródłowego tlp_VERSION.orig.tar.gz:

PlikMiejsce instalacjiZastosowanie
49bay/usr/lib/pm-utils/sleep.d/Skrypt do zapisywania i przywracania stanu przełączenia wnęki wymiennej (Ultrabay). Jest wywoływany przez pm-utils przed uśpieniem (suspend) lub hibernacją oraz po następującym po nich wznowieniu (resume).
49wwan/usr/lib/pm-utils/sleep.d/Skrypt do zapisywania i przywracania stanu przełączenia WWAN. Jest wywoływany przez pm-utils przed uśpieniem (suspend) lub hibernacją oraz po następującym po nich wznowieniu (resume).
default/etc/default/Główny plik konfiguracyjny.
tlp/usr/sbin/Główny program TLP.
tlp.desktop/etc/xdg/autostart/Autostart po zalogowaniu użytkownika (obecnie bez funkcji).
tlp-functions/usr/lib/tlp-pm/Ogólna biblioteka funkcji.
tlp-ifup/etc/networking/if-up.d/Skript zum Setzen des WLAN-Power-Save-Modus:
  • jest zawsze wywoływany przez system po uruchomieniu interfejsu IP
  • staje się aktywny tylko wtedy, gdy jest to interfejs WLAN

Miejsce instalacji oraz sam skrypt muszą w razie potrzeby zostać dostosowane do danej dystrybucji.

tlp.init/etc/init.d/tlpSkrypt startowy systemu (SysV) – wyłącza urządzenia radiowe i ustawia progi ładowania akumulatora.
tlp-nop/usr/lib/tlp-pm/Skrypt pusty – zwraca rc=0.
tlp-rf/usr/bin/bluetooth
wifi
wwan
Główny program do przełączania urządzeń radiowych (3 twarde dowiązania do tego samego skryptu).
tlp-rf-func/usr/lib/tlp-pm/Biblioteka funkcji do przełączania urządzeń radiowych.
tlp-run-on/usr/bin/run-on-bat
run-on-ac
Warunkowe uruchamianie poleceń w zależności od aktywnego źródła zasilania (2 twarde dowiązania do tego samego skryptu).
tlp-stat/usr/bin/Raport o stanie wszystkich aktywnych ustawień.
tlp.upstartn/aSkrypt startowy systemu dla Upstart (obecnie nieużywany).
zztlp/usr/lib/pm-utils/power.d/Skript zum Setzen aller Einstellungen in Abhängigkeit von der aktiven Stromquelle:
  • wywołuje tlp
  • jest wywoływany przez pm-utils przy każdej zmianie źródła zasilania oraz przy starcie systemu (przez pm-powersave)
man/bluetooth.1
run-on-ac.1
run-on-bat.1
tlp.8
tlp-stat.8
wifi.1
wwan.1
n/aStrony podręcznika dla poleceń o tych samych nazwach. Instalacja zależy od dystrybucji, dlatego nie jest ujęta w pliku Makefile.
Makefilen/aInstalacja wszystkich skryptów i pliku konfiguracyjnego w podanych miejscach instalacji.
READMEn/aREADME do TLP. Miejsce instalacji zależy od dystrybucji, dlatego nie jest ujęte w pliku Makefile.
COPYINGn/aInformacje o prawach autorskich – licencja GPL v2. Miejsce instalacji zależy od dystrybucji, dlatego nie jest ujęte w pliku Makefile. Instalacja tego pliku w systemie docelowym (lub dołączenie go do szablonu specyficznego dla dystrybucji) służy zachowaniu zgodności z licencją.
LICENSEn/aInformacje o autorze programu.

Tabela 1 – Kod źródłowy

Metadane specyficzne dla Ubuntu i Debiana, wymienione w tabeli 2, mogą być przydatne jako wzór do tworzenia pakietów. Uzyskuje się je, nakładając łatkę na rozpakowane źródła za pomocą

zcat tlp_VERSION.diff.gz | patch -p1
PlikZastosowanie
debian/controlZawiera krótkie opisy TLP.
debian/changelogDziennik zmian (changelog) TLP.
debian/tlp.postinstSkrypt, który należy wykonać po instalacji pakietu – zob. sekcja Skrypty instalacyjne.
debian/tlp.postrmSkrypt, który należy wykonać po usunięciu pakietu – zob. sekcja Skrypty instalacyjne.

Tabela 2 - Metadane dla Ubuntu/Debian

Zależności

TLP opiera się na następujących narzędziach, które powinny zostać dodane jako zależności przez utworzony pakiet:

pm-utils

(zawsze wymagane)

Udostępnia framework do wywoływania TLP przy każdej zmianie źródła zasilania.

Wskazówka: pm-utils oferuje za pomocą skryptów w katalogu /usr/lib/pm-utils/power.d/ różne funkcje oszczędzania energii, które zapewnia również TLP. Dlatego przy instalacji TLP skrypty pm-utils należy wyłączyć. Jak to zrobić, opisuje sekcja Skrypty instalacyjne.

on_ac_power

(zawsze wymagane)

on_ac_power to skrypt służący do sprawdzania, czy zasilacz jest podłączony. „Miejsce występowania” różni się w zależności od dystrybucji: w Debianie i pochodnych jest dostarczany z pakietem powermgmt-base, w Arch Linux jest zawarty w pm-utils.

hdparm

(zawsze wymagane)

Wymagane do funkcji oszczędzania energii (APM) dla dysków twardych oraz do wyświetlania danych w tlp-stat.

wireless-tools

(zawsze wymagane)

Wymagane do funkcji oszczędzania energii Wi-Fi (iwconfig) oraz do przełączania urządzeń radiowych (rfkill).

Wskazówka: rfkill jest w niektórych dystrybucjach dostępny jako osobny pakiet.

dmidecode

(zawsze wymagane)

Wymagane do rozpoznawania modeli ThinkPad i do wyświetlania informacji o systemie w tlp-stat.

ethtool

(opcjonalnie)

Wymagane do wyłączania Wake On LAN.

smartmontools

(opcjonalnie)

Umożliwia tlp-stat wyświetlanie wartości SMART dysków twardych (smartctl).

tp-smapi

(opcjonalnie w ThinkPadach)

Wymagane do ustawiania progów ładowania akumulatora w ThinkPadach. Są to moduły jądra, których implementacja, ze względu na zależność od wersji jądra, może się bardzo różnić w zależności od dystrybucji. Dlatego nie ma sensu wpisywać bezpośredniej zależności w pakiecie TLP.

Uruchamianie systemu

Podczas instalacji pakietu /etc/init.d/tlp musi zostać dołączony do runlevelów za pomocą metody przewidzianej w docelowej dystrybucji (w Suse np. przez chkconfig). Jeśli docelowa dystrybucja nie obsługuje skryptów SysV, należy zaimplementować własny skrypt, który przejmie odpowiednie funkcje z tlp.init.

Skrypty instalacyjne

Jak wspomniano w sekcji pm-utils, składniki pm-utils należy wyłączyć.

Odbywa się to w ten sposób, że dla każdego skryptu pm-utils z katalogu /usr/lib/pm-utils/power.d/ tworzy się w katalogu /etc/pm/power.d/ skrypt o identycznej nazwie, lecz bez funkcji. Dla uproszczenia ustawia się dowiązanie symboliczne do /usr/lib/tlp-pm/tlp-nop.

Ważne: Dowiązania należy po usunięciu pakietu TLP poprawnie usunąć.

Kod skryptu po instalacji pakietu

# 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

Kod skryptu po usunięciu pakietu

# 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

Gotowy, zainstalowany pakiet najlepiej przetestować z włączonym trace:

TLP_DEBUG="run rf pm usb sysfs path"

Wykaz portów

Jak dotąd TLP został (oprócz Ubuntu / Debiana) spakowany dla następujących dystrybucji:

  • Arch Linux (instrukcja instalacji w wiki) - status: zatwierdzony
  • Gentoo (instrukcja instalacji w wiki) - status: zatwierdzony
  • OpenSUSE – status: zatwierdzony

Dziennik zmian tej dokumentacji

  • 13.06.2011 - uzupełniono dokumentację Git, lista portów
  • 25.05.2011 - repozytorium Git
  • 25.04.2011 - dodano zależności od dmidecode, hdparm, on_ac_power
  • 20.04.2011 - wersja początkowa
Narzędzia osobiste
Think-Wiki