У меня есть вопрос по установке ядра. Я загрузил новую версию исходного кода ядра 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для справки.