Jak na tichý notebook v linuxu

Napsal (») 15. 10. 2007 v kategorii Operační systémy, přečteno: 1594×
obrazky/linuxtise.jpg

Úvod do problému


Tento článek je určen skupině uživatel jenž by rádi už nastálo změnili svůj OS na Linux. Jedním ze zásadních problémů se kterým se potýká drtivá většina uživatel notebooků při přechodu je neschopnost Linuxu ovládat otáčky ventilátoru chladícího zdroj notebooku. Který je většinou jediným zdrojem hluku v jinak tichém stroji. Na tento problém existuje nesčetné množství návod a rad, které zahrnují kompilaci kernelu a další relativně velké překážky. Tento návod je více méně univerzální. Postupujte však v jeho realizaci s rozvahou.

Instalace softwaru pro senzory a následná konfigurace


1. Nainstalujte si balíček lm-sensors

apt-get install lm-sensors


nebo z tohoto balíčku pro distribuce debian zde.

2. Teď je potřeba senzory detekovat, přihlaste se jako root a spusťte následující příkaz:

sensors-detect


Zadávejte Y a potvrzujte ENTER.

3. Pokud se vám objevila hláška -> Sorry, no sensors were detected.

Postupujte následovně:

a)vytvořte si v domovském adresáři soubor unhide_ICH_SMBus, kterému nastavte CHMOD 755, jehož obsah bude následující:

#!/bin/bash
# (C) Rudolf Marek ,
# Jean Delvare
#
# Thanks Jean Delvare and Oliver Dreier for testing.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation

pcibus="/sys/bus/pci/slots/"
device="00:1f"

if [ "$UID" -ne 0 ] ; then
echo "You need to be root to run this script!"
exit 252
fi

smbus=`lspci -n -s $device.3 grep -i '0c05: *8086'`
if [ -n "$smbus" ] ; then
echo "ICH SMBus is already there!"
lspci -s $device.3
exit
fi

intel=`lspci -n -s $device.0 grep 8086`

if [ -z "$intel" ] ; then
echo "Not for your chipset - Intel (ICH) only"
exit 255;
fi
modprobe fakephp &> /dev/null

if [ ! -d "$pcibus" ] ; then
echo "You need the fake PCI hotplug driver! (fakephp.ko and 2.6 kernel)"
exit 255;
fi

echo "Enabling SMBus PCI device ..."

newval=$( printf '%x' $((0x$(setpci -s $device.0 f2.w) & 0xfff7)))
setpci -s $device.0 f2.w=$newval

echo "Rescanning the bus ..."
echo 1 > $pcibus/0000:$device.0/power 2>/dev/null
if [ ! -d "$pcibus/0000:$device.3" ] ; then
echo "Failed to enable the SMBUS"
exit 253;
fi

if [ ! -d "/sys/bus/pci/drivers/i801_smbus" ] ; then
echo "Loading i2c-i801 ..."
modprobe i2c-i801
if [ $? -ne 0 ] ; then
exit 251
fi
fi

lspci -s $device.3
echo "Done!"


b) skript spusťte, pokud se vám objeví Done! vše proběhlo tak jak mělo.

c) opět zadejte do terminálu jako root příkaz:

sensors-detect


Všechny hlášky potvrďte.

4. Pro otestování funkčnosti spusťte v terminálu postupně tyto příkazy:

root@horus:/home/ubuntu# sudo modprobe i2c-i801
Password:
root@horus:/home/ubuntu# sudo modprobe adm1031
Password:
root@horus:/home/ubuntu# sudo modprobe eeprom
Password:
root@horus:/home/ubuntu# sudo depmod -a
Password:
root@horus:/home/ubuntu# sudo update-modules
Password:
root@horus:/home/ubuntu# sudo sensors
Password:
adm1031-i2c-0-2c
Adapter: SMBus I801 adapter at 1200
CPU Fan: 12053 RPM (min = 661 RPM, div = 4)
Case Fan: 16875 RPM (min = 661 RPM, div = 4)
SYS Temp: +57.0°C (low = +51°C, high = +70°C)
SYS Crit: +87°C
CPU Temp: +52.5°C (low = +46°C, high = +60°C)
CPU Crit: +75°C
AUX Temp: +0.0°C (low = +0°C, high = +80°C) DISCONNECT
AUX Crit: +100°C


Posledních několik řádko potvrzuje, že máte správně nakonfigurovány senzory.

5. Pomocí terminálu jako root spusťte příkaz:

sudo gedit /etc/init.d/rc.local


přidejte tento řádek:

/home/mujdomov/unhide_ICH_SMBus


na toto místo:

do_start() {
if [ -x /etc/rc.local ]; then
log_begin_msg "Running local boot scripts (/etc/rc.local)"
/etc/rc.local
log_end_msg $?
/home/ubuntu/unhide_ICH_SMBus
fi
}


Uložte.

Toto zajistí, že budou senzory aktivní po každém bootu.

Konfigurace fancontrol pomocí pwmconfig a uvedení do provozu


1. Jako root spusťte následující příkaz z terminálu:

pwmconfig


Pomocí ENTER potvrďte všechny výzvy a nastavte interval na 10s, pokračujte dále dokud pwmconfig nezapíše konfigurační soubor.

Postupně budou testovány ventilátory a zapsán dočasný konfigurační soubor do složky /etc.

2. Nyní stiskněte 5 pro náhled na konfigurační soubor která je nejspíše prázdný.

3. Stiskněte 1 pro upravení nastavení.

4. Vyberte teplotu, která odpovídá teplotě vašeho procesoru. (většinou stejné číslo jako je číslo ventilátoru).

MINTEMP -> počáteční teplota chlazení procesoru a zdroje.

MAXTEMP -> koncová definuje rozsah.

Pokračujte s předdefinovanými nastaveními až k bodu: "Enter the minimum PWM value (0-255).

5. Zde zmáčněte "t" a ENTER, ENTER mačkejte dokud neuvidíte, že se ventilátor točí, poté stiskněte "y" a ENTER.

6. To samé v dalším kroku, když uvidíte, že se venitilátor zastaví , stiskněte "y" a ENTER.

7. Opět stiskněte 5 a ENTER, zobrazí se vám něco podobného:

INTERVAL=5
FCTEMPS= 1-0290/pwm2=1-0290/temp2_input
FCFANS= 1-0290/pwm2=1-0290/fan2_input
MINTEMP= 1-0290/pwm2=43
MAXTEMP= 1-0290/pwm2=53
MINSTART= 1-0290/pwm2=120
MINSTOP= 1-0290/pwm2=105

8. Stiskněte 4 a ENTER.

9. Vyzkoušejte pomocí příkazu (jako root):

fancontrol


Měly by jste slyšet regulaci otáček.

Vytvoření startovacího démona


1. Jako root Spusťte v terminálu následujíci příkaz:

sudo gedit /etc/init.d/fancontrol


2. Vložte tento kód a soubor uložte:

#!/bin/sh
#
# Fancontrol start script.
#

set -e

# Defaults
DAEMON=/usr/sbin/fancontrol
PIDFILE=/var/run/fancontrol.pid
PATH=/sbin:/bin:/usr/sbin:/usr/bin

test -f $DAEMON || exit 0

. /lib/lsb/init-functions


case "$1" in
start)
log_begin_msg "Starting fancontrol daemon..."
start-stop-daemon --start -o -q -m -b -p $PIDFILE -x $DAEMON
log_end_msg $?
;;
stop)
log_begin_msg "Stopping fancontrol daemon..."
start-stop-daemon --stop -o -q -p $PIDFILE
log_end_msg $?
;;
force-reload|restart)
sh $0 stop
sh $0 start
;;
*)
log_success_msg "Usage: /etc/init.d/fancontrol {start|stop|restart|force-reload}"
log_success_msg " start - starts system-wide fancontrol service"
log_success_msg " stop - stops system-wide fancontrol service"
log_success_msg " restart, force-reload - starts a new system-wide fancontrol service"
exit 1
;;
esac

exit 0


A nastavte práva k tomuto souboru na CHMOD 755.

3. Jako root Spusťte v terminálu následující příkaz:

update-rc.d fancontrol defaults 99 01


To zajistí start fancontrol při každém bootu.

4. Hotovo.

Závěr


Možná, že tento postup na první pohled nevypadá krátce a jednoduše avšak je stále několikrát jednodušší než oprava špatného ACPI nebo rekompilace kernelu.
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel jedna a šest