Я поддерживал локальный патч для ядра Linux-4.9 для исследования.Патч добавляет три системных вызова.Системные вызовы не подходят для апстримирования.
До сих пор я использовал make deb-pkg
для генерации пакетов Debian для моего ядра.После установки пользовательское пространство может вызывать новые системные вызовы, используя syscall(2)
, одному из макросов __NR_...
, сгенерированных процессом сборки.
Проблема, которую я хочу решить, состоит в следующем: заголовок, который определяет номера системных вызовов,в пакете libc-dev
, сгенерированном make deb-pkg
.Установка пользовательского libc-dev
вызывает хаос для apt-get
(в последний раз, когда я устанавливал свой пользовательский libc-dev
, он удалил все llvm и gcc и сделал apt-get
непригодным для использования с некоторыми странными сценариями «удерживаемых пакетов», которые я не делаюпонять (несмотря на то, что dpkg --get-selections
не показывает никаких сохраненных пакетов)).
Я хотел бы добавить заголовок моего собственного крафта с заголовками ядра, таким образом избегая ужасного пакета libc-dev
в целом.
Мой патч добавляет каталог krun
к верхнему уровню директории источника ядра:
$ find krun
krun
krun/test_prog
krun/Makefile
krun/test_prog.c
krun/krun_reg.h
krun/.gitignore
krun/krun-kernel.h
krun/krun.c
Из чтения Linux-4.9 Kernel Docs , кажется, ядолжен быть в состоянии выставить krun-kernel.h
, используя header-y
.
Так что krun/Makefile
выглядит так:
obj-y := krun.o
header-y += krun-kernel.h
test_prog: test_prog.c
${CC} ${CFLAGS} ${LDFLAGS} -Wall -Wextra -o $@ $<
clean:
rm -f test_prog
и в Makefile верхнего уровня, у меня есть:
core-y += krun/
header-y += krun/
Однако, если я запускаю:
$ make headers_install INSTALL_HDR_PATH=./tmp_hdrs
Мой заголовок нигде не виден под tmp_hdrs
.
Возможно ли это как-нибудь?Спасибо.