LINUX.ORG.RU

Headers ядра


0

1

Добрый день. Начинаю пробовать linux, соответственно нубский вопрос: Есть плата с arm7. Под нее собрал u-boot, собрал ядро 3.4.103 и поставил rootfs ArchLinux. В репозиториях Arch'a есть хэдеры только для 3.4.90. Собственно вопрос, откуда хэдеры можно поставить? Можно ли их ставить через menuconfig или еще каким способом?


собрал ядро 3.4.103 и поставил rootfs ArchLinux Собственно вопрос, откуда хэдеры можно поставить?

Директорию с исходными кодами ядра, в которой вы производили сборку ядра и есть kernel-headers.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Хммм, я привильно понимаю. У меня есть linux/output/lib/modules/3.4.103/build (build - это ссылка на корневую директорию linux, где я конфигурировал ядро) т.е. всё, вместе с make файлами, директориями и т.п. перенести в мой rootfs usr/src?

crtx
() автор топика
Ответ на: комментарий от crtx

Вот посмотрите содержимое пакета с заголовочными файлами в Debian, сделайте по аналогии.

Вот в случае с arm: https://packages.debian.org/jessie/armhf/linux-headers-3.16.0-4-armmp/filelist

Но вообще можете просто скопировать целиком директорию с исходными кодами ядра, в которой производилась сборка, только она «весит» порядка 1Гб.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от NightSpamer

Всем спасибо. Буду ковырять.

crtx
() автор топика
Ответ на: комментарий от kostik87

Как это «другое», когда в ${SYSROOT}/usr будут скопированы kernel-headers от того самого ядра, на котором всё и будет запускаться? И «весить» это будет не гиг, а несколько метров.

NightSpamer
()
Последнее исправление: NightSpamer (всего исправлений: 1)
Ответ на: комментарий от NightSpamer

Заголовочные файлы для запуска не нужны. Они нужны только для сборки. Если ТС будет на целевом устройстве собирать внешние модули под ядро, то ему полученные вашим способом заголовочные файлы ядра не нужны.

Нужны примерно вот те, которые указаны по ссылкам на packages.debian.org, в частности:

/usr/src/linux-headers-верся_ядра/Makefile
/usr/src/linux-headers-верся_ядра/Module.symvers
/usr/src/linux-headers-верся_ядра/arch/архитектура_ядра/kernel/asm-offsets.s
/usr/src/linux-headers-верся_ядра/include/linux/version.h
/usr/src/linux-headers-верся_ядра/.config
/usr/src/linux-headers-верся_ядра/arch/архитектура_ядра/include/generated/
/usr/src/linux-headers-верся_ядра/include/config/*
/usr/src/linux-headers-верся_ядра/include/generated/*
Эти файл могут находиться и сразу в /lib/modules/верся_ядра/source, в таком случае нужна ещё ссылка:
/lib/modules/верся_ядра/build -> /lib/modules/верся_ядра/source
либо, например, размещаться в /usr/src/linux-headers-версия_ядра, в таком случае нужно создать ссылки
/lib/modules/верся_ядра/build -> /usr/src/linux-headers-версия_ядра
/lib/modules/верся_ядра/source -> /usr/src/linux-headers-версия_ядра
Без файлов Makefile, Module.symvers, asm-offsets.s и в особенности version.h собрать любой модуль под ядро не получится.

Ну а если ТС вообще не планирует сборку на устройстве, то они ему не нужны.

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

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 3)
Ответ на: комментарий от crtx

Которые вам указал NightSpamer нужно помещать в /usr/include, собственно они у вас сейчас там и лежат.

Если вам нужны заголовочные файлы для сборки модулей под ядро, то смотрите те ссылки, что я вам указал.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Спасибо. Стало проясняться. Да, я собираюсь собирать модули ядра, поэтому и спросил про headers.

crtx
() автор топика
Ответ на: комментарий от kostik87

Да, про модули ядра чёт не подумал... но и их бы я кросскомпилял там-же, где и ядро собиралось, ничего не перетаскивая.

NightSpamer
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.