Tak predsa len ešte jeden dodatok, niekomu by to mohlo pomôcť. Tentokrát to bude trocha drsnejšie

Keď som pomerne nedávno menil dosku, tak ma pri sensors-detect privítala takáto hláška (úryvok z dlhého výpisu):
...
Trying family `SMSC'... No
Trying family `VIA/Winbond/Nuvoton/Fintek'... Yes
Found unknown chip with ID 0xc562
(logical device B has address 0x290, could be sensors)
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor'... No
...
Takže sensors-detect našiel, že je prítomný "nejaký" čip. Ale potom žiadne senzory z dosky neboli zobrazené.
Pre informáciu, ide o tento čip, Nuvoton NCT6779D:

Ta nepríjemná hláška je dôsledkom toho, že lm-sensors nemá ovládač k danému čipu a nevie s ním preto pracovať. S novým hardvérom sa také veci stávajú. Povedal som si, že označenie senzorového čipu je už rozumná východzia informácia a okrem toho existuje fenomén "dobrých duší na internete" (to sú takí tí ľudia, čo niečo spojazdnia hlavne pre seba, a potom sa o to podelia s ostatnými tým, že to zverejnia na nete). Po krátkom hľadaní som sa dostal k nasledujúcej stránke:
https://github.com/groeck/nct6775 Hurá! Dobrá duša napísala ovládač. Moje šance sa prudko zvýšili. Po krátkom overení, že v mojom jadre sa ten ovládač naozaj nenachádza, mi bolo jasné, že ho tam treba len nejako dostať.
Možností je (ako obvykle) viac, napríklad novšie jadro ktoré už ovládač obsahuje, ja som však chcel zostať pri distribučnom jadre. Aby som sa nemusel ďalej starať o celé jadro, iba o tento jeden ovládač, ak by bolo treba (a to pravdepodobne potrebné nebude). Skompilovať si celé vlastné jadro je síce fasa, ale potom ho priebežne updatovať je otrava.
Na pridávanie ďalších jednotlivých ovládačov do jadra našťastie máme DKMS (Dynamic Kernel Module Support), ktorý zabezpečí presne to, čo potrebujem (DKMS sa používa napríklad pre VirtualBox alebo pre proprietárne ovládače na grafické karty AMD/ATI). Jadro si žije samostatným životom a ak sa v dôsledku update nainštaluje novšia verzia jadra, tak DKMS zabezpečí, že náš modul sa hneď po update automaticky skompiluje aj pre nové jadro.
Tak ideme na to:
Ak náhodou ešte nemáme nainštalované DKMS, tak ho najskôr nainštalujeme:
apt-get install dkms
1. Najprv si stiahneme zdrojový kód ovládača. Väčšinou priame linky smerujú na poslednú verziu z repozitára. Aj v tomto prípade stránka
https://github.com/groeck/nct6775 ponúka na stiahnutie archív s aktuálnou verziou, konkrétne
https://github.com/groeck/nct6775/archive/master.zip. Ja mám však rád poriadok. O pár dní môže prísť nová verzia a archív bude iný. Ja chcem mať záznam o tom, ktorú verziu používam. Takže sťahujem konkrétnu verziu, commit do git-u s označením 33a206276b z 8. marca (mimochodom, momentálne už existuje aj novší commit, ale pri jeho kompilácii sa objavuju varovania, takže som sa rozhodol pre mierne staršiu verziu):
wget -O nct6775-33a206276bf692be5081423ce5e7b4cc6bf0d7fd.zip https://github.com/groeck/nct6775/archive/33a206276bf692be5081423ce5e7b4cc6bf0d7fd.zip
2. Pre istotu si skúsime naprázdno kompiláciu zdrojového kódu samostatne (ešte nie sme v DKMS):
7z x nct6775-33a206276bf692be5081423ce5e7b4cc6bf0d7fd.zip
cd nct6775-33a206276bf692be5081423ce5e7b4cc6bf0d7fd/
make
Kompilácia mi prebehla dobre, modul samostatne je kompilovateľný, v adresári máme súbor nct6775.ko, to je skompilovaný modul jadra (pre konkrétnu verziu jadra, ktoré nám práve beží). Super. Upraceme po sebe:
make clean
ls -al
cd ..
rm -rf nct6775-33a206276bf692be5081423ce5e7b4cc6bf0d7fd/
(pomocou make clean a následného ls si overíme, že autor kódu to neodflákol a nenecháva po sebe smeti)
3. Pripravíme modul pre DKMS:
Stanovíme verziu. Keďže je to modul len pre našu osobnú potrebu, môžeme byť kreatívny. Ja som zvolil verziu
0.9~0git+33a206276b. Vyzerá to trocha zložito, takže pripájam aj vysvetlenie: V git repozitári je vidieť, že pred časom autor "otagoval" istú verziu ako 0.9. My však máme novšiu verziu z git-u, označenie commitu je 33a206276b, preto to zahŕňam do čísla verzie, aby hocikedy neskôr bolo jasné, aká verzia zdrojového kódu bola použitá. V číslach verzií balíkov sa neodporúča používať znak pomlčky, miesto toho sa dáva +. 0git preto, že je to úplne prvý pokus o tvorbu tohoto DKMS-modulu. A znak ~ spôsobí, že moje číslo verzie bude "menšie" než verzia 0.9 (dá sa overiť cez
dpkg --compare-versions "0.9~0git+33a206276b" lt "0.9" ; echo $?), takže ak by náhodou vyšla oficiálna verzia tohoto modulu s číslom verzie 0.9, bude považovaná za novšiu. Dekryptované toto číslo verzie teda znamená: verzia 0.9, privátny build číslo 0, zdroj z git=u, commit 33a206276b.
No super, máme čislo verzie... to sa používa aj v názve adresára, ktorý má formát <menomodulu>-<verzia>
7z x nct6775-33a206276bf692be5081423ce5e7b4cc6bf0d7fd.zip
mv nct6775-33a206276bf692be5081423ce5e7b4cc6bf0d7fd nct6775-0.9~0git+33a206276b
A vytvoríme súbor nct6775-0.9~0git+33a206276b/dkms.conf s nasledovným minimalistickým obsahom:
PACKAGE_NAME="nct6775"
PACKAGE_VERSION=0.9~0git+33a206276b
BUILT_MODULE_NAME[0]="nct6775"
DEST_MODULE_LOCATION[0]="/kernel/drivers/hwmon"
AUTOINSTALL="yes"
(Doteraz sme fungovali pod bežným užívateľom, teraz ale ideme robiť systémové veci, takže pred ďalšími krokmi použijeme su alebo sudo.)
4. Zahrnieme modul do DKMS systému:
cp -r --preserve=time nct6775-0.9~0git+33a206276b/ /usr/src/
dkms add nct6775/0.9~0git+33a206276b
5. Povieme DKMS aby si skompiloval modul v ramci svojho systemu:
dkms build nct6775/0.9~0git+33a206276b
6. Pridáme DKMS modul do adresára modulov nášho jadra:
dkms install nct6775/0.9~0git+33a206276b
7. Moment pravdy, pokúsime sa načítať náš nový modul do bežiaceho jadra:
modprobe nct6775
lsmod | grep nct6775
8. Ak sme sa dostali až sem a nevyhodilo nám žiadne chyby, náš nový modul je zavedený v jadre a môžeme ho používať:
sensors -s
sensors
A máme funkčné senzory!
Ak všetko funguje, pridáme do /etc/modules riadok:
nct6775
aby sa nám modul vždy automaticky nahral pri štarte systému.
No a samozrejme vytvoríme konfiguračný súbor v /etc/sensors.d/ špecifický pre daný čip. V mojom prípade začína s:
chip "nct6779-*"
(Modul jadra sa volá
nct6775, ale pokrýva niekoľlo čipov a ten môj je lm-sensors rozpoznaný ako
nct6779-isa-0290)
V prípade, že chceme tento modul odstrániť (máme novšiu verziu modulu, meníme dosku, apod):
dkms uninstall nct6775/0.9~0git+33a206276b
dkms remove nct6775/0.9~0git+33a206276b -all
rm -rf /usr/src/nct6775-0.9~0git+33a206276b/
Týmto úplne odstránime náš DKMS modul zo systému, necháme za sebou pekne poupratované, čistá prácička.
DKMS je samozrejme použiteľné pre akékoľvek moduly jadra. Grafika, zvukovka, TV-karta,... Mne sa akurát nedávno stalo, že práve pre senzory som to potreboval. A tento konkrétny čip ešte stále nie je podporovaný ani tým jadrom, ktoré je momentálne vo Wheezym. Takže ak má niekto dosku Asus P8Z77-M PRO, môže tento návod rovno použiť... a je možné, že aj iné dosky od Asusu používajú senzorové čipy tejto rady.