Файлы для включения сборки модулей ядра вне дерева - PullRequest
1 голос
/ 11 февраля 2020

Мне нужно подготовить apt -пакет для вещей, позволяющих собирать модули ядра для пользовательских Linux. Я кросс-собрал на другой машине заголовки и модули ядра, используя цели headers_install и modules_install make. После копирования сгенерированных каталогов я все еще не могу собрать модули ядра на целевой машине, так как отсутствует /lib/modules/$(shell uname -r)/build.

Вот мой вопрос. Какие минимальные зависимости я должен включить в свой пакет, чтобы включить сборку модулей (вместе с сгенерированными заголовками ядра и модулями, упомянутыми выше)?

Заранее спасибо.

1 Ответ

0 голосов
/ 14 февраля 2020

После некоторых экспериментов я нашел рабочее решение:

#!/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/

Этот скрипт получает путь к дереву исходного кода ядра после того, как последнее было построено изначально (не кроссплатформенно).

...