Задать при компиляции значение uname -r

Взгляд изнутри

Модератор: Модераторы разделов

Ответить
IMB
Сообщения: 2561
ОС: Debian

Задать при компиляции значение uname -r

Сообщение IMB »

Доброго дня!
Работаю с платой на базе ARM-процессора и требуется подгружать модули ядра при работе.
modprobe ищет модули в /lib/modules/`uname -r`, используя insmod можно загрузить модули из любого места, но это немного усложняет код, так как требуется следить за расположением модулей.
Итак, что имеем...
host-машина 2.6.32-5-686
вывод после кросс-компиляции ядра Linux-2.6.32.17-davinci1-ga2e745
вывод с платы 2.6.32.17-davinci1-g2de3b63-dirty
Вопрос - возможно ли привести вывод uname -r на плате к виду с хост-машины или задать его при компиляции?
Думаю понятно для чего это надо, при этом не сложно на плате создать директорию /lib/modules/`uname -r` с модулями и загружать их использую modprobe.
Спасибо.
Спасибо сказали:
Аватара пользователя
Aviator
Сообщения: 65
ОС: Debian GNU/Linux amd64

Re: Задать при компиляции значение uname -r

Сообщение Aviator »

На хост машине, для кросс-компиляции, надо взять тот же конфиг, который использовался для компиляции ядра, залитого на плату. И с помощью этого конфига кросс-компилировать или конфигурировать ядро. Тогда у вас и CONFIG_LOCALVERSION будет такой же, и не будет глупых несовместимостей между ядром в NAND платы и вашими бинарными модулями.
Если такого конфига нет, то просто залейте на плату ядро с вашим конфигом и обновите /lib/modules на плате.
С уважением, Сергей.
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: Задать при компиляции значение uname -r

Сообщение IMB »

По-видимому, я не совсем точно объяснил проблему. Мне не надо на хосте или плате иметь одно и тоже ядро.
Мне нужен точно прогнозируемый вывод uname -r на плате. Сейчас в конфиге следующее:

Код: Выделить всё

CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y

В основном меня интересует откуда при выводе на плате берётся dirty.
Спасибо сказали:
Аватара пользователя
Aviator
Сообщения: 65
ОС: Debian GNU/Linux amd64

Re: Задать при компиляции значение uname -r

Сообщение Aviator »

Скорее всего подставляется в конфиг тулчейном от Texas Instruments в процессе сборки ядра. Вообще говоря, uname это системный вызов, я бы посмотрел, не наложены ли на него какие то патчи. К сожалению, этим тулчейном не пользуюсь, т.к. вожусь с AT91SAM9.
Я бы поступил так:

Код: Выделить всё

CONFIG_LOCALVERSION="-davinci1"
# CONFIG_LOCALVERSION_AUTO is not set

Т.к. суффикс "-gXXXXXXX" берется из локального дерева git.
После этого должно быть так, теоретически:

Код: Выделить всё

2.6.32.17-davinci1

Независимо от того, где запущено это ядро.
С уважением, Сергей.
Спасибо сказали:
Ответить