Размещение двоичного файла ядра и источников для здания модуля ядра?

То устройство имеет те же блоки, использованное и свободное пространство как Ваш rootfs файловая система, таким образом, они - вероятно, то же. Можно проверить, где uuid указывает на с:

ls -l /dev/disk/by-uuid/ef55765f-dae5-426f-82c4-0d98265c5f2

Мое предположение - то, что Вы просто загрузились от жизненной файловой системы на изображении CD-ROM.

2
20.04.2014, 14:46
3 ответа

Обычно я подхожу к этому вопросу следующим образом. Я использую систему Fedora 19, но это будет работать с любым дистрибутивом, который предоставляет службы locate .

$ locate "linux/init.h" | grep include
/usr/src/kernels/3.13.6-100.fc19.x86_64.debug/include/linux/init.h
/usr/src/kernels/3.13.7-100.fc19.x86_64.debug/include/linux/init.h
/usr/src/kernels/3.13.9-100.fc19.x86_64/include/linux/init.h
/usr/src/kernels/3.13.9-100.fc19.x86_64.debug/include/linux/init.h

Ваши пути будут другими, но главное - попросить найти , чтобы найти, что включено ("linux / init.h"), и отфильтровать эти результаты по ключевому слову ] включают .

Существуют также специфические для дистрибутива способы поиска этих мест с помощью RPM (Redhat) или APT (Debian / Ubuntu).

gcc

Обратите внимание, однако, что пути в файле C / C ++ являются относительными:

#include <linux/init.h>

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

.

отрывок из man gcc

   -I dir
        Add the directory dir to the list of directories to be searched for 
        header files.  Directories named by -I are searched before the 
        standard system include directories.  If the directory dir is a
        standard system include directory, the option is ignored to ensure 
        that the default search order for system directories and the special 
        treatment of system headers are not defeated .  If dir
        begins with "=", then the "=" will be replaced by the sysroot 
        prefix; see --sysroot and -isysroot.

Внешние модули

В этой статье обсуждается, как можно включить разработку собственных модулей ядра в «среду сборки», включенную в ядро ​​Linux. Статья называется: Перенос драйверов: компиляция внешних модулей . Организация make-файла ядра также рассматривается в этой статье: makefiles.txt .

Для новичков в ядре есть также эта статья: KernelHeaders с веб-сайта kernelnewbies.org.

ПРИМЕЧАНИЕ: Ядро использует систему KBuild, которая рассматривается здесь как часть документации, включенной в ядро.

Ссылки

2
27.01.2020, 22:00

Ответы часто относятся к конкретному дистрибутиву, потому что для этого у них может быть специальный механизм. В случае Debian есть Справочник по ядру Debian Linux . Поскольку Ubuntu по сути является Debian, все это должно применяться. Если я правильно понял, вы спрашиваете об установке ядра. Один из подходов, и это хороший вариант, - создать двоичный пакет для ядра и заголовков ядра и установить их, и это руководство покажет вам, как это сделать. См. Также мой ответ на вопрос «Как обновить ядро ​​Debian Wheezy в автономном режиме?» . Этот ответ действительно можно было бы очистить.

Обратите внимание, что использование стандартного ядра Debian / Ubuntu и бинарных пакетов заголовков ядра является вполне разумным делом и не требует компиляции.

1
27.01.2020, 22:00

Ядро имеет цель deb-pkg . В debian make deb-pkg и sudo dpkg -i 'в двух полученных пакетах (в ../ ) сработали для меня как прелесть. Я думаю, что это работает и на Ubuntu. При сборке и установке они автоматически попадают в нужные места.

1
27.01.2020, 22:00

Теги

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