Команда 'make modules' не собирает все модули - PullRequest
3 голосов
/ 10 июня 2011

Я использую Fedora 14 64 бит.

Я клонировал дерево исходного кода ядра из git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

.

Около недели назад я скомпилировал и обновил ядро ​​с 2.6.35 до 2.6.39, все прошло довольно гладко, все, что я сделал, было очень простым:

make menuconfig
make oldconfig
make -j8
make modules_install && install

Затем я добавил фиктивный системный вызов (я следовал за этим в книге Роберта Лава по разработке ядра Linux) и попытался снова скомпилировать, ядро ​​скомпилировалось нормально, но когда я выдал:

[root@xps420 Kernel]# make modules
CHK     include/linux/version.h
CHK     include/generated/utsrelease.h
CALL    scripts/checksyscalls.sh
Building modules, stage 2.
MODPOST 4 modules

было сделано всего 4 модуля, ранее было более 2000 модулей.

Я подумал, что проблема связана с моим фиктивным системным вызовом, я отменил все изменения и попытался снова, с тем же результатом.

Опять же, я предпринял следующие шаги:

make menuconfig
make oldconfig
make -j8
make modules ----> suspicious

Я не уверен, что является причиной этого.

EDIT: Немного больше информации, я запускаю make clean перед перекомпиляцией, но он все еще сделал только 4 модуля. В какой-то момент я сделал modules_install и проверил /lib/modules/[ver], только те 4 модуля были скопированы туда. Мне следовало остановиться на этом, но я все равно запустил make install, установил ядро, но не смог с ним загрузиться.

EDIT: Я только что скачал стабильный выпуск (2.6.39.1) с сайта kernel.org, после выполнения описанных выше шагов произошло то же самое. Это странно. Может быть, что-то в моей системе облажается :( Надеюсь, кто-то столкнулся с этим и пролил немного света.

Ответы [ 4 ]

2 голосов
/ 13 июня 2011

Хорошо, после нескольких чашек кофе и большого количества поисков в Интернете, я не знаю, как все это работает, но похоже, что когда я впервые обновил ядро, .config был основан на конфигурации работающего ядра и включаетнеобходимые модули, поэтому он работал нормально?Затем каким-то образом в последующих компиляциях почти все модули не были настроены в .config (кроме 4, упомянутых выше).Короче говоря, я использовал старый .config и запустил menuconfig, чтобы внести дополнительные изменения, похоже, это решило мою проблему.Спасибо!

0 голосов
/ 10 июня 2011

Возможно, только те четыре модуля зависят от файлов, к которым вы прикоснулись.Если вы хотите это подтвердить, выполните make clean, а затем попробуйте снова собрать и посмотреть, не получите ли вы все модули снова.Конечно, это займет намного больше времени!

0 голосов
/ 11 июня 2011

Попробуйте make V=1 ... для подробного вывода.Или даже V=2.

0 голосов
/ 10 июня 2011

Если вы не выполните команду "make clean", результаты предыдущей компиляции все еще остаются. Только модули, затронутые измененным кодом, будут перестроены.

...