20081215

eeePC 901 и Debian (установка и настройка)

У моей жены теперь появился eeePC 901. Эту модель выбрали в основном потому, что в ней сочетается ещё достаточно компактный размер и малый вес (при этом экран уже 1024×600), ёмкий аккумулятор и экономичный процессор (это один из наиболее автономных нетбуков), при этом цена вполне разумна. Выбрали жизнерадостный зелёный вариант исполнения с предустановленным Linux (в этом случае второй встроенный флэш-диск 16 ГБ, а не 8 ГБ, как в версии с Windows).

Вообще, надо отметить, что мы, конечно, с самого начала планировали ставить на него полноценный дистрибутив, но всё равно меня очень огорчила неполная работоспособность предустановленного Xandros.

Всё дело в том, что в 901, 1000 и 1000H Асус стал ставить модуль WiFi Realtek RT2860, драйвер к которому довольно сырой и требует проприетарной прошивки. Как результат, eeePC 901 из коробки просто не мог подключиться к открытой (!) точке доступа (тоже Асус, кстати). Такой хоккей нам не нужен. Более того, я теперь не удивляюсь, что им где-то там возвращают машины с Linux. Даже такая базовая для нетбука вещь как WiFi из коробки в новых 901 толком не работает, и не работает по вине производителя. Очень, очень стыдно, Асус, мы в тебя верили, а ты явно предпочитаешь модели без Linux! Одно отрадно: за лицензию Windows платить не пришлось, а проблема с WiFi решаема.

Так что почти сразу появился стимул поставить нормальный Debian. Сразу скажу, что с установкой системы моя жена справилась самостоятельно. Я только подсказал, как загрузочный образ debian-eeepc.img записать на флэшку:
0. посмотреть как называется устройство флэшки в выводе команды mount,
1. отсоединить том флэшки,
2. dd if=debian-eeepc.img of=/dev/устройство_флэшки,
3. sync
и подсказал ещё как лучше разбить диск (/ на первом флэш-диске, 4 ГБ, /home на втором, 16 ГБ, раздел для подкачки не создавали). Следуя рекомендации в Debian Wiki мы оставили два небольших раздела на первом флэш-диске. Вроде бы это ускоряет загрузку.

Для загрузки с установочной флэшки, нужно вставить флэшку, нажать ESC при перезагрузке устройства и выбрать устройство, с которого осуществлять загрузку. WiFi включается в BIOS (F2 при загрузке), это необходимо, если планируется ставить систему по беспроводной сети. Мы ставили по обычному Ethernet.

Основной источник информации при установке и настройке Debian на eeePC: Debian EeePC Wiki.

После установки почти всё сразу заработало. Ручного вмешательства потребовали только настройка sudo, WiFi и звук (микрофон). Засыпание/просыпание и видеокамера заработали сразу после установки. VGA-выход ещё не проверяли. Даже многопальцевые комбинации на тачпэде работают (хотя и не настраиваются, и мне кажутся непривычными после тачпэда synaptics). Bluetooth ещё не проверяли. Кардиридер работает.

sudo настраивается как обычно, запуском visudo от root-а, и добавлением строки
username ALL=(ALL) ALL
в файл /etc/sudoers. Другой вариант, раскомментировать строчку
%sudo ALL=NOPASSWD: ALL
а пользователя добавить в группу sudo.

Драйвер для WiFi доступен как на сайте производителя (Ralink), так и в репозитории
deb http://eeepc.debian.net/debian lenny main contrib non-free
Данный репозиторий подключается автоматически, если установка велась с указанного выше загрузочного образа.

После установки rt2860-modules-2.6.26-1-686 появляется возможность использовать сетевой интерфейс ra0. Разные способы настройки описаны здесь. Я же выбрал лёгкий путь и поставил wicd. Минутой позже я спокойно подключился к точке доступа с WPA2PSK.

Вообще, попробовал wicd я совсем недавно, и должен сказать, что это наиболее логичная и ясная графическая конфигурялка сети, которую я пока что видел. Устанавливается созданием файла /etc/apt/sources.list.d/wicd.list с указанием на сторонний репозиторий:
deb http://apt.wicd.net lenny extras
импортом ключей:
wget -q http://apt.wicd.net/wicd.gpg -O- | sudo apt-key add -
и после этого обычной установкой пакета wicd (с удалением NetworkManager). Запустить апплет wicd для панели Gnome: wicd-client.

Далее звук. Игрался он и так нормально, а вот с микрофона ничего не записывалось. Выяснилось, что поддержка Intel HDA Audio появилась в ALSA сравнительно недавно. Соответственно, нужно или ставить ядро 2.6.28-rc1 или более позднее, или собрать новую альзу самостоятельно. Мне было проще сделать второе.

Дополнение 2009-04-02. Несколько слов о сборке ядра 2.6.29 для Debian. Хотя пакет этого ядра уже появился в репозиториях (sid), ставить его на eeePC 901 смысла нет: драйвер тачпэда Elantech в нём выключен, а поддержку WiFi-модуля в Debian-ядре вообще выкинули по лицензионным соображениям (см. баги #522078 и #521553).

Короче, поступать в этой ситуации следует так:

1) не устанавливать готовых пакетов Debian, а взять исходники ядра на kernel.org и собрать пакет самостоятельно; при этом получив и поддержку тачпэда, и поддержку WiFi, и ядро, оптимизированное для настольных приложений — «из коробки»; постарался отключить всё лишнее, но явно отключил не всё. Конфигурацию ядра я частично позаимствовал отсюда. Основные особенности: CONFIG_PREEMPT=y (десктоп), CONFIG_RT2860=y (встроенный WiFi), CONFIG_MOUSE_PS2_ELANTECH=y (тачпэд Elantech), CONFIG_ATL1E (гигабитный Ethernet);

2) следовать инструкциям по сборке собственного пакета с ядром; если кратко, то переходим в каталог с распакованными исходниками ядра и делаем следующее:
$ make menuconfig
$ make-kpkg clean
$ nice -n +10 fakeroot make-kpkg --initrd --revision=eee901 kernel_image kernel_headers
Не забываем перед этим установить kernel-package и zlib1g-dev;

3) переходим на один каталог выше и устанавливаем собранные пакеты:
$ cd ..
$ sudo dpkg -i linux-headers-*.deb linux-image-*.deb

4) Перед тем, как перезагрузиться, не забываем пересобрать те модули, которые ставились из исходников. Например, пересобрать пользовательские модули ALSA из alsa-source можно так:
 sudo nice -n +10 m-a a-i -l 2.6.29 alsa
Хотя, кстати, с 2.6.29 я уже не уверен, что это нужно. Спросите экспертов;

5) после перезагрузки у меня вроде всё заработало (о настройке тачпэда см. ниже): WiFi, двухпальцевых скроллинг на тачпэде, звук и запись звука, видеокамера, кардридер, блутус (встроенный Bluetooth ещё не проверял, внешний USB-модуль работает), засыпание-просыпание, датчики батареи.


Для сборки альзы, вначале устанавливаем linux-headers:
sudo aptitude install linux-headers-`uname -r`
после чего можно скачивать исходники альзы. Исходники распаковываем, переходим в каталог с ними, делаем
$ ./configure --with-cards=hda-intel
$ make
$ sudo make install-modules
$ sudo ./snddevices
Конечно, не Debian-way, но работает. После установки драйверов из alsa-drivers-1.0.18a и перезагрузки заработал и микрофон, и регулировка громкости аппаратными клавишами.

Дополнение 2009-04-02: правильный для Debian способ заключается в пересборке пакетов ALSA. Тогда драйвера не будут затираться при каждом апгрейде ALSA в дистрибутиве. Конкретно в этом случае, если система Lenny (stable), а нужная версия доступна только в Sid (unstable), я поступил так:
1) добавил репозиторий исходников sid в /etc/apt/sources.list:
# sid source repository
deb-src http://ftp.debian.org/debian sid main contrib non-free
и вполнил sudo aptitude update.
2) во временном каталоге выполнил
$ apt-get -t sid source alsa-base
т.е. вытащил все исходники пакета alsa из репозитория sid. Затем скачал и установил все необходимые для сборки зависимости:
$ sudo apt-get -t sid build-dep alsa-base
Можно сохранить где-нибудь список, чтобы было проще удалить их потом. Наконец, перешёл в каталог с пакетом:
$ cd alsa-driver-1.0.19.dfsg/
Конкретная версия может отличаться.
3) Редактирую файл списка изменений
$ vi debian/changelog
На самом деле просто добавил «~backport1» к номеру версии. Новую запись в файле changelog делаю по образцу предыдущих (сохраняю отступы и количество пробелов). Время в нужном формате печатает команда date -R.
4) Пересобираю пакеты:
$ fakeroot dpkg-buildpackage -us -uc
Перехожу на каталог выше и устанавливаю все собранные пакеты:
$ cd ..
$ sudo dpkg -i linux-sound-base_1.0.19.dfsg-2~backport1_all.deb \
alsa-base_1.0.19.dfsg-2~backport1_all.deb \
alsa-source_1.0.19.dfsg-2~backport1_all.deb
Почти готово.
5) Осталось собственно собрать модули для текущей версии ядра. Для этого должен быть установлен пакет linux-headers и module-assistant. Тогда сборка и установка будет практически автоматической:
 $ sudo m-a a-i alsa
Всё. Теперь «правильная» альза должна быть установлена «правильным» способом. И пока в stable не появится более свежей альзы, будет использоваться «бэкпорт». При обновлении ядра нужно будет повторить только последний шаг (5). Чтобы новые модули заработали, нужно или выгрузить вручную все старые модули, которые начинаются на snd..., или просто перезагрузиться.


Аппаратные клавиши работают должным образом после установки пакета eeepc-acpi-scripts из указанного выше специального репозитория Debian для eeePC. Опять же, при установке со специального образа, он устанавливается по-умолчанию.

Ещё остаётся задача как следует настроить тачпэд. В 901 используется тачпэд Elantech. У меня он сейчас настроен как
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
EndSection
и он вроде работает. Кажется, только, иногда подтормаживает. Двумя пальцами делается вертикальная прокрутка и эмулируется средняя кнопка мыши, тремя пальцами эмулируется правая кнопка мыши, краткое касание второго пальца при удержании первого включает режим перетаскивания. Эти комбинации работают, но после тачпэда synaptics кажутся непривычными, и некоторые из них я бы отключил, особенно перетаскивание. На первое время я убавил чувствительность тачпэда в настройках Gnome.

Дополнение 2009-04-02: если было установлено достаточно свежее ядро с поддержкой тачпэдов Elantech (см. выше инструкции по установке ядра 2.6.29), то можно использовать нормальный драйвер тачпэда. Соответственно в /etc/X11/xorg.conf помещаем:
Section "InputDevice"
Identifier "Configured Mouse"
Driver "synaptics"
Option "Device" "/dev/input/mouse0"
Option "Protocol" "auto-dev"
Option "SHMConfig" "true"
Option "VertTwoFingerScroll" "1"
Option "HorizTwoFingerScroll" "1"
Option "TapButton1" "1"
Option "TapButton2" "2"
Option "TapButton3" "3"
EndSection
Кроме этого нужно установить xserver-xorg-input-synaptics версии не ниже 0.99.3. Готовые пакеты для Debian Lenny (stable) можно взять здесь. После перезапуска иксов, будет работать как вертикальный, так и горизонтальный скролинг двумя пальцами на тачпэде.

Подробности о настройке тачпэда смотрим в DebianEeePc Wiki.
Ссылки по теме:Народный опыт (*nix на схожих моделях):Впечатления о eeePC 901 в целом, как о железке, у меня очень приятные. Ничего не болтается, ладно всё подогнано. Вес и размер как раз такие, чтобы с ним было приятно сидеть где-нибудь на диване. Приятно сопротивление, с которым открывается и закрывается крышка. Клавиатура мелкая и чуть-чуть нестандартная, но если набирать аккуратно, то вскоре начинает получаться. От батареи работает действительно долго. Экран яркий, матовый, с широким углом обзора. Самое то. В разрешении же 1024×600 оказалось комфортно, особенно если использовать полноэкранный режим для ряда приложений (F11 в Gnome) и несколько рабочих столов. Только изредка приходится перетаскивать окошки с зажатым ALT.

Дополнение 2009-03-07: см. также мою следующую заметку, как переназначить курсорные клавиши, Shift и PageUp/PageDown на ееePC 901.

Дополнение 2009-04-02: дополнил описанием, как пересобрать пакеты ALSA для Debian stable, как собрать пакет ядра 2.6.29, как настроить тачпэд Elantech.

Дополнение 2009-07-01: в свежей заметке — как бороться с тормозами Firefox-а на eeePC.

Дополнение 2009-07-09: упомянул CONFIG_ATL1E (гигабитный Ethernet). Убрал ссылки на конфиг ядра, в котором его не было.