Файлы для включения сборки модулей ядра вне дерева

Мне нужно подготовить 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/

В этот сценарий передается путь к дереву исходных текстов ядра после того, как последнее было встроено в исходный код (не кросс-платформенный).

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