Вопрос с вентилятором двоякий.
В норме, контролем вентилятора должен заниматься БИОС - ему виднее. Проблемы с биосами (прежде всего, на компах HP/Compaq и Fujitsu, материнских платах Asus того времени) породили необходимость управления через ОС. Для этого был создан ACPI. Чтобы принудительно перевести управление на БИОС, надо задать параметр ядру acpi=off. Чтобы принудить ОС, надо acpi=force.
Итак, для начала, убеждаемся, что наш ком подерживает ACPI:
#cat /var/log/messages | grep ACPI
Если ACPI работает, то должна вылезти куча сообщений об устройствах. Если нет - будет типа:
ACPI: System description tables not found
ACPI-0084: *** Error: acpi_load_tables: Could not get RSDP, AE_NOT_FOUND
ACPI-0134: *** Error: acpi_load_tables: Could not load tables: AE_NOT_FOUND
ACPI: Unable to load the System Description Tables
Допустим, ACPI у вас заработал.
Подргужаем модули:
#modprobe thermal
#modprobe fan
Если у вас в системе каталог /proc/acpi/fan/ пуст, то значит ACPI не нашел устройства, по его мнению, откликающегося как контроллер вентилятора. Бороться с этим можно либо перепрошивкой биоса, либо выбором другой версии ACPI (вместе с ядром). В любом случае, можно посмотреть на то, что происходит с температурой в системе:
#ls /proc/acpi/thermal_zone/THM/*
Там будут файлы temperature, cooling_mode и trip_points. Некоторыми из них (в зависимости от системы) можно управлять, самостоятельно отслеживая текущую температур (cat /proc/acpi/thermal_zone/THM/temperature). Управление осуществляется либо напрямую вентилятором (через файл /proc/acpi/fan/FAN0/state), либо через установку контрольных точек (через файлы /proc/acpi/thermal_zone/THM/polling_frequency и trip_points).
#echo "3" > /proc/acpi/fan/FAN0/state
проинструктирует передать управление вентилятором ОС.
#echo "30" > /proc/acpi/thermal_zone/THM/polling_frequency
установит проверку ОС температуры каждые 30 секунд
Режим охлаждение задается по контрольным точкам температуры процессора. При достижении процессором каждой из контрольных точек, система увеличит (или уменьшит) обороты вентилятора. По умолчанию там будет стоять единственная контрольная точка -
#cat /proc/acpi/thermal_zone/THM/trip_points
critical (S5) 99 C
99 градусов - "критическая". При достижении ее, система попытается сделать suspend
Исполнение следующего кода зависит от железа (например, у меня он не работает) и иногда требует специальных модулей от производителей железа:
#echo "99:80:35:75:60:55:50:45" > /proc/acpi/thermal_zone/THM/trip_points
установит, в данном случае, 8 контрольных значений температуры (в градусах цельсия, разделенными двоеточиями). В общем случае, в команде можно указать от 5 до 9 точек. Это должно заставить систему достаточно точно контролировать обороты.
Последнее замечание: форсировать процесс стоит только если у вас действительно что-то не в порядке с контролем вентилятора.