Я скачал файлы ядра 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
Для тех, кто может наткнуться на этот вопрос, как я только что сделал:
Это оставляет мне следующие «отсутствующие прототипы ОШИБКА»:
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
.
Я бы порекомендовал установить более новое ядро, хотя оно должно работать корректно, начиная с 2.6.30 или подобной версии. Я использую его как AP в ядре 3.13.0-24-generic
, хотя я знаю, что лучше установить новое ядро. Я использовал его на http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18.12-vivid/
или аналогичном (до тех пор, пока мой HDD не сломался). Я могу дать вам детали того, что использовалось в упомянутом ядре.