Как создать заголовок Linux для недавно скомпилированного ядра?

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

Две функции, первые выполнения find с параметрами Вы передаете его, сохраняет вывод в массиве и отображает их. Вторым является просто помощник для доступа к тому массиву.

myfind() {
  IFS=$'\n' __last_find_result=($(find "$@"));
  printf "%s\n" "${__last_find_result[@]}";
}
myget() {
  echo "${__last_find_result[$1]}";
}

Вариант использования:

$ myfind . -name "c*"
./a b/c d
./.git/config
./.git/hooks/commit-msg.sample
$ vim "$(myget 0)"
# This opens the "./a b/c d" file.
$ vim "$(myget 2)"
# This opens ".git/hooks/commit-msg.sample"

Кавычки, не требуемые вокруг $(myget index) если у Вас нет пробела или других неприятных символов в Ваших именах файлов.
Продвигает целый вывод find к Вашей среде, которая могла бы быть ограничена. (Используя временный файл, а не тот массив решил бы это, но имеет другие проблемы - особенно параллельное использование от нескольких оболочек.)

2
07.12.2013, 19:50
1 ответ

Вы не имеете к.

KDIR := /lib/modules/$(shell uname -r)/build

Предполагает, что Вы создаете модуль для в настоящее время рабочего ядра, так как оно использует $(shell uname -r) завершать путь. Когда Вы создаете ядро и работаете make modules_install, модули копируются в соответствующий каталог в /lib/modules - это будет соответствовать выводу uname -r для того ядра.

build подкаталог является ссылкой на исходное дерево ядра. Не стирайте это, очевидно.

Если Вы компилируете для другого ядра, чем рабочее, просто набор KDIR к исходному каталогу, где Вы создали его.

5
27.01.2020, 21:57
  • 1
    Большой, да я создал заголовки Linux. но теперь, как я могу создать build подкаталог? В моем debian сборка не связывается со всем исходным деревом ядра. –  Milad Khajavi 07.12.2013, 19:45
  • 2
    build не должен ли даже быть вообще, чтобы система работала на самом деле. Но это делает, если Вы хотите использовать тот make-файл с рабочим ядром. Если существует каталог сборки в дистрибутиве /lib/modules/X.x-whatever, независимо от того, что это, по крайней мере, часть исходного дерева - который, вероятно, установлен, когда Вы устанавливаете "исходный пакет" ядра. Если это пусто или не там, поэтому Вы не установили такой пакет. Но Вам не нужен он, если Вы создаете из источника, Вы загрузили себя. Материал дистрибутива не будет включен так или иначе. –  goldilocks 07.12.2013, 19:55

Теги

Похожие вопросы