Ошибка «Модули не найдены» во время установки ядра

Ошибка «Модули не найдены» во время установки ядра

У меня есть вопрос по установке ядра. Я загрузил новую версию исходного кода ядра net-next и выполнил следующие шаги:

  • make allyesconfig
  • make -j16
  • make modules_install
  • make install

Проблема в том, что когда я пытаюсь выполнить make install, я получаю ошибку "модули не найдены". Я в замешательстве, так как кто-то другой смог собрать ядро ​​с помощью той же процедуры, а я не могу сделать то же самое (у нас обоих есть права root). Нужно ли мне что-то дополнительно сделать, чтобы убедиться, что эти модули видны/доступны?

решение1

При make installвызове будет вызван специфичный для дистрибутива скрипт для сборки initrd.img. Этот скрипт выполнит поиск всех модулей, требуемых этим дистрибутивом, но поскольку вы только что скомпилировали все модули в ядро ​​как встроенные через make allyesconfig, скрипт не смог выполнить поиск модулей.

Я не могу воспроизвести вашу проблему прямо сейчас, я помню, что "modules not found" - это просто предупреждения, я всегда их игнорирую, потому что initrd.img был успешно собран, а новое ядро ​​успешно загружено. Если вы терпите неудачу с "modules not found", вам следует переконфигурировать такие модули из встроенных модулей в реальные загружаемые модули вручную с помощью make menuconfigэтого способа: сообщение "modules not found" содержит имя модуля, используйте имя для поиска в Makefiles, чтобы узнать, какой CONFIG_XXX, и измените этот CONFIG_XX на =m.

Наконец, если вам просто нужно новое ядро, я предлагаю вам использовать конфигурацию дистрибутива make allyesconfig:

cd your_kernel_src
cp /boot/your_distribution_config .config
make menuconfig             # can exit it directly with nothing changed
make -j16
make modules_install
make install
# update the grub, if it is required for your distribution.

решение2

Вы скомпилировали ядро ​​с помощью plain make, но не модули. Запустите make -j16 all modules.

решение3

Вам нужно убедиться, что цепочка инструментов знает о дереве исходного кода ядра, с которым вы работаете. Вам нужно установить переменную окружения KERNEL_TREEв каталог, где находятся ваши исходные коды. Смотритеhttps://unix.stackexchange.com/a/147700/37538для справки.

Связанный контент