Файлы для включения сборки модулей ядра вне дерева
Мне нужно подготовить apt
-package для материалов, позволяющих создавать модули ядра для пользовательского Linux. У меня есть перекрестная сборка на другой машине заголовков и модулей ядра, использующихheaders_install
а также modules_install
make
-цели. После копирования сгенерированных каталогов я все еще не могу создавать модули ядра на целевой машине, поскольку/lib/modules/$(shell uname -r)/build
пропал, отсутствует.
Вот мой вопрос. Какие минимальные зависимости мне нужно включить в свой пакет, чтобы включить сборки модулей (наряду с сгенерированными заголовками ядра и модулями, упомянутыми выше)?
Заранее спасибо.
1 ответ
После некоторых экспериментов я получил рабочее решение:
#!/bin/bash
ARCH=arm
SRC_DIR=$1
MOD_DIR=$2
BUILD_DIR=$MOD_DIR/build
set -ex
cd $SRC_DIR
make modules_install INSTALL_HDR_PATH=$MOD_DIR
rm $MOD_DIR/{build,source}
mkdir $BUILD_DIR
cp $SRC_DIR/{.config,Makefile,System.map,Module.symvers} $BUILD_DIR
mkdir -p $BUILD_DIR/arch/$ARCH
cp $SRC_DIR/arch/$ARCH/Makefile $BUILD_DIR/arch/$ARCH/
cp -r $SRC_DIR/scripts $BUILD_DIR/
# Build a headers tree manually, because
# `make headers_install` doesn't put everything needed.
cp -r $SRC_DIR/include $BUILD_DIR/
cp -r $SRC_DIR/arch/$ARCH/include/* $BUILD_DIR/include/
cp -r $SRC_DIR/include/generated/* $BUILD_DIR/include/
cp -r $SRC_DIR/arch/$ARCH/include/generated/* $BUILD_DIR/include/
cp $SRC_DIR/include/linux/kconfig.h $BUILD_DIR/include/linux/
В этот сценарий передается путь к дереву исходных текстов ядра после того, как последнее было встроено в исходный код (не кросс-платформенный).