Sarge на Asus A3500L

Введение

Asus A3500L - самый дешевый ноутбук из серии A3. Чипсет i852 со встроенным видео, звуком и прочим всем, чем можно. Экран 1024x768 15''. Винт на 40 Гб. Предустановленная WinXPHome.

Sarge - Debian, которого все долго ждали.

Здесь будут описаны проблемы, возникшие в результате установки этой операционной системы на этот ноутбук. Некоторые из них относятся к настройке Debian для работе с ноутбуками вообще, некоторые - вообще к настройке и использованию этой операционной системы, некоторые могут иметь отношение конкретно к данному железу.

Также настоятельно отсылаю к wiki-страничке DebianAtLaptop, которая честично повторяет эту, но содержит также много других интересных данных.

Установка

Установка производилась с оригинального загрузочного DVD Debianа, к сожалению, одного, который сопровождал выпуск журнала Linux Format. Загрузка с DVD никаких проблем не вызвала, благо, BIOS машины позволяет при нажатии Esc выбрать загрузочное устройство не заходя в сам BIOS Setup. При установке были выбраны следующие опции:

Новая программа установки Debian весьма порадовала большей дружественностью к пользователю (по сравнению с Potato).

***

Debian был обновлен до версии 3.1r1. Ядро обновлено до версии 2.6.12 (пакет linux-image-2.6.12-1-686). Обновления были любезно предоставлены J2A.

***

Собран свой вариант ядра 2.6.12. Отключена поддержка отсутствующих устройств. Применен Software Suspend2 патч версии 2.1.9.9.

***

Debian обновлен до 3.1r2. Установлены Firefox и Thunderbird 1.5 c backports.org. Минуя систему пакетов установлены (распакованы в /opt :) русский OpenOffice.org 2.0.3 и Eclipse 3.2.0.

Управление питанием

Не показывается состояние батареи, питания от сети

Debian не загружает автоматически модули ядра, ответственные за управление питанием - ACPI. Достаточно добавить в файл /etc/modules следующие строчки:

#ACPI modules
asus_acpi   #ноутбук все же ASUS
battery
ac
thermal
button
fan

После чего появляется возможность настроить индикатор зарядки батареи и прочие стандартные штуки KDE, связанные с управлением питанием.

После установки пакета acpi появляется одноименная утилита командной строки, которая показывает некоторые параметры из /proc/acpi.

Также стоит установить acpid. Этот демон "слушает" ACPI-события ядра и предпринимает определенные действия. С конфигурацией по умолчанию демон реагирует на нажатие кнопки Power - это приводит к завершению сеанса KDE и выключению компьютера. Кстати, скрипт запуска демона автоматически пытается загрузить нужные модули ядра, так что, вероятно, можно обойтись без редактирования /etc/modules.

Перезагрузка вместо выключения питания

При выключении питания как из графической оболочки, так и консольными командами halt или poweroff компьютер выключается, но тут же снова включается и пытается загрузиться. В Windows все работает нормально. Вероятно требуется пересобрать ядро или обновить BIOS.

После обновления ядра до версии 2.6.12 (установки пакета linux-image-2.6.12-1-686) проблема самоустранилась.

Не работают режимы энергосбережения

Не работают режимы энергосбережения save-to-ram и save-to-disk. При попытке перейти в эти режимы из KDE получаем в логах:

Dec 28 15:42:17 asus kernel: PM: Preparing system for suspend
Dec 28 15:42:21 asus kernel: Stopping tasks: ======================================================================|
Dec 28 15:42:21 asus kernel: PCI: Setting latency timer of device 0000:00:1d.7 to 64
Dec 28 15:42:21 asus kernel: Could not suspend device 0000:00:1d.7: error -5
Dec 28 15:42:21 asus kernel: ACPI: PCI interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 185
Dec 28 15:42:21 asus kernel: ACPI: PCI interrupt 0000:00:1f.5[B] -> GSI 17 (level, low) -> IRQ 201
Dec 28 15:42:21 asus kernel: PCI: Setting latency timer of device 0000:00:1f.5 to 64
Dec 28 15:42:21 asus kernel: ACPI: PCI interrupt 0000:00:1f.6[B] -> GSI 17 (level, low) -> IRQ 201
Dec 28 15:42:21 asus kernel: PCI: Setting latency timer of device 0000:00:1f.6 to 64
Dec 28 15:42:21 asus kernel: PCMCIA: socket ce74842c: *** DANGER *** unable to remove socket power
Dec 28 15:42:21 asus kernel: PCMCIA: socket ce3c642c: *** DANGER *** unable to remove socket power
Dec 28 15:42:21 asus kernel: ACPI: PCI interrupt 0000:01:05.2[?]: no GSI
Dec 28 15:42:21 asus kernel: Restarting tasks... done

После обновления ядра до версии 2.6.12 save-to-ram заработал, однако после пробуждения не включается экран. Однако важнее save-to-disk. Он не работает. Ни за командой из KDE, ни за консольной командой echo "5" > /proc/acpi/sleep не следует никакой реакции ядра.

***

Ну что ж, совет, приведенный на вышеуказанной wiki странице действительно работает. Делаем:

  1. Скачиваем с www.suspend2.net последний Software Suspend2 патч, подходящий для вашего ядра.
  2. Скачиваем оттуда же hibernate скрипт для нужной версии Software Suspend2. В Sarge вообще-то имеется пакет hibernate с этим скриптом, но он почти наверняка будет древнее патча о чем и скажет в виде warning при попытке запуска. Корректно работать старый скрипт с новым патчем, конечно не будет. Версии патча и скрипта нумеруются самостоятельно, но можно ориентироваться на дату выхода.
  3. Патчим ядро, конфигурируем, пересобираем, устанавливаем.
  4. Не забываем указать загрузчику параметр для ядра - имя swap-раздела, куда будет помещаться образ нашей оперативной памяти. В моем случае в /boot/grub/menu.lst добавился в строку kernel для нужного ядра параметр resume2=swap:/dev/hda2
  5. Устанавливаем hibernate скрипт. Не забываем, что часть скрипта должна быть прописана в /etc/rcS.d, см. README
  6. "Засыпание" компьютера осуществляется вызовом /usr/local/sbin/hibernate. В том же README есть примеры прикручивания к acpid.

И немного о настройках hibernate. Основной файл конфигурации - /etc/hibernate/hibernate.conf. Посмотреть все опции можно выполнив hibernate -h.

Видео

При установке неправильно определился видеоадаптер

При установке системы по умолчанию предлагался видео-драйвер vesa. В этом случае X window работает, но OpenGL подтормаживает, масштабирование видео оставляет желать лучшего. Необходимо поправить файл /etc/X11/XF86Config-4, чтобы описание видеокарты выглядело следующим образом:

Section "Device"
    Identifier  "Generic Video Card"
#   Driver      "vesa"
    Driver      "i810"
EndSection
Оказывается, что встроенные в чипсет от Intel видеоадаптеры, с i810 по i915 включительно, для Linux одинаковы. Вероятно, достаточно было выбрать нужный адаптер при установке.

Touchpad

Не работает "погладь и стукни"

Под Windows встроенный touchpad позволяет "щелкать" мышкой, постукивая по его поверхности; перетаскивать объекты, не пользуясь кнопками под touchpadом; прокручивать окна, двигая палец по краю устройства (особенно важное для меня свойство). В Debian же всех этих удобств мы не наблюдаем.

Достаточно установить пакет xfree86-driver-synaptics (не путать с программой управления пакетами, которая называется Synaptic, без s в конце). После чего необходимо поправить /etc/X11/XF86Config-4 согласно описанию в /usr/share/doc/xfree86-driver-synaptics/README.Debian:

  1. Добавить загрузку модуля в секцию Module
    Section "Module"
            ...
            Load    "synaptics"
    EndSection
  2. Заменить секцию, описывающую мышь на следующую:
    Section "InputDevice"
            Driver        "synaptics"
            Identifier    "Configured Mouse"
            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"
    EndSection
После перезапуска X System touchpad будет работать даже лучше, чем в Windows.

Также в Debian есть пакет ksynaptics, позволяющий настраивать поведение touchpad из KDE, но у меня на диске его, к сожалению, не оказалось.

Клавиатура

Непривычная раскладка русских букв

Существует две раскладки русских букв на клавиатуре: "машинопись" - более старая, где точка и запятая набираются с Shift на верхних цифровых клавишах; и от Windows, где точка и запятая находятся возле буквы Ю. На большинстве клавиатур (в том числе и этого ноутбука) нанесена раскладка Windows, а Debian предлагает по умолчанию "машинопись".

Для переключения на Windows раскладку надо добавить параметр XkbVariant в секцию конфигурации клавиатуры файла /etc/X11/XF86Config-4, чтобы она выглядела так:

Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "keyboard"
        Option          "CoreKeyboard"
        Option          "XkbRules"      "xfree86"
        Option          "XkbModel"      "pc105"
        Option          "XkbLayout"     "us,ru"
        Option          "XkbVariant"    ",winkeys"      #вот новый параметр
        Option          "XkbOptions"    "grp:ctrl_shift_toggle,grp_led:scroll"
EndSection

Можете также почитать документацию в каталоге /usr/share/doc/xxkb.

Не работают клавиши регулировки громкости

В отличие от клавиш регулировки яркости дисплея, клавиши регулировки громкости должны обрабатываться программно. Однако их коды не передаются X серверу или консоли, но перехватываются ACPI демоном. Итак, нам необходимо установить пакеты acpid и alsa-utils. В последнем нам нужен консольный ALSA микшер amixer, если вы используете другую систему звука (скажем, OSS), вам придется поправить приведенные ниже команды.

Настроим acpid. Создадим файлы, описывающие обработчики событий:

Файл /etc/acpi/events/snd_mute:

event=hotkey ATKD 00000032
action=/usr/bin/amixer -q sset Master toggle

Файл /etc/acpi/events/snd_vol_up:

event=hotkey ATKD 00000030
action=/usr/bin/amixer -q sset Master 10%%+,10%%+

Файл /etc/acpi/events/snd_vol_down:

event=hotkey ATKD 00000031
action=/usr/bin/amixer -q sset Master 10%%-,10%%-

См. документацию man acpid и man amixer.

О переключении раскладок

Имеем два способа переключения раскладок клавиатуры:

Второй вариант перевесил. Переключение средствами X сервера отключено комментированием строки с параметром XkbOptions. Для переключения раскладок я назначил сочетание Alt+Space, по аналогии с MacOS, где используется Command+Space.

Связь

Модем не работает

Имеем типичный win-модем - на com-порту никто не откликается. Смотрим, что за зверь:

# lspci
...
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03)
0000:00:1f.6 Modem: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03)
...

Во многих Интернет-источниках (например на ru.wikibooks.org) утверждается, что это модем SmartLink и для работы с ним нужен slmodemd. Этот демон существует в виде пакета sl-modem-daemon, к сожалению в разделе non-free. Демон может работать с модемом либо через свой модуль ядра slamr, исходные коды для сборки которого доступны в пакете sl-modem-source, либо через ALSA ядер 2.6 (необходимо наличие модуля ядра snd-intel8x0m). Первый вариант у меня не сработал:

# modprobe slamr
# slmodemd
error: mdm setup: cannot open dev `/dev/slamr0': Device or resource busy
error: cannot setup device `/dev/slamr0'
Т.е. модуль заружается успешно, но устройство не работает.

Второй вариант тоже не работает. Модуль загружается и работает, /dev/modem успешно создается, модем (демон) отвечает на AT команды, но при попытке набрать номер неизменно отвечает NO DIALTONE.

***

Еще один "linmodem" - mwave - тоже (вполне ожиданно) не работает:

# modprobe mwave
FATAL: Error inserting mwave (/lib/modules/2.6.12-gelin-A3L/kernel/drivers/char/mwave/mwave.ko): Input/output error

***

Более пристальные исследования показывают вот что (необходимо, чтобы модуль slamr отсутствовал в /lib/modules текущего ядра):

# cat /proc/asound/oss/sndstat
Sound Driver:3.8.1a-980706 (ALSA v1.0.9rc2 emulation code)
...
Card config:
Intel 82801DB-ICH4 with ALC650F at 0xf800400, irq 169
Intel 82801DB-ICH4 Modem at 0xe200, irq 169

Audio devices:
0: Intel 82801DB-ICH4 (DUPLEX)
1: Intel 82801DB-ICH4 Modem - Modem (DUPLEX)
...
Mixers:
0: Realtek ALC650F
1: Conexant id 22
У нашего модема чипсет не SmartLink, а Conexant. Просмотр сведений о модеме под Windows и сведения сайта linuxant.com (у нашего модема PCI ID = 8086:24C6) говорят также, что это, так называемый, HSF модем. Однако, нужного драйвера в числе пакетов Sarge не нашлось.

***

Ищем и качаем драйвера с linuxant.com. В первую очередь сильно огорчила лицензия на драйвера. Перед вами, господа, образец НЕ свободного ПО. Вы имеете право лишь устанавливать драйвер на свой компьютер и распростанять бесплатную (FREE) версию драйвера. К тому же бесплатная версия ограничивает скорость вашего модема 14 Кбит/с. Платная версия снимает эти ограничения и стоит около $20.

Я взял драйвера версии 7.43.00.01 в виде deb-пакета. При установке пакета запускается скрипт, который запрашивает местоположения исходников ядра, собирает модули (таки из исходников?), запрашивает e-mail, выдает "серийный номер" драйверов и запрашивает "код активации" (по умолчанию это FREE, чем я и воспользовался). После установки в каталоге /lib/modules/<версия ядра>/extra появились файлы hsf*.ko - модули ядра нашего модема. В моем случае нужен модуль hsfmc97ich, однако он конфликтует с имеющимся в системе snd-intel8x0m. В общем, я не стал ломать голову и просто перезагрузился.

Ну что ж, на первый взгляд модем вроде работает. Есть /dev/modem, который отвечает на AT команды. При попытке набрать номер модем "поднимает трубку" - слышны гудки, такого не было со всеми предыдущими драйверами. Однако тоновый набор, это хорошо, но моя АТС его не понимает. А при импульсном наборе "щелчки" модема идут на фоне непрерывного гудка АТС, не воспринимает она наши попытки набрать номер. А под Windows ведь все нормально.

Проблема не решена.

Beeline GPRS

Имеем:

Не имеем:

Хотим:

Все более-менее подробно изложено в статьях на omsk.lug.ru и phd.pp.ru. Подытожим для нашего случая.

Нужны модули ядра:

$ tail -5 /etc/modules
#IRDA of Siemens ME45 modules
ircomm
ircomm_tty
sir_dev
irtty_sir

Нужны программулины. Не уверен насчет OBEX (кажется, он нужен для доступа к flash памяти телефона), но утилиты для работы с IRDA (irattach) нужны точно:

$ dpkg-query --list *irda*
ii  irda-utils                0.9.16-9                  IrDA management and handling utilities
$ dpkg-query --list *obex*
ii  libopenobex-1.0-0         1.0.0-rel-3               OBEX protocol library
ii  obexftp                   0.10.7-3                  file transfer utility for devices that use the OBEX protocol

Нужно настроить KPPP (мы ведь без GUI не могем :) (показаны только самые интересные настройки):

$ cat ~/.kde/share/config/kppprc | konwert utf8-koi8r
[Account1]
AutoDNS=1
AutoName=0
DNS=
DefaultRoute=1
Gateway=0.0.0.0
IPAddr=0.0.0.0
Name=Beeline
Password=beeline
Phonenumber=*99***1#
SubnetMask=0.0.0.0
Username=beeline
pppdArguments=debug

[Modem1]
Device=/dev/ircomm0
DialString=ATDT
Enter=CR
FlowControl=Аппаратное [CRTSCTS]
InitString=AT+CGDCONT=1,"IP","internet.beeline.ru"
Name=ME45
Speed=115200
Timeout=120

Нужно настроить pppd (настройки по умолчанию не годятся). Я использовал файл конфигурации $HOME/.ppprc, т.к. планировал использовать KPPP и не собирался пользоваться другим модемом, подробности смотрите в man pppd:

$ egrep -v ^\ *#\|^\ *$ ~/.ppprc
lcp-echo-failure 0
lcp-echo-interval 0
/dev/ircomm0
115200 # fast enough
crtscts  # serial cable, Bluetooth and USB, on some occasions with IrDA too
local
noipdefault
ipcp-accept-local
defaultroute
replacedefaultroute
usepeerdns
novj
nobsdcomp
novjccomp
nopcomp
noaccomp
nodeflate

После этих манипуляций и при наличии денег на счету, все работает.

Прочее железо

Card reader не работает

asus:/# lspci | grep Ricoh
0000:01:05.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ac)
0000:01:05.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ac)
0000:01:05.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 04)

При вставке SD карточки получаем:

asus:/# cardmgr
asus:/# tail -3 /var/log/daemon.log
Mar 21 23:25:45 asus cardmgr[7532]: starting, version is 3.2.5
Mar 21 23:25:45 asus cardmgr[7532]: unsupported card in socket 0
Mar 21 23:25:45 asus cardmgr[7532]:   product info: "RICOH", "Bay1Controller"

Гугление показало, что драйверов под Linux, даже закрытых, нет. И Ricoh отказывается опубликовывать спецификации. Есть экспериментальный драйвер, но мне не удалось его собрать.

Проблема не решена.

Монтирование устройств

Автоматическое монтирование USB-flash

Хотелось бы, чтобы USB-flash брелки при подключении монтировались бы автоматически. Полной автоматизации не получилось, но статья на www.debianhelp.org подсказала некоторые интересные детали.

Строчка в /etc/fstab у меня выглядит так:

/dev/sda1       /media/usb0    auto    rw,user,users,noauto,noatime,codepage=866,iocharset=koi8-r  1       2

Проблема решена не полностью.

Шрифты

Не отображается меню на русском языке в OpenOffice.org

Вместо текста пунктов меню видны прямоугольники. В то же время, отдельные англоязычные пункты меню отображаются нормально. Пришлось удалить пакет openoffice.org-l10n-ru. После этого все меню стало английским, но зато стало отображаться.

Потом я сделал две вещи:

  1. Установил пакеты с ttf, Unicode и кириллическими шрифтами, которые не были ранее установлены, к примеру, ttf-freefont, xfonts-cronyx-75dpi.
  2. Скопировал Windows шрифты (windows/Fonts/*.ttf) в каталог /usr/X11R6/lib/X11/fonts/TrueType

К сожалению не знаю, что именно помогло, но после этого проблема с русскими буквами в OpenOffice исчезла. openoffice.org-l10n-ru я поставил обратно.

***

При установке русского OpenOffice.org 2.0.3 проблема не повторялась.

Проблемы с размером русских букв

В X Window во многих местах, в частности в заголовках окон KDE размер русских букв отличается от размера латинских букв, хотя шрифт один и тот же.

***

Хм. А проблема-то действительно в шрифтах. Шрифты по умолчанию, используемые в KDE (Beatstream Vera...), как раз и выглядят так странно. Такое ощущение, что русские буквы вообще отображаются другим шрифтом. Если выбрать что-нибудь вроде FreeMono, FreeSans или даже виндовые Arial, Courier New, Lucida Console (которые, как это ни печально, выглядят лучше всех), то все становится на свои места. Однако все равно, разные шрифты одного размера почему-то имеют разную высоту.

Проблема решена?

Красивости

GTK приложения в KDE

Не нравился вид GTK (т.е. GNOME) приложений под KDE. По умолчанию использовалась не вполне красивая тема с плоскими квадратными кнопками и изменения, вносимые через Панель Управления GNOME, сохранялись только в текущем сеансе работы. Оказалось, что достаточно установить пакет gtk2-engines-gtk-qt и в Центре Управления KDE появляется новый пункт "GTK Styles and Fonts", где можно выбрать Qt (т.е. KDE) тему для GTK приложений. Теперь все GNOME программы выглядят также как "родные" KDE приложения.

Denis Nelubin, Dec 2005 - Mar 2007
Creative Commons License This work is licensed under a Creative Commons Attribution-Share Alike 3.0 License.