home

IT Runs

text

Настройка Wifi Atheros AR242x (AR5007EG) в Debian Lenny (5.0)

Поставил на ноут (Lenovo B450-4TK-B) Debian Lenny. Первая проблема - обе сетевухи не заработали. Лановская вообще не определилась, а вайфайная не захотела находить беспроводные сети. Помогла статья, которую привожу далее.

У обладателей таких ноутбуков, как: Asus X51RL, Fujitsu-Siemens s6420, Toshiba a201, Samsung NC10, Amilo Mini 3520, Acer Aspire 5315 и еще многих других, есть одна общая проблема - Wifi карточка Atheros AR5007EG / AR242x, работоспособность которой после установки Linux-системы, как правило, оставляет желать лучшего. Благодаря проекту madwifi, установка драйверов Atheros не доставляет много проблем.

Диагностика оборудования: наличие Atheros AR5007EG /AR242x

В первую очередь необходимо убедиться, что в системе действительно установлена Wifi карта Atheros AR5007EG /AR242x:

$ lspci | grep Atheros
18:00.0 Ethernet controller: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter (rev 01)

Установка пакетов для сборки драйверов для Atheros AR5007EG /AR242x

Следующим шагом, необходимо установить пакеты для успешной компиляции драйвера:

$ sudo aptitude update 
$ sudo aptitude install build-essential linux-headers-$(uname -r)

Установка MadWifi драйверов для для Atheros AR5007EG /AR242x

Далее, необходимо скачать драйвер для Atheros AR5007EG /AR242x:

$ mkdir ./mad-wifi
$ cd ./mad-wifi
$ wget http://snapshots.madwifi-project.org/madwifi-hal-0.10.5.6/madwifi-hal-0.10.5.6-r4103-20100110.tar.gz

После того, как драйвер скачан, его необходимо разархивировать и скомпилировать:

# Разархивируем драйвер
$ tar zxvf madwifi-hal-0.10.5.6-r4103-20100110.tar.gz
$ cd madwifi-hal-0.10.5.6-r4103-20100110

# Компилируем драйвер
$ make
$ sudo make install

Теперь драйвер скомпилирован. Необходимо проверить работу wifi-карты с новым драйвером:

# включаем модуль ядра
$ sudo modprobe ath_pci

# включаем wifi-интерфейс
$ sudo ifconfig ath0 up

# проверяем настройки wifi
$ iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wifi0 no wireless extensions.

ath0 IEEE 802.11g ESSID:"XXXXXXXXXXXXX" Nickname:""
Mode:Managed Frequency:2.437 GHz Access Point: XX:XX:XX:XX:XX:XX
Bit Rate:6 Mb/s Tx-Power:17 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=21/70 Signal level=-74 dBm Noise level=-95 dBm
Rx invalid nwid:848 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Если вывод последней команды похож на приведенный, то можно констатировать, что wifi карта работает. Остается лишь включить модуль ядра в загрузку и перезагрузиться:

$ sudo su
$ echo "ath_pci" >> /etc/modules

# блокируем загрузку альтернативного драйвера
$ echo "blacklist ath5k" >> /etc/modprobe.d/blacklist

# перезагрузка
$ reboot

Единственным недостатком такого метода является необходимость пересобирать драйвер после каждого обновления ядра. Благо, теперь это просто.

Удаление MadWifi драйверов для для Atheros AR5007EG /AR242x

В случае, если что-либо не получилось, либо появилось желание установить более свежий драйвер, то текущую установку можно без труда удалить:

$ cd ./mad-wifi/madwifi-hal-0.10.5.6-r4103-20100110
$ sudo make uninstall

via

text

Apt-build, и пусть все пересоберется!

Сейчас мой домашний комп ревет. Впрочем, он всегда ревел, но вот уже двое суток он ревет по-особенному, не выключаясь, из-за чего мне сложно уснуть по ночам. Ниже приведу репост о причине такого поведения моего компа с мелкими косметическими изменениями отсюда: http://p-n-z-8-8.livejournal.com/40334.html

Apt-build — мощный инструмент Debian, позволяющий в духе FreeBSD (ну, или Gentoo например) одной командой устанавливать пакеты из исходных текстов (вместо унылого ./configure — make — sudo make install), пересобирать уже установленные пакеты с оптимизацией под используемую архитектуру а также, при наличии желания, пересобрать систему целиком. Ставится сие добро самым обычным образом:

sudo apt-get install apt-build

В процессе установки будет задано несколько вопросов:

  1. Каталог, в который будут качаться исходники и где будут собираться пакеты. По умолчанию это /var/cache/apt-build/build
  2. Локальный репозиторий, в который сохраняются собранные пакеты. По умолчанию /var/cache/apt-build/repository
  3. Уровень оптимизации. Лёгкая, средняя, усиленная (CFLAGS −01, −02, −03). По умолчанию предлагается −02
  4. Прочие параметры для компиляции. Их в общем случаем можно оставить без изменения.
  5. Затем будет предложено добавить строку

    deb file:/var/cache/apt-build/repository apt-build main

    в /etc/apt/sources.list Не стоит от этого отказываться. Более того, строка должна быть первой в списке репозиториев (критично!).
  6. Тип используемого процессора. Думаю, с этим всё понятно.

На этом конфигурирование apt-build закончено. Если в чём-то неуверены, можно просмотреть настройки в файле /etc/apt/apt-build.conf

build-dir = /var/cache/apt-build/build
repository-dir = /var/cache/apt-build/repository
Olevel = -O2
mtune = -mtune=k8
options = “-pipe -fomit-frame-pointer”
make_options = “-j4”


И либо изменить вручную, либо запустить конфигурирование повторно, используя команду:

sudo dpkg-reconfigure apt-build

Далее устанавливаем всё необходимое для сборки (на всякий случай, вдруг чего-либо недостаёт):

sudo apt-get install libc6-dev g++ gcc

Кроме этого не помешает установить и запустить pbuilder (он может пригодится в ряде случаев, о чём apt-build скажет сам):

sudo apt-get install pbuilder && /usr/lib/pbuilder/pbuilder-satisfydepends

Несколько операций с apt-build требуют root-полномочий. Именно root, а не sudoers. Например, при попытке построить индекс пакетов можно наблюдать такую картину:

sudo dpkg —get-selections | awk ’{if ($2 == «install») print $1}’ > /etc/apt/apt-build.list
bash: /etc/apt/apt-build.list: Permission denied

Поэтому тем пользователям Ubuntu, у которых отключена учётная запись root (а по-умолчанию она отключена) рекомендуется включить её и задать пароль. Всё это можно сделать одной командой:

sudo passwd root
Введите новый пароль UNIX:

После этого логинимся под root:

su
Пароль:

И строим индекс пакетов:

# dpkg —get-selections | awk ’{if ($2 == «install») print $1}’ > /etc/apt/apt-build.list

Использование apt-build в общем и целом идентично использованию apt-get:

apt-build [options] [command]

Commands:
update — Update package lists
upgrade — Perform an upgrade
install — Build and install new packages
source — Download and extract source in build directory
build-source — Download, extract and build source package
update-source — Update all sources and rebuild them
remove — Remove packages
build-repository — Rebuild the repository
clean-sources — Clean up all object files in source directories
clean-build — Erase downloaded packages and temporary build files
clean-repository — Erase downloaded packages and temporary build files
world — Rebuild and reinstall all packages on your system
info — Build-related package information

Поэтому первым делом нужно обновиться:

sudo apt-build update && sudo apt-build upgrade

Само собой, в /etc/apt/sources.list должны быть подключены репозитории с исходными текстами (те, которые «deb-src http://и т.д.»). В Ubuntu они уже присутствуют и их необходимо лишь раскомментировать. В Debian нужно прописать репозитории:

deb-src http://security.debian.org/ etch/updates main contrib
deb-src http://mirror.yandex.ru/debian stable main
deb-src http://mirror.yandex.ru/debian/ lenny main
deb-src http://mirror.yandex.ru/debian lenny main non-free contrib
deb-src http://mirror.yandex.ru/debian-security etch/updates main non-free contrib

В 99,9% случаев основные команды apt-build требуют дополнительных опций:

Options:
—reinstall — Re-build and install already installed package
—rebuild — Rebuild package
—remove-builddep — Remove build-dependencies installed by apt-build
—nowrapper — Do not use gcc/g++ wrapper
—purge — Use purge instead of remove
—noupdate — Do not run ’apt-get update’ before package installation
—build-command — Use to build package
—patch — Apply patch s before the build
—patch-strip — Striplevel for the patch files
—yes -y — Assume yes
—version -v — Show version and exit
—force-yes — Force yes
—source — Do not download source (sources are extracted already)
—build-only — Do not install any of build dependencies
—build-dir — Specify build dir
—repository-dir — Specify the repository directory
—target-release — Distribution to fetch packages from
—sources-list — Specify sources.list file
—apt-get — Specify an alternative apt-get application to use
—apt-cache — Specify an alternative apt-cache application to use
—config — Specify an alternative configuration file

Например, чтобы переустановить из исходников уже установленный пакет, нам понадобится следующая директива:

sudo apt-build —rebuild —reinstall —force-yes —yes install mc
—-—> Installing build dependencies (for mc) <—-—
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
(Вывод опущен)
—-—> Building mc <—-—
dpkg-buildpackage: установка CFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: установка CPPFLAGS в значение по умолчанию:
dpkg-buildpackage: установка LDFLAGS в значение по умолчанию: -Wl,-Bsymbolic-functions
dpkg-buildpackage: установка FFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: установка CXXFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: пакет исходных текстов mc
dpkg-buildpackage: версия исходных текстов 2:4.6.2~git20080311-2
dpkg-buildpackage: исходные тексты изменены root
dpkg-buildpackage: архитектура хоста i386
debian/rules clean
(И т.д.)

В процессе установки/пересборки apt-build сам скачивает нужные ему для компиляции пакеты, поэтому не удивляемся, увидев нечто подобное этому:

—-—> Installing build dependencies (for kdesdk) <—-—
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
НОВЫЕ пакеты, которые будут установлены:
automoc binutils-dev cdbs cmake fdupes hspell kdelibs5-dev kdepimlibs5-dev kdesdk-scripts libacl1-dev libapr1-dev libaprutil1-dev
libasound2-dev libattr1-dev libboost-date-time-dev libboost-date-time1.34.1 libboost-dev libboost-doc libboost-filesystem-dev
libboost-filesystem1.34.1 libboost-graph-dev libboost-graph1.34.1 libboost-iostreams-dev libboost-program-options-dev
libboost-program-options1.34.1 libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-serialization1.34.1
libboost-signals-dev libboost-signals1.34.1 libboost-test-dev libboost-test1.34.1 libboost-thread-dev libboost-thread1.34.1
libboost-wave-dev libboost-wave1.34.1 libbz2-dev libcups2-dev libdb4.6-dev libgif-dev libgpgme11-dev libicu-dev libilmbase-dev
libjasper-dev libkeyutils-dev libldap2-dev libmysqlclient15-dev libopenexr-dev libphonon-dev libplasma-dev libpth-dev libsasl2-dev
libsoprano-dev libsqlite3-dev libstreamanalyzer-dev libstreams-dev libsvn-dev libtiff4-dev libtiffxx0c2 libxslt1-dev python-dev
python2.5-dev quilt uuid-dev

В конце установки/пересборки apt-build напомнит, что нужно удалить пакеты, использовавшиеся для сборки, для их удаления нужно использовать

apt-get autoremove

Для установки пакета:

sudo apt-build install —yes —force-yes gpicview

Вообще, ключи «—yes —force-yes» — это то, что нужно использовать постоянно.
Для того, чтобы собранные нами пакеты не были заменены обычными версиями при первом же обновлении, необходимо их «заморозить».
Для этого существует два способа. Первый из них описан в документации к apt-build и заключается в внесении в файл /etc/apt/preferences сведений о «замороженных» пакетах в таком формате:

Package: * (обязательно в формате «имя-версия»)
Pin: release o=apt-build
Pin-Priority: 990

Второй способ — специально для любителей «экстрима». Особенно пригодится для тех пакетов, пересобирать которые мы не планируем ещё долго.

  1. С помощью apt-build source качаем исходники нужного пакета
  2. Перемещаемся в каталог с исходниками
  3. Набираем:
    # dch -i
  4. Меняем версию на бОльшую.
  5. Сохраняемся
  6. Собираем/ставим пакет
  7. После этого «морозим» версию:
    sudo aptitude hold gpicview

Теперь самое интересное: apt-build позволяет целиком пересобрать систему:

apt-build world

Однако ньюанс заключается в том, что во-первых, не всё ПО, установленное на машине является свободным, и во-вторых, даже будучи свободным, для того или иного пакета могут отсутствовать прописанные в /etc/apt/sources.list репозитории с исходниками. В этом случае весь процесс пересборки остановится на таком пакете. Чтобы этого не случилось, нужно отредактировать файл /etc/apt/apt-build.list, исключив из него проприетарное ПО и ПО с отсутствующими в пределах досягаемости apt-build репозиториями исходных текстов. Ну а после этого запускать apt-build world и ждать. Долго и мучительно. Как отфильтровать пакеты без исходников? Признаться, не знаю. На момент написания этих строк у меня уже более полутора суток пересобирается система. Каждый раз, когда процесс пересборки ругается на отсутствие исходников, я удаляю строку с именем этого пакета в apt-build.list, а также все вышележащие строки, чтобы не пересобирать тучу программ заново.

По окончании процесса перезагружаемся и делаем:

apt-build upgrade

Затем стоит почистит соответствующие каталоги от исходников и собранных пакетов, т. к. при постоянном использовании apt-build они отъедают значительный объём дискового пространства:

sudo apt-build clean-sources && apt-build clean-repository

Apt-build на мой взгляд является полезной и интересной утилитой.

В качестве заключения опишу несколько важных моментов, связанных с её использованием.

Плюсы: Поскольку при установке/пересборке пакеты компилируются под конкретную архитектуру, увеличение быстродействия видно невооружённым глазом (точных замеров производительности не делал, извините уж :-)

Минусы: Компиляция занимает гораздо больше времени, нежели чем обычная установка через apt-get install. Тоже самое можно сказать и о пересборке, поэтому следует запастись терпением.

Система, собранная из исходных кодов требует гораздо больше внимания. Тем более, изначально для этого не предназначенная (такая как Ubuntu).
Обычное обновление системы через apt-get upgrade порушит все наши труды по сборке и оптимизации. Поэтому во-первых не забудьте о «заморозке» пакетов и, во-вторых, следует выработать собственный график оптимизации системы (например, через некоторое время после очередного релиза).

Возможные проблемы: Несмотря на то, что по идее apt-build сам скачивает и устанавливает всё необходимое для компиляции, иногда при сборке можно увидеть ошибку, связанную с неудовлетворёнными зависимостями. В общем и целом удаётся просто установить нужное через apt-build install. В «сложных» случаях пригодится команда:

apt-get build-dep package_name

Также в некоторых случаях apt-build по неизвестным мне причинам отказывается видеть в /etc/apt/sources.list строчку с собственным локальным репозиторием, вследствие чего отказывается устанавливать только что собранный пакет. Что интересно, если в случае с пересборкой уже установленного пакета запустить

apt-get update && apt-get upgrade

— свежесобранный пакет будет предложен к обновлению. Как раз из локального репозитория. Это все проблемы, с которыми я столкнулся в процессе использования apt-build.

И в заключение самое главное: если кто-то надумает попробовать apt-build — помните: ВСЕ ДЕЙСТВИЯ ВЫ ПРОИЗВОДИТЕ НА ВАШ СТРАХ И РИСК :-) Но на мой взгляд, оно того стоит. Главное — понимать что ты делаешь.