Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 120, ДЕКАБРЬ 2008 г.

Посели пингвина на лаптопе: опыт использования ОС Linux на Fujitsu-Siemens Esprimo Mobile U9200

Влад «Stealth» Глаголев (stealth@sourcemage.org, enqlave.net)




Ни для кого не секрет, что корпорация Fujitsu-Siemens, желая походить на Hewlett-Packard и Dell, не только не игнорирует Linux-сообщество, но и всячески его поощряет, выпуская в последнее время ноутбуки, максимально совместимые с Linux. Esprimo Mobile U9200 - один из них.Комфортно ли чувствует себя пингвин на этом лаптопе?

История берет свое начало осенью 2007-го, когда я подумывал о приобретении некого портативного девайса, способного удовлетворить мои потребности в областях разработки программного обеспечения, графического дизайна и, конечно же, игромании. Поиск особи занял около 2-х месяцев. Не могу не отметить web-сайты, которые помогли мне в этом непростом деле: tuxmobile.org, www.linux-laptop.net, www.google.com. После всевозможных сравнений выбор пал на Fujitsu-Siemens, так как нужно было что-то практичное (unDell), «не мажорное» (unSony) и, в общем-то, надежное (unRoverBook). Дальше я оценивал дизайн корпуса и относительную «новизну». Поэтому – U9200.

Единственное упоминание о Linux на U9200 я нашел на сайте немецкого журнала, - да и то, весь (а возможно, и не весь) процесс был описан только в печатном издании. В любом случае, я рискнул… и сейчас осознаю, что не зря.

Мой девиз «OpenBSD everywhere», конечно, с треском провалился (несмотря на то, что эта ОС все равно сейчас стоит на 2-гиговой SD-карте в качестве альтернативы: ну нужен, бывает, сетевой функционал, которого нет больше нигде). Почему? Ноутбук для меня - это мультимедийный «друг», поэтому без поддержки звуковой карты (привет создателям драйвера azalia) вся его мультимедийность сводится к нулю.

Даже с моим опытом работы в двенадцати различных ОС (Solaris, Darwin, QNX и т.д.) я быстро осознал, что все это – «дохлый номер». Поэтому, недолго думая, вставил нарезанную болванку с одним Linux-дистрибутивом и на некоторое время забыл, что существуют какие-либо аналоги оного. Названия дистрибутива я не упоминаю умышленно, потому что мо статья призвана помочь решить проблемы U9200 с ЛЮБЫМ дистрибутивом Linux.

Быть дружбе или нет?

Ниже представлен список совместимости устройств Fujitsu-Siemens Esprimo Mobile U9200 с ядром Linux, начиная с ветки 2.6.23:

  1. CPU: Intel Core 2 Duo - OK
  2. ACPI - OK
  3. Запись CD/DVD, TSSTcorp CDDVDW TS-L632H - OK
  4. Клавиатура - OK
  5. Специальные клавиши - OK
  6. Тачпад, Synaptics-совместимый - OK
  7. Звук, HDA Intel ALC262 - OK
  8. Ethernet, Marvell 88E8055 PCI-E Gigabit -OK
  9. Wi-Fi, Intel PRO/Wireless 3945ABG - OK
  10. Web-камера, Foxlink - OK
  11. Bluetooth, Cambridge Silicon Radio, Ltd Bluetooth Dongle - OK
  12. Видео, Intel 965GM (GMA X3100) - OK
  13. SD кард-ридер, Genesys Logic, Inc. USB 2.0 microSD Reader - OK
  14. Подключение дополнительного монитора - OK
  15. ExpressCard - OK
  16. S3 (STR, «Suspend to RAM», режим засыпания - сохранение текущего состояния работы в оперативной памяти) - OK
  17. S4 (STD, «Suspend to disk», режим засыпания - сохранение текущего состояния работы на жестком диске) - OK
  18. USB - OK
  19. LEDS - OK
  20. Дополнительная батарея - OK

Через два дня после покупки удалось добиться соответствия этому списку на 90%. А в конечном итоге - на 100%.
Кроме того, за полгода пришлось претерпеть множество изменений (2.6.23 -> 2.6.27); в ядро постоянно добавлялись новые и удалялись старые драйверы, а именно:

  1. Начиная с ветки 2.6.24, присутствует подсистема iwlwifi (intellinuxwireless.org) – «рабочая лошадка» для Wi-Fi.
  2. Начиная с ветки 2.6.25, присутствует поддержка UVC (linux-uvc.berlios.de), что позволяет использовать встроенную web-камеру.
  3. Некоторые изменения в ACPI, драйвере sky2 (Ethernet) и Intel HDA (HD Audio).

Также в новой ветке 2.6.28 уже включена поддержка GEM (Graphics Execution Manager) - новой системы управления памятью, разработанной компанией Intel. Она работает на уровне ядра Linux и предназначена для низкоуровневого взаимодействия с графическим процессором. Для U9200 - это i965GM (GMA X3100). Примечательно, что обладатели карточек Intel за счет GEM получат повышение производительности на 50-60% (так показывают тесты).
Полный список оборудования можно просмотреть программами «lspci» и «lsusb» из pciutils и usbutils, соответственно.

Разберемся в ЦНС

Стоп! Прежде, чем разбираться, нужно знать «как». Ты должен уметь собирать ядро и настраивать в соответствии с ним загрузчик. Рассматривать будем последнюю на момент написания статьи ветку ядра Linux (2.6.27).Я – яростный приверженец минимализма и рекомендую выносить из ядра все лишнее, чтобы уменьшить его размер и хоть чуточку снизить время компиляции: например, если в списке десятки драйверов аудио-карт, зачем держать их все, да тем более в ноутбуке, когда знаешь, что тебе конкретно нужно?

Разберемся в ЦНС! (попытка №2)

Набираем «make menuconfig» (если в твоем дистрибутиве нет механизмов для конфигурации и установки ядра) и поехали.

  1. Выбираем тип процессора: Processor type and features -> (Processor family -> Core 2/newer Xeon; Maximum number of CPUs -> 2; MTRR);
  2. Включаем возможности «засыпания» и event-интерфейс для работы с acpid: Power management options -> (Suspend to RAM; Hibernation; ACPI -> Deprecated /proc/acpi/event support; CPU Frequency scaling -> ACPI Processor P-States driver);
  3. PCI Hotplug требуется для подключения ExpressCard: Bus options -> (PCI Express support -> PCI Express Hotplug driver; ISA support; Support for PCI Hotplug);
  4. В настройках Сети выбираем поддержку Bluetooth и стек для Wi-Fi: Networking support -> (Bluetooth subsystem support -> (RFCOMM protocol support; Bluetooth device drivers -> HCI USB driver); Wireless -> (nl80211 new netlink interface support; Generic IEEE 802.11 Networking Stack (mac80211)));
  5. Настройка драйверов устройств: Device Drivers;
    1. Включаем поддержку SCSI устройств: SCSI device support -> (legacy /proc/scsi/ support; SCSI disk support; SCSI CDROM support; SCSI generic support);
    2. Так как U9200 позволяет работать жестким дискам через интерфейс IDE, включаем его здесь: Serial ATA (prod) and Parallel ATA (experimental drivers) -> (ATA ACPI Support; ATA SFF support -> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support);
    3. Драйверы для сетевых устройств проводной и беспроводной связи: Network device support -> (Ethernet (1000 Mbit) -> SysKonnect Yukon2 support; Wireless LAN -> Wireless LAN (IEEE 802.11) -> Intel PRO/Wireless 3945ABG/BG Network Connection);
    4. Изменяем «родное» разрешение для использования мыши, добавляем драйвер для работы тачпада и клавиатуры: Input device support -> (Mouse interface -> (Horizontal screen resolution -> 1280; Vertical screen resolution -> 800); Event interface; Keyboards -> AT keyboard; Mice -> PS/2 mouse -> Synaptics PS/2 mouse protocol extension);
    5. Сенсоры I2C позволяют определять температуру процессора и многое другое: I2C support -> I2C Hardware Bus support -> Intel 82801 (ICH);
    6. Включаем поддержку web-камеры: Multimedia devices -> (Video For Linux; Video capture adapters -> V4L USB devices -> USB Video Class (UVC) -> UVC events device support);
    7. Включаем поддержку графического адаптера i965GM (i915 family) и DRM для него: Graphics support -> (/dev/agpart (AGP Support) -> Intel 440LX/BX/GX, I8xx and E7x05 chipset support; Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) -> Intel 830M, 845G, 852GM, 855GM, 865G -> i915 driver);
    8. Выбираем звуковую карточку и соответствующий кодек для нее: Sound card support -> Advanced Linux Sound Architecture -> (OSS PCM (digital audio) API; PCI sound devices -> Intel HD Audio -> Build Realtek HD-audio codec support);
    9. Поддержка USB 1.1 и 2.0: USB support -> (Support for Host-side USB -> USB selective suspend/resume and wakeup; EHCI HCD (USB 2.0) support; OHCI HCD support; UHCI HCD (most Intel and VIA) support; USB Mass Storage support).

Слух и речь

После установки любой ОС в первую очередь я проверяю и настраиваю звук. Не будем нарушать эту старую традицию. ALSA-lib и ALSA-utils (www.alsa-project.org) – вот все, что нужно для работы звука (не забываем, что в некоторых случаях драйвер ядра (Intel HD Audio) должен быть собран в виде модуля). Для реконфигурации:

# alsaconf

Выбираем Intel HD Audio и наслаждаемся потоками звука, играясь с консольным микшером «alsamixer». Интегрированные колоночки, правда, не совершенны, но вполне оправдывают свое предназначение. Встроенный микрофон также работает без проблем.

Осязание

Спецклавиши в X11 настраиваются с помощью xmodmap(1). Файл .Xmodmap в домашнем каталоге может выглядеть следующим образом:

$ nano ~/.Xmodmap

keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume
keycode 160 = XF86AudioMute

Чтобы определить keycode клавиши, используются программы xev(1) и showkey(1). А соответствия X11 - в файле /usr/share/X11/XKeysymDB. После запуска оконного менеджера (XFCE автоматически запускает xmodmap с настройками в ~/.Xmodmap, а во Fluxbox это нужно сделать принудительно, добавив строку "xmodmap ~/.Xmodmap" в ~/.fluxbox/startup) идет настройка соответствия клавишам. Для Fluxbox это делается примерно так:

$ nano ~/.fluxbox/keys

None XF86AudioMute :ExecCommand amixer -q sset "Speaker" toggle
None XF86AudioLowerVolume :ExecCommand amixer -q sset "PCM" 5-
None XF86AudioRaiseVolume :ExecCommand amixer -q sset "PCM" 5+

Флеш-память и привод

Автомонтирование «подцепленных» flash-устройств и других USB-носителей (в том числе и со встроенного кард-ридера) работает, как говорится, «из коробки», если в системе установлены D-Bus, HAL и какой-либо графический файловый менеджер (Thunar). Обычно подмонтированные устройства помещаются в каталог /media, а единственному CD/DVD-устройству можно выделить отдельное место, отредактировав файл /etc/fstab:

# nano /etc/fstab

/dev/sr0 /mnt/cdrom iso9660 ro,noauto,user 0 0

Запись CD/DVD - задача довольно тривиальная, однако я бы порекомендовал программы, которые используют библиотеку libburn (libburnia-project.org), а именно xfburn (www.xfce.org/projects/xfburn/) и Brasero (www.gnome.org/projects/brasero/).

Зрение

Для работы web-камеры я использую UCView (www.unicap-imaging.org/ucview.htm), но наверняка существуют и альтернативы (с тех пор, как поддержка UVC была включена в ядро).

Питание и сон

Единственное, что нужно для работы ACPI - это acpid (acpid.sourceforge.net). После его установки создаем файлы в /etc/acpi/actions и /etc/acpi/events:

# mkdir -p /etc/acpi/{actions,events}

# nano /etc/acpi/actions/power.sh

#!/bin/sh

echo "disk" > /sys/power/state

# nano /etc/acpi/actions/sleep.sh

#!/bin/sh

echo "mem" > /sys/power/state

# nano /etc/acpi/events/power

event=button/power
action=/etc/acpi/actions/power.sh

# nano /etc/acpi/events/sleep

event=button/sleep
action=/etc/acpi/actions/sleep.sh

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

# chmod -R 644 /etc/acpi/events/*
# chmod -R 755 /etc/acpi/actions/*

После запуска «acpid» засыпание и выключение питания должны работать по соответствующим кнопкам клавиатуры.Два часа без подзарядки мне показалось маловато, поэтому я заказал из Германии дополнительную батарею. Системой она определилась без особых проблем и в мониторчике conky (conky.sourceforge.net) смотрится вкупе с первой очень элегантно.

Связь с внешним миром

Настройка wired сети не должна вызвать проблем, в крайнем случае - смотри справочную страницу ifconfig(8). А с wireless придется немного потрудиться. В первую очередь нужны wireless_tools (hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html), для работы WPA/WPA2 - wpa_supplicant (hostap.epitest.fi/wpa_supplicant/). Приведу пример конфигурационного файла для соединения WPA:

# nano /etc/wpa_supplicant.conf

# Каталог для сохранения информации о текущих подключениях
ctrl_interface=/var/run/wpa

network={
# Параметры для подключения
ssid="COMPANY_SSID"
scan_ssid=1
proto=WPA
key_mgmt=WPA-PSK
pairwise="CCMP TKIP"
psk="my_very_secure_passphrase"
}

После конфигурирования поднимаем интерфейс и запускаем wpa_supplicant:

# iwconfig wlan0
# wpa_supplicant -B -i wlan0 -D wext -c /etc/wpa_supplicant.conf

А далее настраиваем сеть либо средствами dhcp, либо статически.Для работы bluetooth потребуется пакет bluez (www.bluez.org), после установки которого создаем файл конфигурации:

# nano /etc/bluetooth/rfcomm.conf

rfcomm0 {
bind yes;
# MAC-адрес устройства, полученного командой «hcitool scan»
device 00:1E:45:46:97:A0;
channel 1;
# Описание линии связи или устройства
comment "Sony Ericsson K550i";
}

Внешний вид

Времена консолей для ноутбуков, думается мне, прошли. И сейчас без проекта X.Org Foundation мы не представляем себе ежедневного существования, поэтому перейдем к конфигурированию основных секций файла /etc/X11/xorg.conf:

# nano /etc/X11/xorg.conf

Section "Extensions"
# Включение композитного менеджера (для использования спецэффектов в compiz и xfce compositor)
Option"Composite" "Enable"
Option"RENDER" "Enable"
EndSection
# Дела "мышиные"
Section "InputDevice"
Identifier"V-MIC"
Driver"mouse"
Option"Device" "/dev/input/mice"
Option"Protocol" "ImPS/2"
Option"ZAxisMapping" "4 5"
Option"Emulate3Buttons" "False"
EndSection
# Тачпад
Section "InputDevice"
Identifier"V-TCH"
Driver"synaptics"
Option"Protocol" "SynPS/2"
Option"SHMConfig" "On"
# Активация режима скроллинга "TwoFinger"
Option"VertTwoFingerScroll" "True"
Option"HorizTwoFingerScroll" "True"
EndSection
# Клавиатура
Section "InputDevice"
Identifier"V-KBD"
Driver"kbd"
Option"AutoRepeat" "300 30"
Option"XkbRules" "xorg"
Option"XkbModel" "fujitsu"
Option"XkbLayout" "us,ru"
Option"XkbVariant" ",winkeys"
# Переключение раскладок комбинацией Ctrl+Shift
Option"XkbOptions" "grp:ctrl_shift_toggle,caps:shift"
EndSection

Заключение

Надеюсь, тебе удастся подружить Linux и ноутбук (если придерживаться этих советов, то любой, а не только U9200). Не забывай: когда возникают проблемы совместимости - система, равно как и железо, всегда даст знать. Для этого и были созданы системы протоколирования. Почаще наблюдай за ними, особенно после очередного обновления программной части. Засим откланяюсь!

Что случилось с FPS?

Сейчас во многие дистрибутивы «запихивают» недавно вышедшую в свет библиотеку MesaLib 7.2 - реализацию OpenGL. Проблема в том, что после перехода на 7.2 сотни обладателей i965GM ощутили дикое падение производительности: примерно в 14 раз. В MesaLib 7.2 была добавлена полная реализация i965, и это повлекло за собой такие проблемы. После моей беседы с одним из разработчиков DRI-модуля для i965 (Gordon Jin <gordon.jin@intel.com>) проблема была решена созданием файла /etc/drirc следующего содержания:

<driconf>
<device screen="0" driver="i965">
<application name="Default">
<option name="vblank_mode" value="0"/>
</application>
</device>
</driconf>

Но падение производительности все же осталось (примерно на 10%, так как поддержка TTM была вынесена из MesaLib 7.2), поэтому рекомендую откатиться на предпоследнюю стабильную версию MesaLib - 7.0.4 и подождать выхода нового ядра Linux (2.6.28), где уже можно будет использовать GEM.

DVD

На нашем диске ты найдешь примеры конфигурационных файлов xorg.conf, rfcomm.conf, .conkyrc и .Xmodmap.

INFO

Не путай DRM и DRI. DRM - модуль ядра (например, i915.ko), работающий на более низком уровне. DRI - модуль X-сервера (i965_dri.so) для твоего чипсета, являющийся частью MesaLib.

WWW

Официальный сайт поддержки FS, где можно скачать, например, готовые ISO-образы для обновления BIOS: support.fujitsu-siemens.com/COM/support/downloads.html.

WARNING

xorg-server и MesaLib тесно связаны друг с другом (это собираются «исправить» в версии 1.6), поэтому при откате MesaLib до 7.0.4 придется откатить и xorg-server до 1.4.2.

Содержание
загрузка...
Журнал Хакер #151Журнал Хакер #150Журнал Хакер #149Журнал Хакер #148Журнал Хакер #147Журнал Хакер #146Журнал Хакер #145Журнал Хакер #144Журнал Хакер #143Журнал Хакер #142Журнал Хакер #141Журнал Хакер #140Журнал Хакер #139Журнал Хакер #138Журнал Хакер #137Журнал Хакер #136Журнал Хакер #135Журнал Хакер #134Журнал Хакер #133Журнал Хакер #132Журнал Хакер #131Журнал Хакер #130Журнал Хакер #129Журнал Хакер #128Журнал Хакер #127Журнал Хакер #126Журнал Хакер #125Журнал Хакер #124Журнал Хакер #123Журнал Хакер #122Журнал Хакер #121Журнал Хакер #120Журнал Хакер #119Журнал Хакер #118Журнал Хакер #117Журнал Хакер #116Журнал Хакер #115Журнал Хакер #114Журнал Хакер #113Журнал Хакер #112Журнал Хакер #111Журнал Хакер #110Журнал Хакер #109Журнал Хакер #108Журнал Хакер #107Журнал Хакер #106Журнал Хакер #105Журнал Хакер #104Журнал Хакер #103Журнал Хакер #102Журнал Хакер #101Журнал Хакер #100Журнал Хакер #099Журнал Хакер #098Журнал Хакер #097Журнал Хакер #096Журнал Хакер #095Журнал Хакер #094Журнал Хакер #093Журнал Хакер #092Журнал Хакер #091Журнал Хакер #090Журнал Хакер #089Журнал Хакер #088Журнал Хакер #087Журнал Хакер #086Журнал Хакер #085Журнал Хакер #084Журнал Хакер #083Журнал Хакер #082Журнал Хакер #081Журнал Хакер #080Журнал Хакер #079Журнал Хакер #078Журнал Хакер #077Журнал Хакер #076Журнал Хакер #075Журнал Хакер #074Журнал Хакер #073Журнал Хакер #072Журнал Хакер #071Журнал Хакер #070Журнал Хакер #069Журнал Хакер #068Журнал Хакер #067Журнал Хакер #066Журнал Хакер #065Журнал Хакер #064Журнал Хакер #063Журнал Хакер #062Журнал Хакер #061Журнал Хакер #060Журнал Хакер #059Журнал Хакер #058Журнал Хакер #057Журнал Хакер #056Журнал Хакер #055Журнал Хакер #054Журнал Хакер #053Журнал Хакер #052Журнал Хакер #051Журнал Хакер #050Журнал Хакер #049Журнал Хакер #048Журнал Хакер #047Журнал Хакер #046Журнал Хакер #045Журнал Хакер #044Журнал Хакер #043Журнал Хакер #042Журнал Хакер #041Журнал Хакер #040Журнал Хакер #039Журнал Хакер #038Журнал Хакер #037Журнал Хакер #036Журнал Хакер #035Журнал Хакер #034Журнал Хакер #033Журнал Хакер #032Журнал Хакер #031Журнал Хакер #030Журнал Хакер #029Журнал Хакер #028Журнал Хакер #027Журнал Хакер #026Журнал Хакер #025Журнал Хакер #024Журнал Хакер #023Журнал Хакер #022Журнал Хакер #021Журнал Хакер #020Журнал Хакер #019Журнал Хакер #018Журнал Хакер #017Журнал Хакер #016Журнал Хакер #015Журнал Хакер #014Журнал Хакер #013Журнал Хакер #012Журнал Хакер #011Журнал Хакер #010Журнал Хакер #009Журнал Хакер #008Журнал Хакер #007Журнал Хакер #006Журнал Хакер #005Журнал Хакер #004Журнал Хакер #003Журнал Хакер #002Журнал Хакер #001