пʼятниця, 31 жовтня 2008 р.

Давач температури

Нарешті випала невелика нагода добратися до блогу та внести останні нотатки.
Останнім часом ноутбук почав вимикатися при температурі ~90 градусів по Цельсію.
Спершу грішив на кулер, думав може з ним щось, однак після розбирання виявилося, що вся проблема з термопастою, а точніше з її біс зна яким нанесенням (на процесорі її майже не було, взагалі дивно, як воно умудрилося не згоріти). Однак про це далі.
Наразі мова піде про те, як то спало мені на думку і вдалося прикрутити давач температури.

Насправді то зовсім нескладно. Для цього досить трішки полазити по тенетах і почитати чи хтось вже таке робив.

Проблема полягає в кривому БІОСі від HP (Hewlet Packard), а точніше в параметрах ACPI. Для того, щоб полагодити помилку слід списати оте саме ACPI, дизасемблювати, поправити помилку і після того змусити ядро читати поправлену версію.

Найскладніше в цій операції саме процес перезборки ядра, при комп'ютері, який вимикається ;)

Отже, виглядає то всьо таким чином:
  1. Записуємо до теки поточну конфігурацію ACPI (під адміністратором).
  2. sudo cat /proc/acpi/dsdt > /tmp/DSDT
  3. Дизасемблюємо отримане чудо:
  4. cd /tmp;iasl -d /tmp/DSDT
  5. Редагуємо файл отриманий файл
  6. vim DSDT.dsl
  7. З методу Method (_HOT, 0, Serialized) забираємо умовності. Їх треба видалити. Яким чином закоментувати - не маю уявлення; Сішний коментар "//" не спрацював (видно руки криві) :(.
  8. Аналогічну річ слід зробити для методу Method (_CRT, 0, Serialized).
  9. В мене після редагування вони набули наступного вигляду:
  10. Method (_HOT, 0, Serialized)
    {
    Return (Add (0x0AAC, Multiply (TPC, 0x0A)))
    }

    Method (_CRT, 0, Serialized)
    {
    Return (Add (0x0AAC, Multiply (TPC, 0x0A)))
    }
  11. Після цього треба скомпілювати отриманий код:
  12. iasl -tc DSDT.dsl
  13. Отриманий файл DSDT.hex слід скопіювати до підтеки include теки джерельного коду Вашого ядра. В моєму випадку то виглядає таким чином:
  14. sudo cp DSDT.hex /usr/src/dv5temp/linux-2.6.27.3/include
  15. Тепер треба перезібрати ядро, додавши наступні параметри (я зазвичай користуюся make menuconfig, тому вказую для даного методу налаштування).
    1. Device Drivers -> Generic Driver Options -> Select only drivers that don't need compile-time external hardware (тут зняти опцію)
    2. Power Management Options -> ACPI (Advanced Configuration and Power Interface) Support -> Custom DSDT Table file to include (вписати без лапок "DSDT.hex")


  16. Далі компілюємо ядро і встановлюємо:

    • make
    • make install

  17. Перезавантажуємося з новим ядром і вмикаємо давачі температури.
Начебто все.
Для особливо лінивих та початківців - можу порекомендувати ядро 2.6.27.3 зібране мною.
Серед особливостей ядра - підтримка майже всього обладнання ноутбука (окрім пульту дистанційного керування).
Зібрано все в deb пакетах для улюбленої системи.

Ядро
Заголовки
Документація
Джерельний код
Довідник

Всі матеріали почерпнуто з проекту Lesswatts та Google.

понеділок, 13 жовтня 2008 р.

./configure /bin/sh: Bad interpreter Permission Denied

Пишу чергову лабораторку для студентів, де їм потрібно встановлювати програмне забезпечення під Linux. Виникла проблема з тим, що на приєднаному розділі неможливо ані налаштувати програму, ані (використовуючи /bin/bash configure) запустити програмку.
Скрипт configure видає повідомлення - винесене в заголовок даного допису.

Проблема вирішується наступним чином:
1) відкриваємо /etc/fstab в улюбленому редакторі.
2) шукаємо необхідний розділ та додаємо параметр exec
3) повторно приєднуємо розділ і все працює :)

пʼятниця, 3 жовтня 2008 р.

Мережевий тест

Оце бродив по тенетах в пошуках Барди. Є така панєнка, яка співає пісні на вірші по Толкієну, і набрів на отакий тест. Наскільки правда? Невідомо :)

Твое кольцо – Кольцо Власти
Получить это кольцо непросто, но, может, и слава Богу. Дело в том, что оно дает власть над происходящим: над чувствами и мыслями других людей и даже над событиями, которые принято считать случайными. Понятно, что такое кольцо может попасть только в руки человека ответственного и с хорошим самообладанием. Но к счастью, у этого кольца есть одна особенность: его обладатель в первую очередь получает власть над СВОЕЙ судьбой и только потом – над остальными. Так что у тебя будет время попрактиковаться. Владей, повелевай и будь осторожен(а). Отныне – все ДЕЙСТВИТЕЛЬНО в твоих руках…image
Пройти тест


Зрештою пісні я таки знайшов :)

вівторок, 26 серпня 2008 р.

Драйвери Asus NX1001

В ніч з суботи на неділю була сильна гроза, внаслідок чого "накрилася" мережева плата, яка давала інет на локальну мережу. Після недовгих роздумів та пошуку грошей, вирішено купити мережеву плату Asus NX1001. Рішення прийшло в магазині, тим паче, що на упаковці гордо значилося, що мережева підтримується Лінаксом.
Завести з рідних драйверів мені цей чудо-агрегат не вдалося, компілятор мабуть був не в настрої, і відправив мене думати:

nx1001_main.c:228: error: expected ‘)’ before string constant
nx1001_main.c:229: error: expected ‘)’ before string constant
nx1001_main.c:230: error: expected ‘)’ before string constant
nx1001_main.c:231: error: expected ‘)’ before string constant
nx1001_main.c: In function ‘netdev_open’:
nx1001_main.c:924: warning: ‘deprecated_irq_flag’ is deprecated (declared at include/linux/interrupt.h:66)
nx1001_main.c:924: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type
nx1001_main.c: In function ‘sundance_init’:
nx1001_main.c:1928: warning: implicit declaration of function ‘pci_module_init’
make[2]: *** [/home/distr/Drivers/Asus_Net/nx1001_main.o] Error 1


Швидкий пошук у гуглі показав, що мережева підтримується лише для ядер серії 2.4.x. Для ядер серії 2.6.х виробник рекомендував самому допиляти драйвер (от Вам і Асус).
Власне помилка, яку довелося виправляти є досить банальною. Дана мережева (якщо я правильно зрозумів опис у файлі) підтримується на рівні ядра модулем sundance. Однак перезбирувати ядро самому було ліньки, а тому я вирішив поправити таки модуль, взявши за основу модуль ядра 2.6.х (яке використовую на сервері).
Загалом невелика правка дозволила запустити драйвер у ролі модуля.
Завантажити правлену версію драйвера (працює з ядром 2.6.22) можна звідси.

Процес встановлення полягає в наступному (працює для Debian)
make all
sudo cp nx1001.ko /lib/modules/$(uname -r)/kernel/drivers/net
sudo modprobe nx1001

Далі прописуємо у /etc/modules рядок
nx1001
і насолоджуємося з'єднанням.

А можна просто перезібрати ядро (якщо у Вас нестандартне), включивши туди підтримку мережевої плати sundance.

вівторок, 19 серпня 2008 р.

Активація тачпаду

Сьогодні явно напружений день.
Надибав відсутність нормальної роботи тачпаду (коли спробував прокрутити сторінку, на полосі, а вона не прокрутилася :) )

Для активації треба внести наступні зміни у файл /etc/X11/xorg.conf:
~$ sudo vim /etc/X11/xorg.conf

Додати наступний пристрій вводу:
Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "HorizEdgeScroll" "0"
EndSection

Та встановити Налаштування Сервера:
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Synaptics Touchpad"
EndSection

неділя, 17 серпня 2008 р.

Що працює

Власне, я так і не описав попутньо, що на ноутбуці працює, а що ні. Однією з причин - бажання скласти якнайбільш об'єктивну картину і провести тестування апаратного та програмного забезпечення на предмет помилок тощо.
Отже, після встановлення системи з диску (останній зріз місяця липня) в системі працює:
1) Екран та клавіатура :)
2) USB-порти.
3) Кард-рідер
4) Звук у навушниках
5) Web-камера

Не працює:
1) Зміна джерела відтворення звуку при увімкненні/вимкненні навушників (треба ставити нове ядро або поновлювати alsa бібліотеки)
2) Тачпад (треба вписати в налаштування Х-сервера)
3) Мережева карта (працює, якщо в процесі встановлення ви перейшли на ядро 2.6.25)
4) Карта бездротового зв'язку
5) Пульт дистанційного керування (не перевірено)
6)Кнопка QuickPlay (на ній мікрософтівська програма перегляду відео, треба буде почепити Totem :) )
7) Можливо ще щось :)

четвер, 14 серпня 2008 р.

Ядро 2.6.27-rc3

Нарешті.... я таки повірив в себе. Після двох тижнів розборок з ядрами, я таки запустив пілотну версію ядра 2.6.27-rc3 на ноутбуці. Серце підказувало, що то не мої криві руки, а таки розробники десь помилилися.
Тепер коротко: проблема полягала у неправильному виклику функції native_smp_prepare() , яку поправили аж у поточній версії (я не переконаний, але дана помилка була присутня у ядрах версії 2.6.26-2). Тому, якщо Ваше ядро не запускається -- спробуйте нову версію ядра з стандартним параметром.

Відкритим залишається питання щодо безпроводового зв'язку (наразі ведеться робота, можливо буду шукати драйвери для XP) та врізання розмірів ядра до прийнятних з подальшим викладенням на сторінці.

Чекайте.