@smithana

Можно ли в Linux x64 собрать драйвер (модуль ядра) для Linux x86?

Добрый день,

в Windows с помощью компиляторов Windows Driver Kit я могу собрать драйвер для почти любой версии Windows.
Есть ли подобная возможность для Linux? например Ubuntu.

Как собрать для другой версии ядра я уже понял. Например у меня была Ubuntu 16 на ядре 4.4, потребовался драйвер для ядра 4.8.

С помощью команд:
apt-cache search linux-image
sudo apt-get install linux-image-your_version_choice
sudo apt-get install linux-image-extra-your_version_choice

я поменял ядро на 4.8 и собрал драйвер.
Корректно это?

Но больше вопросов вызывает необходимость собрать драйвер для x86 в дистрибутиве x64.
По этому поводу не нашёл ничего конкретного.

Спасибо.
  • Вопрос задан
  • 432 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Всё что вам нужно, чтобы собрать модуль для ядра любой архитектуры любой версии -- это компилятор для этой архитектуры, исходники ядра и .config для этого ядра.
Шаги такие:
- распаковать/вычекнуть исходники ядра нужной версии
- создать и сконфигурировать каталог сборки ядра: создать каталог, скопировать в него .config, выполнить
make -C <каталог исходников ядра> \
O=<каталог сборки ядра> \
ARCH=<целевая архитектура> \
CROSS_COMPILE=<префикс кросс-компилятора> \
silentoldconfig

- собрать ядро:
make -C <каталог исходников ядра> \
O=<каталог сборки ядра> \
ARCH=<целевая архитектура> \
CROSS_COMPILE=<префикс кросс-компилятора> \
vmlinux

- собрать модуль используя созданный на предыдущем шаге каталог:
make -C <каталог сборки ядра> \
M=<каталог исходников модуля> \
ARCH=<целевая архитектура> \
CROSS_COMPILE=<префикс кросс-компилятора> \
modules


CROSS_COMPILE можно опустить, если нужно использовать хостовый компилятор. Для x86 ARCH=x86
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы