Как собрать один модуль ядра в дереве?

В linux-source -... есть модуль, который отключен в config /boot/config-3.4-trunk-686-pae, так что он не является частью linux-image -... (Это включено Debian, но решение должно быть таким же для Ubuntu или?), Например

# CONFIG_CAN_PEAK_USB is not set

Как можно скомпилировать только этот модуль ядра, чтобы его можно было использовать с распределенным ядром?

Соответствующий пакет linux-source -... уже установлен, распакован и связан с / USR / SRC / Linux. /boot/config-3.4-trunk-686-pae копируется в /usr/src/linux/.config и модифицируется с помощью

CONFIG_CAN_PEAK_USB=m

С помощью

make
make modules

возможно скомпилировать ядро ​​и все модули. Но как можно скомпилировать только этот отдельный модуль?

(Примечание: также ядро ​​должно быть скомпилировано раньше, в противном случае вы получите следующую ошибку: no symbol version for module_layout)

42
задан 26 July 2012 в 14:02

3 ответа

У меня была такая же проблема. Я предполагаю, что вам нужно скопировать не только .config, но и Module.symvers

мои шаги по компиляции модуля ft1000 (под управлением Debian Wheeze 7.1.0; ядро ​​3.2.0-4-686-pae):

aptitude install linux-headers-3.2.0-4-686-pae
aptitude install linux-source-3.2
cd /usr/src/
tar xjf linux-source-3.2.tar.bz2
cd /usr/src/linux-source-3.2
cp ../linux-headers-3.2.0-4-686-pae/Module.symvers .
make oldconfig # it copies .config to ./
vi .config # enable ft1000 module: CONFIG_FT1000=m
make prepare # setup FT1000 as module
make modules_prepare
make SUBDIRS=scripts/mod
make SUBDIRS=drivers/staging/ft1000/ft1000-usb modules
cp drivers/staging/ft1000/ft1000-usb/ft1000.ko /lib/modules/3.2.0-4-686-pae/kernel
/drivers/staging/
depmod
modprobe ft1000
42
ответ дан 26 July 2012 в 14:02

Из исходного каталога верхнего уровня, просто укажите путь к имени модуля или каталогу модулей, e. g.:

make drivers/net/can/usb/peak_usb/

или для более простого примера (Intel e1000 Ethernet driver):

make drivers/net/ethernet/intel/e1000/e1000.ko
15
ответ дан 26 July 2012 в 14:02

Все очень просто: (этот пример иллюстрирует драйвер ft1000, это займет всего несколько минут, если не мгновенно)

cd /usr/src/kernel-sources
make SUBDIRS=drivers/staging/ft1000/ft1000-usb modules
# Enable the ft1000 module: CONFIG_FT1000=m  on the config with 
make xconfig # or "make menuconfig" then save
make prepare
make modules_prepare
make SUBDIRS=scripts/mod
make SUBDIRS=drivers/staging/ft1000/ft1000-usb modules
make SUBDIRS=drivers/staging/ft1000/ft1000-usb modules_install

Затем вы можете загрузить модуль с помощью modprobe после depmod

Примечание: в зависимости от зависимости модуля вам может потребоваться полностью пересобрать ядро ​​

2
ответ дан 23 November 2019 в 00:18

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

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