Как мне установить драйвер ath9k для backports-3.12-8, установленный на Xubuntu 13.10?

Я скачал файлы ядра 3.12-8 linux-headers-all.deb, linux-headers-generic_i368.deb; linux-image-generic_i386.deb из kernel.org и установил их через:

 dpkg -i *.deb

Теперь я пытаюсь устранить некоторые пропадания сигнала Wi-Fi, которые, вероятно, вызваны самим драйвером. Очевидно, что в драйвере ath9k были исправлены некоторые ошибки, поэтому я бы хотел заменить стандартную версию на backports.

Я скачал backports-3.12.8-1.tar.gz с сайта kernel.org и попытался подготовить модуль ath9k:

cd ~/.source/backports-3.12.8-1/
sudo apt-get install build-essential
sudo apt-get build-dep linux-image-$(uname -r)
sudo ln -s /usr/src/linux-headers-$(uname -r) /usr/src/linux
make defconfig-ath9k

. «ОШИБКА пропущенных прототипов»:

cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer   -c -o conf.o conf.c
cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer   -c -o zconf.tab.o zconf.tab.c
cc   conf.o zconf.tab.o   -o conf

Но когда я продолжу:

sudo modprobe -r ath9k
sudo make
sudo checkinstall

все работает !!!

Итак, мои вопросы:

  • Зависит ли этот модуль от некоторых других модулей ядра?

    Да, следующая команда говорит вам:

    modinfo ath9k

  • Если да, где информация об этом материале?

    Посмотрите на wireless.kernel.org/en/users/Drivers/ath9k.

  • Есть ли правильный способ установить этот модуль ядра соответственно? драйвер?

    Вероятно, получая профессионал в компиляции ядра: -).

THX

4
задан 27 January 2014 в 11:14

2 ответа

Для тех, кто может наткнуться на этот вопрос, как я только что сделал:

Это оставляет мне следующие «отсутствующие прототипы ОШИБКА»:

cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer   -c -o conf.o conf.c
cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer   -c -o zconf.tab.o zconf.tab.c
cc   conf.o zconf.tab.o   -o conf

Эти строки на самом деле не являются ошибками. Команда make выполняет множество других команд, как указано в файле с именем Makefile. По умолчанию make запишет эти команды в терминал перед их выполнением. Например, если Makefile говорит, что нужно запустить foo, затем bar, а затем baz, make запишет foo в терминал, а затем выполнит команду foo; затем он запишет bar в терминал и запустит bar; затем он запишет baz в терминал и запустит baz.

В этом случае эти строки cc являются командами, которые make сказали запустить Makefile. Команда cc запустит системный компилятор C по умолчанию , который, вероятно, GCC . Те вещи, которые начинаются с -, представляют собой опции , которые влияют на поведение компилятора Си.

Для компиляторов, таких как GCC, опции , начинающиеся с -W , говорят компилятору выдавать предупреждения, когда он видит код, который технически допустим, но часто является плохой идеей (например, какой-то шаблон в коде, который много программисты думают, что будет действовать каким-то образом, но на самом деле будет действовать по-другому).

В этом случае -Wall включает многие (не совсем все!) Предупреждения GCC. -Wmissing-prototypes и -Wstrict-prototypes включают дополнительные предупреждения, чтобы определить проблемы, связанные с функцией прототипа функции C . ​​

Следовательно, эти сообщения действительно говорят нам, что команда cc собирается быть запущенной, и что (среди прочего) она должна предупредить нас, если думает, что код хитрый; в частности, если прототипы функций используются не по назначению.

Предупреждения GCC выглядят примерно так:

main.c: In function ‘main’:
main.c:1:5: warning: traditional C rejects ISO C style function definitions [-Wtraditional]
 int main(int argc, char **argv) {
     ^

Поскольку ничего подобного в ваших выходных данных не появляется, предупреждений или ошибок не возникало; даже с включенными этими дополнительными проверками -W.

0
ответ дан 27 January 2014 в 11:14

Я бы порекомендовал установить более новое ядро, хотя оно должно работать корректно, начиная с 2.6.30 или подобной версии. Я использую его как AP в ядре 3.13.0-24-generic, хотя я знаю, что лучше установить новое ядро. Я использовал его на http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18.12-vivid/ или аналогичном (до тех пор, пока мой HDD не сломался). Я могу дать вам детали того, что использовалось в упомянутом ядре.

  1. зависит: ath9k_hw, mac80211, ath9k_common, cfg80211, ath
  2. Я где-то видел информационные и аппаратные возможности, но не помню, где это было
  3. Конечно, есть :) Посмотрите на Compat-Wireless
0
ответ дан 27 January 2014 в 11:14

Другие вопросы по тегам:

Похожие вопросы: