У меня получилось скомпилировать модуль! Ваши советы помогли.

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

Итак, компилируем модуль ядра в Debian Linux.

Модуль будет компилироваться на системе, для которой предназначен. В моем 
случае это live система, которая грузится с флешки.
1. Загружаемся в live систему, подключаем интернет.
2. sudo apt-get install module-assistant
3. sudo m-a prepare
Getting source for kernel version: 3.16.0-4-586
Kernel headers available in /lib/modules/3.16.0-4-586/build
Creating symlink...
После этой команды мы видим, что module-assistant скачал заголовки, которые 
подходят к нашему ядру, и теперь указывает, в какой папке они доступны. Затем 
он устанавливает пакет build-essential со всяким необходимым барахлом.
4. Дальше мы будем скачивать код ядра, чтобы потом заново скомпилировать один 
из модулей. Важно установить исходники именно той версии ядра, которое сейчас 
запущено.
uname -r
Эта команда выдает версию ядра.
sudo apt-get install linux-source-3.16
После этой команды в папке /usr/src появится архивный файл. Его можно 
распаковать куда-нибудь, можно в домашнюю папку, можно куда-нибудь на жесткий 
диск. Распаковку можно делать от имени обычного пользователя.
Откройте терминал на той папке, куда хотите распаковать, и выполните:
tar -xf /usr/src/linux-source-3.16.tar.gz
Затем перейдите в появившуюся папку:
cd linux-source-3.16
5. Находясь в папке с деревом исходных кодов, в терминале выполните:
make oldconfig
Затем make prepare
Потом нужно еще make scripts
6. Если сейчас начать компилировать модули, то make будет ругаться, что потерян 
файл Module.symvers  Этот файл лежит там же где и заголовки ядра. Его надо 
аккуратно скопировать в наше дерево исходников.
7. Пора компилировать модули. Не все сразу, а те, которые нужны. Для себя я 
компилирую драйвер аудиокарты snd-echo3g, исходники к которому лежат в 
sound/pci/echoaudio Люблю читать исходный код! Особенно, если в нем есть 
хорошие комментарии, заботливо оставленные автором драйвера.
make modules SUBDIRS=sound/pci/echoaudio
Эту команду нужно запускать в корне дерева исходников.
Если все пройдет без ошибок, то рядом с исходным кодом появятся файлы драйверов.
8. Перед тем как редактировать исходный код, полезно выполнить
make clean SUBDIRS=sound/pci/echoaudio
Скомпилированные файлы исчезнут. После редактирования снова запустите команду 
из седьмого пункта, и они снова скомпилируются.
9. Вы наверное уже умеете пользоваться командами modprobe, lsmod, modinfo.
С помощью команды modinfo snd-echo3g мы узнаем подробности модуля из работающей 
системы, узнаем точное местонахождение файла.
Можно заменить этот файл на наш модернизированный, затем выгрузить модуль, и 
сразу же загрузить.
modprobe -r  snd-echo3g && modprobe  snd-echo3g

Я надеюсь, что моя инструкция поможет кому-нибудь не запутаться во всем этом. А 
если запутались, то пишите в мэйл листы, кто-нибудь обязательно поможет.

Ответить