ČlánkyPřihlášení |
IBM ThinkPad T41Dostal jsem se k notebooku ThinkPad T41 a rozhodl jsem se na něj nainstalovat Slackware 9.1 jako hlavní operační systém. Nebyly s tím žádné větší problémy. Konfiguraci jednotlivých komponent notebooku popíšu v dalším textu. Omluvte neaktuálnost textu, článek byl původně na webu t41.zdenda.com. V dnešních distribucích je všechen HW notebooku plně podporován a instalátory samy zvládají vše potřebné nastavit, proto si myslím, že nemá cenu článek aktualizovat. Jen pro informaci, na notebooku jsem provozoval kromě slackware i Debiana (testing/unstable) a teď na něm mám Fedoru Core 6.
Základní informace o HWInformace o HW z webu IBM si určitě umí najít každý, proto sem přikládám pouze informace získané z výpisů přímo z počítače. JádroPožil jsem jádro 2.6.5, jádro jsem si přeložil své. Jádro z distribuce (na notebooku jsem měl nainstalovaný Redhat 9, SUN JDS) mělo problémy s ACPI. /tmpProtože mám v notebooku 768MiB RAM, rozhodl jsem se pro využití tmpfs pro adresář /tmp. Velikost /tmp jsem omezil na 800MiB, trochu nepříjemné je, že když zaplním /tmp a RAMku, tak mi asi nezůstane moc místa pro suspend na disk. Tak veliký tmp jsem volil proto, že programy jako je mc a minimálně ještě můj skript na vypalování CDček využívají tmp dost agresivně (přeci jen je dost nepříjemné, když si nemůžete vypálit CDčko, z důvodu že došlo místo na disku kde je tmp). Pro to abyste mohli využíbvat none /tmp tmpfs size=800m 0 0 Pozor na to, že se vám bude /tmp sá8m od sebe mazat při vypnutí počítače (vždyť je to namapovaná RAMka). Grafická kartaV počítači je grafická karta ATI Radeon Mobility 7500, ATI nabází na svém webu ke stažení linuxové ovladače (fglrx), ale protože s nima nemám dobré zkušenosti na Radeon 9200 + jádro 2.6, tak jsem se je ani nesnažil zprovoznit a použil ovladače co jsou přímo v XFree. FramebufferČasto pracuji pouze v textové konzoli, má to své výhody, například šetřím baterku, také se mi v konzoli líp čte. Nastavení zobrazování v konzoli je jednoduché, stačí mít v jádře zakompilovanou podporu pro vesa framebuffer a jádru předa při bootu parametr (např.) XFreeSlackware 9.1 obsahuje XFree 4.3, s grafickou kartou si to poradilo bez problémů jak ve 2D tak i 3D. Driver XF86ConfigNastavení grafické karty: Section "Device"
Identifier "Card0"
Driver "radeon"
Option "NoAccel" "true"
VendorName "ATI Technologies Inc"
BoardName "Radeon Mobility M7 LW [Radeon Mobility 7500]"
BusID "PCI:1:0:0"
EndSection
Monitor: Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" EndSection Screen: Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" "800x600" EndSubSection EndSection TouchpadTouchpad mi standardně fungoval pouze jako pohybovátko, nefungoval na něj poklep a podobné věci. V konzoli mi to nevadí, ale v Xkach ano. Vyřešilo to použití ovladače Nastavení touchpadu v konzoli:V konzoli požívám klasický /usr/sbin/gpm -m /dev/mouse -t imps2 Nastavení touchpadu v X:Section "InputDevice" Driver "synaptics" Identifier "Mouse0" Option "Device" "/dev/psaux" Option "Protocol" "auto-dev" Option "LeftEdge" "1700" Option "RightEdge" "5300" Option "TopEdge" "1700" Option "BottomEdge" "4200" Option "FingerLow" "25" Option "FingerHigh" "30" Option "MaxTapTime" "180" Option "MaxTapMove" "220" Option "VertScrollDelta" "100" Option "MinSpeed" "0.06" Option "MaxSpeed" "0.12" Option "AccelFactor" "0.0010" Option "SHMConfig" "on" EndSection USBNotebook má pouze dva USB porty. Potřebný modul je USB myšPS2 port je dnes přežitek :-) a tak ani T41 žádný nemá. Nijak mi to nevadí mám pouze USB myšky. v Jádře je potřeba nastavit potvory jako je HID a tak... no je to popsaný minimálně na www.abclinuxu.cz Nastavení v X(pro MS Intelli Mouse 1.1A): Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "ExplorerPS/2" Option "Device" "/dev/input/mice" Option "Buttons" "5" Option "ZAxisMapping" "4 5" EndSection Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse1" "AlwaysCore"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
USB storageJsem vlastník nějakého noname USB Flash disku, pro jeho zprovoznění stačí nahrát modul K počítači jsem si pořídil externí DVD vypalovačku s rozhraním USB2.0, pro její rozeběhnutí a používání potřebujete moduly do jádra USB to RS232Na stránce Linux jako konzole k RS232 jsem popsal jak to vypadá8 když použijete redukci USB to RS232. IrDAPořídil jsem si Palma (Tungsten C) a tak mě napadlo, že bych na něm mohl vyzkoušet synchronizaci přez IrDA, kupodivu tu funguje lip než přez USB kabel. Postup sprovoznění IrDA portu v notebooku je relativně jednoduché. Do jádra je potřeba nahrát moduly WiFiPro práci s WiFi kartou používám ovladač od Intelu ipw2100, připojuji se jako klient do sítě případně funguji v režimu Ad-Hoc když se připojuji z palma a jede to v pohodě. Modrý zubModrý zub (Bluetooth) funguje dobře, používám myš Logitech MX900 přez BT a jsem velmi spokojeny. Pro správnou funkci BT jsou potřeba moduly PCMCIABohužel nemám nic do PCMCIA slotu, ale podpora PCMCIA v linuxu je obecne velmi dobrá. Síťová kartaNotebook má gigabitovou síťovou kartu od intelu, ModemModem je klasický softmodem, v linuxu jsem ho nainstaloval hned napoprvé. Použil jsem ovladač slmodem verze 2.9.9 ACPIJádro jsem si přeložil s podporou ACPI, běhá to moc pěkně. Funguje mi přez ACPI měření baterky, změna frekvence CPU, měření teploty. Dokonce jsem schopný zpracovávat eventy, které vznikají například při připojení/odpojení od napájení ze sítě. Kontrola frekvence CPUPoužívám pouze maximální (1400MHz) nebo minimální (600MHz) frekvenci procesoru. Ovládání je jednoduché, stačí zapsat jedno slovíčko do Nastavení minimální frekvence procesoru: echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor Nastavení maximální frekvence procesoru: echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ThrottlingTato funkce zařazuje do procesoru víc NOP operací, šetří to energii, ovládání přez ACPI je velmi jednoduché: Nastavení maximálního příkonu: echo 0 > /proc/acpi/processor/CPU/throttling Nastavení minimálního příkonu: echo 7 > /proc/acpi/processor/CPU/throttling jako optimum pro minimální spotřebu jsem si vybral po několika pokusech 4, je to kompromis mezi spotřebou a škubáním programů. Pro jednoduché ovládání jsem si napsal skriptík:
$ cat /usr/local/bin/cpu
#!/bin/sh
hight () {
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor && \
echo 0 > /proc/acpi/processor/CPU/throttling && \
echo "Nastavuji na vyssi vykon"
}
low () {
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor && \
echo 4 > /proc/acpi/processor/CPU/throttling && \
echo "Nastavuji na nizssi spotrebu"
}
[ "$1" == "s" ] && {
FREQ=`egrep "cpu MHz" /proc/cpuinfo | gawk '{print $4}' | gawk -F . '{print $1}'`
[ "${FREQ}" -le "1000" ] && hight || low
}
[ "$1" == "start" ] && {
AC=`cat /proc/acpi/ac_adapter/AC/state | gawk '{print $2}'`
[ "off-line" == "$AC" ] && low || hight
}
echo "Aktualni frekvence procesoru: `egrep "cpu MHz" /proc/cpuinfo | gawk '{print $4}'`"
Skript je opravdu jednoduchý, takže nečekejte zázraky. Pokud ho spustíte bez parametru, tak vypíše aktuální frekvenci procesoru. Když ho spustíte s parametrem acpidProgram
#!/bin/sh
set $*
case "$1" in
button)
case "$2" in
power) /sbin/init 0
;;
*) logger "ACPI action $2 is not defined"
;;
esac
;;
button/lid)
case "$2" in
LID) logger "ACPI Byl zavren nebo otevren displej"
;;
*) logger "ACPI akce $1 $2 nebyla definovana"
;;
esac
;;
ac_adapter)
case "$4" in
00000001) logger "ACPI jsem napojen na sit"
/usr/local/bin/cpu_hi
;;
00000000) logger "ACPI jedu na baterku"
/usr/local/bin/cpu_low
;;
*) logger "ACPI akce $1 $2 $3 $4 nebyla definovana"
;;
esac
;;
*)
logger "ACPI group $1 / action $2 is not defined"
;;
esac
Odkazované skripty Suspend to RAMSuspend to ram mi funguje moc pěkně ale nějaká ta muška se vždy najde, na problémy na které jsem narazil:
Pro suspend do ram jsem si naspal jednoduchý skriptík: #!/bin/bash ifconfig eth1 down 2>/dev/null rmmod ipw2100 2>/dev/null sync sync sync echo "Suspenduji do RAM" sleep 2 echo 3 > /proc/acpi/sleep Suspend to diskSuspend na disk ma podobné problémy jako suspend do ram. Skriptík který jsem si na to napsal kontroluje velikost swapovacího oddílu. Sem tam vypínám swap (a třeba i logování a dalšívěci aby mi to dýl vydrželo na baterku) a když pak chci provéset suspend, tak jsem se divil proč nejde. #!/bin/bash
SWAP=`free | tail -n 1 | gawk '{print $2}'`
RAM=`free | head -n 2 | tail -n 1 | gawk '{print $2}'`
if [ $SWAP -le $RAM ]; then
echo "Pro suspend na disk neni misto na odkladacim oddilu :-("
exit 1
fi
sync
sync
sync
ifconfig eth1 down 2>/dev/null
rmmod ipw2100 2>/dev/null
sleep 2
echo 4 > /proc/acpi/sleep
Sledování stavu baterie v konzoliProtože jsem byl jednu chvíli offline a nemohl jsem si na internetu najít nějaký program, který by kontroloval stav baterky v konzoli, napsal jsem si svůj skript: #!/bin/bash
AC_ADAPT=`gawk '{print $2}' < /proc/acpi/ac_adapter/AC/state`
BAT_STAT=`grep charging /proc/acpi/battery/BAT0/state | gawk '{print $3}'`
AKT_SPOTREBA=`grep rate /proc/acpi/battery/BAT0/state | gawk '{print $3}'` # mW
ZBYV_KAPACITA=`grep "remaining capacity" /proc/acpi/battery/BAT0/state | gawk '{print $3}'` # mWh
ALARM=`gawk '{print $2}' < /proc/acpi/battery/BAT0/alarm `
TEMP=`gawk '{print $2}' < /proc/acpi/thermal_zone/THM0/temperature `
CPU=`egrep "cpu MHz" /proc/cpuinfo | gawk '{print $4}' | gawk -F . '{print $1}'`
ZBYV_H=`bc << EOF
scale=2
cas=$ZBYV_KAPACITA/$AKT_SPOTREBA
scale=0
cas/1
EOF
`
ZBYV_M=`bc << EOF
scale=2
cas=$ZBYV_KAPACITA/$AKT_SPOTREBA
scale=0
((cas%1)*60/1)
EOF
`
echo "+-----------------------+------------------+"
echo "| AC adapter | $AC_ADAPT"
echo "| Baterie | $BAT_STAT"
echo "| Aktualni spotreba | $AKT_SPOTREBA mWh"
echo "| Zbyvajici energie | $ZBYV_KAPACITA mWh"
echo "| Zbyvajici cas | $ZBYV_H:$ZBYV_M h"
echo "| Alarm | $ALARM mW"
echo "| Teplota | $TEMP C"
echo "| CPU | $CPU MHz"
echo "+-----------------------+------------------+"
Bohužel jsem neměl k ruce žádnou dokumentaci když jsem to psal, tak tam bude asi pár chyb. $Id: index.html,v 1.14 2005/03/04 22:10:22 tsunami Exp $ |
Poslat nový komentář