Ключевые слова:debian, linux, hardware, driver, notebook, acpi, cpu, (найти похожие документы)
From: Yury Yurevich <j2a@jurevich.ru.>
Newsgroups: http://omsk.lug.ru/
Date: Mon, 5 Dec 2005 14:31:37 +0000 (UTC)
Subject: Опыт использования Debian GNU/Linux на ноутбуке
Оригинал: http://omsk.lug.ru/wacko/DebianAtLaptop
Debian на ноутбуке
Эта страница освящает использование мною Debian на ноутбуке.
Я постарался вскольз упомянуть те темы, информацию по которым можно
беспроблемно найти. Там же, где такой информации не много,
я постарался более подробно раскрыть вопрос.
В принципе, если возникнет желание (то ли у меня, то ли
у [не]случайного читателя) дополнить некоторые разделы -- тем лучше,
вики для этого и сделана.
Управление питанием
ACPI
Желательно использовать последние патчи от проекта ACPI4Linux.
Как правило, оправдано использование последней версии ядра.
На момент, когда я собирал ядро, последними версиями были
linux-2.6.11.11, и acpi-20050408-2.6.11. На момент написания статьи --
это 2.6.13.4 и 20050902-2.6.13 соответственно.
swsusp2
С ACPI у меня ноутбук не уходил в suspend-to-disk, а после
suspend-to-ram не желал включаться. Поэтому я использую swsusp2
для тех случаев, когда есть желание\необходимость использовать
suspend-to-disk.
В принципе, в debian входит патч swsusp2, но я советую использовать
последний доступный с http://www.suspend2.net Как накладывать
патчи swsusp2 вполне ясно написано на их сайте (да я сейчас и не помню
тонкости ;) ). Из того что помню: для беспроблемного просыпания нужно
либо включать swsusp2 в ядро (CONFIG_SUSPEND2, CONFIG_SUSPEND2_SWAPWRITER,
CONFIG_SUSPEND2_LZF_COMPRESSION, CONFIG_SUSPEND2_USERSPACE_UI), либо
использовать initrd. От initrd я отказался из-за скорости загрузки.
Для засыпания советую использовать пакет hibernate Настройки в нем
вполне прозрачны.
cpufreqd
У меня Celeron M, однако и для него cpufreq может быть полезен.
Например, включать throttling и понижать яркость дисплея.
Его настройки для Celeron M я описывал в debian-russian
Воодушевленный http://grafit.mchtr.pw.edu.pl/~szczedar/nx9020.html
попробовал сделать cpufreq на celeron-m
Итак, диспозиция:
hp nx9020 с celeron-m 340 (1.5 GHz) который по заявлению производителя
не поддерживает технологию speed-step.
И действительно, при попытке подключить модуль cpufreq-centrino
(а равно как и любой другой помимо ниже описанного) вылезала ошибка
no such device.
В ядро (2.6.11.7 + acpi-20050309 + некоторые патчи от debian) включил
p4-clockmod; cpufreqd при установке распознал p-точки, его конфги я
немного изменил, чтобы при переходе на батарею он понижал частоту.
Поставил "powersave governon" модулем, загрузил модули
p4-clockmod
cpufeq-powersave
При переходе на батарею частота снижается до 750 МГц, при интенсивной
загрузке (scimark2) переходит на 935 МГц.
/proc/cpuinfo для трех состояний (внешнее питание, батарея,
батарея+загрузка процессора); конфиг ядра (то что касается cpufreq);
конфиг cpufreqd; результаты scimark2 (внешнее питание, батарея) во
вложении.
Кто-нибудь может подтвердить или опровергнуть эту информацию?
CONFIG_MPENTIUMM=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=m
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_TABLE=m
CONFIG_X86_P4_CLOCKMOD=m
CONFIG_X86_SPEEDSTEP_LIB=m
cpufreqd.conf:
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
pm_type=acpi #(acpi, apm or pmu)
# Uncomment the following line to enable ACPI workaround (see cpufreqd.conf(5))
# acpi_workaround=1
verbosity=4 #(if you want a minimal logging set to 5)
[Profile]
name=hi_boost
minfreq=1053750
maxfreq=1500000
policy=performance
[Profile]
name=medium_boost
minfreq=620625
maxfreq=1053750
policy=performance
[Profile]
name=lo_boost
minfreq=187500
maxfreq=620625
policy=performance
[Profile]
name=lo_power
minfreq=187500
maxfreq=620625
policy=powersave
# conservative mode when not AC
[Rule]
name=conservative
ac=off # (on/off)
battery_interval=0-100
cpu_interval=0-40
profile=lo_boost
# need some power
[Rule]
name=lo_cpu_boost
ac=off # (on/off)
battery_interval=0-100
cpu_interval=30-80
profile=medium_boost
# need big power (not if battery very low)
[Rule]
name=hi_cpu_boost
ac=off # (on/off)
battery_interval=50-100
cpu_interval=70-100
profile=medium_boost
# full power when AC
[Rule]
name=AC_on
ac=on # (on/off)
profile=hi_boost
# full power when watching DVDs and not AC:
# this is the last rule and takes less
# precedence with respect to the others
[Rule]
name=dvd_watching
ac=off # (on/off)
battery_interval=0-100
programs=xine,mplayer,avidemux
cpu_interval=0-100
profile=medium_boost
Сеть
В debian довольно удачная схема настройки сети (man interfaces) и этой
схемой поддерживаются множественные профили. Остается лишь настроить
автоматический выбор этих профилей.
ifplugd
Мне оказалось достаточного apt-get install ifplugd и интерфейс
автоматически стал подниматься\опускаться при втыкании\вытыкании
сетевого кабеля.
guessnet
Инструмент, который будет выбирать нужный профиль в зависимости
от окружения.
Работает так: заранее описываются <<целевые>> машины (т.е. те,
на которые стоит ориентироваться при выборе окружения -- напр. шлюзы)
парой значений ip-mac. При подключении кабеля, посылаются arp-запросы,
в зависимости от того, какой <<целевой>> компьютер ответил, выбирается
соответствующий профиль.
Советую почитать документацию к guessnet, там есть неплохие примеры,
на которые я и ориентировался, составляя свою конфигурацию. Итак:
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# eth0 выбирается из профиля guessnet
mapping eth0
script /usr/sbin/guessnet-ifupdown
map default: none
map timeout: 3
map verbose: true
iface home inet static
address 172.16.0.2
netmask 255.255.255.0
network 172.16.0.0
broadcast 172.16.0.255
gateway 172.16.0.1
up roaming home
down roaming none
test-peer address 172.16.0.1 mac 00:80:AD:85:F5:7C
iface univer inet static
address 192.168.0.220
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
up roaming univer
down roaming none
test-peer address 192.168.0.1 mac 00:C0:26:AB:F8:91
iface pp inet static
address 192.168.0.220
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
test-peer address 192.168.0.215 mac 00:11:2F:A6:45:B0
iface work inet static
address 200.200.200.200
netmask 255.255.255.0
network 200.200.200.0
broadcast 200.200.200.255
up roaming none
test-peer address 200.200.200.240 mac 00:04:75:72:A8:4F
# если кабель не подключен (т.е. пытаемся поднять интерфейс, а кабель не подключен)
iface disconnected inet static
address 10.1.23.12
netmask 255.255.255.0
up roaming none
test-missing-cable please
Конструкции test-peer address <IP> mac <MAC> и test-missing-cable
please как раз относятся к guessnet. К чему относятся up roaming --
чуть ниже.
Почта
Я использую классическую связку MTA+MDA+MUA. Настройки MDA (procmail)
и MUA (mutt) ничем не отличаются от десктопа, а вот на MTA остановлюсь
поподробнее.
masqmail
На masqmail я остановился из-за того, что он поддерживает профили
(т.е. в одном окружении -- один релей, в другом -- другой).
В принципе, можно один настроить некий другой недо-MTA, поддерживающий
авторизацию и настроить на один SMTP-сервер с авторизацией. Однако
должен быть такой MTA, чтобы он понимал, что иногда машина оффлайн
и не пытаться отправить почту, а ждать пока не будет онлайн. masqmail
такое умеет. Единственно, что он еще и может выполнять функции
fetchmail\getmail и, IMHO, это лишне. Если честно, то мне было лениво
разбираться как сделать ssl в masqmail и использую fetchmail,
как и использовал на десктопе.
Итак, насчёт masqmail: онлайн\оффлайн и выбор профиля осуществляется
по файлу (точнее я это использовал, он еще по выводу команды умеет),
в котором написано имя профиля. Если такого файла нет, то значит
оффлайн. Имя профиля и определяет, какой транспорт (route) будет
использоваться:
# /etc/masqmail/masqmail.conf
### BEGIN DEBCONF SECTION
# Do not edit within this region if you want your changes to be preserved by
# debconf. Instead, make changes after the "### END DEBCONF SECTION" line.
host_name="moby.omsktele.com"
local_hosts="localhost;moby;moby.omsktele.com"
local_nets=""
listen_addresses="localhost:25"
spool_dir="/var/spool/masqmail"
mail_dir="/var/mail"
log_dir="/var/log/masqmail"
do_queue=false
use_syslog=false
mbox_default=mda
mda="/usr/bin/procmail -Y -d ${rcpt_local}"
alias_file=/etc/aliases
alias_local_caseless="false"
### END DEBCONF SECTION
#
online_detect=file
online_file="/etc/roaming/online"
# include the locations of your route and get configurations here.
# Examples:
# online_routes.default = "/etc/masqmail/default.route"
# online_gets.default = "/etc/masqmail/default.get"
# You can have more of those, with '.default' replaced with other
# names. See man 8 masqmail.conf.
online_routes.univer = "/etc/masqmail/univer.route"
online_routes.home = "/etc/masqmail/home.route"
Соответствующие файлы транспортов (route) выглядят однотипно и я
в качестве примера приведу один:
#/etc/masqmail/home.route
protocol = smtp
mail_host = debsmart
helo_name = moby.jurevich.ru
А каким образом выбираются профили, уже можно догадаться ;)
roaming
Итак, при поднятии\опускании интерфейса запускаем скрип roaming,
который делает нужные действия:
* информирует (при помощи соответсвующего файла) об онлайн\оффлайн
состоянии
* сообщает (содержимое файла) о профиле
* использует нужный resolv.conf
* синхронизирует время по ntp
* что-нибудь еще (напр. смена конфигурации samba), ограничение --
только ваша фантазия.
#!/bin/sh
# -*- coding: koi8-r -*-
# roaming: делает все необходимые манипуляции при поднятии интерфейса
# Юрий 'Cap. J2A' Юревич (Jurie Jurevich), http://j2a.jurevich.ru
# 2005-08-01
# первый параметр -- имя конфигурации
conf="$1"
if [ -z "$conf" ]; then # если не передали параметр, ничего не делаем
exit
fi
# прописываем нужный resolv.conf
ln -fs "/etc/roaming/resolv.conf_$conf" /etc/resolv.conf
if [ "$conf" = "none" ]; then # значит оффлайн
rm -f /etc/roaming/online
touch /etc/roaming/not_online
# останавливаем синхронизацию времени
/etc/init.d/ntpdate stop
else # значит онлайн
# сообщаем, какую конфигурацию запускаем
echo "$conf" >/etc/roaming/online
# сообщаем, что перестали быть оффлайн
rm -f /etc/roaming/not_online
# синхронизируем время
/etc/init.d/ntpdate start
fi
Dobryj den.Nedavno procel Vasu statju t.k pytajus snizit skorost CPU. Info o cup:
":cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Celeron(R) CPU 2.50GHz
stepping : 9
cpu MHz : 2500.000
cache size : 128 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid xtpr
bogomips : 5003.89
"
Ispolzu"cpufreqd", kernel 2.6.16.18 (vanilla)
moduli podkljucil. Odnako pri vypise dostupnych castot processora "
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
2187500 2500000
"
:( V ostalnom nebylo nikakich problem. Ubuntu ".deb" faily vse nakonfigurovali za menja i izmenenie skorosti proischodit samo soboj. Da, ese ispolzuju "laptop-mode", no v nem ja nicego nemenjal v nastrojkah.
Hotel ispolzovat vyseuedeny .conf , no na diske ego net a gde dolzen byt ja neznaju. Nemog by Vy mne pomoc s otvetom na eti voprosy. Zaranie blagodaren, Jurij. (Notebook Acer TravelMate 243XC)