- linux⚓︎
- Сборка⚓︎
- Подготовьте заголовки для использования:⚓︎
- Установка⚓︎
- Установленные файлы⚓︎
- Пакеты Linux
- Установлены ли необходимые пакеты?
- Установка пакетов из репозитория
- Установка пакетов вручную
- Пример: Установка пакетов вручную в Fedora
- Как добавить в linux заголовки для работы с ядром?
- Linux packages
- Are the required packages already installed?
- Installing the packages from the repository
- Installing the packages manually
- Example: Installing the packages manually in Fedora 14
linux⚓︎
Файлы заголовков определяют способ определения функций в исходном файле. Они используются таким образом, чтобы компилятор мог проверить правильность использования функции в качестве сигнатуры функции (возвращаемое значение и параметры) в файле заголовка. Для этой задачи фактическая реализация функции не требуется.
Когда вы компилируете драйвер устройства как модуль ядра, вам необходимы установленные заголовочные файлы ядра. Также они требуются, если вы собираете пользовательское приложение, которое взаимодействует напрямую с ядром.
Версия заголовочных файлов должна соответствовать версии устанавливаемого ядра.
Сборка⚓︎
Данный пакет является частью архива с ядром Linux.
Убедитесь, что в архив не включены файлы которые могут помешать сборке.
Эта команда выполнит очистку дерева исходных текстов и удалит файлы конфигурации. Разработчики ядра рекомендуют, чтобы эта команда выполнялась перед каждым процессом компиляции.
Подготовьте заголовки для использования:⚓︎
Установка⚓︎
find usr/include -name '.*' -delete rm usr/include/Makefile cp -rv usr/include $LIN/usr
Заголовочные файлы, расположенные в системном каталоге /usr/include , должны всегда быть те, которые использовались при компиляции Glibc. Их никогда не следует заменять на чистые заголовочные файлы ядра или любые другие подготовленные заголовочные файлы.
Установленные файлы⚓︎
Данный пакет устанавливает множество заголовочных файлов, в частности /usr/include/asm/*.h, /usr/include/asm-generic/*.h, /usr/include/drm/*.h, /usr/include/linux/*.h, /usr/include/misc/*.h, /usr/include/mtd/*.h, /usr/include/rdma/*.h, /usr/include/scsi/*.h, /usr/include/sound/*.h, /usr/include/video/*.h, and /usr/include/xen/*.h
Пакеты Linux
Чтобы добавить необходимые модули к ядру Linux, программе установки требуются перечисленные ниже пакеты Linux.
- Пакет с заголовками или исходными кодами ядра. Версия пакета должна соответствовать версии ядра.
- Набор компиляторов GNU Compiler Collection (GCC). Версия GCC должна быть той же, с которой было скомпилировано ядро.
- Инструмент Make.
- Интерпретатор Perl.
- Библиотеки libelf-dev , libelf-devel или elfutils-libelf-devel для сборки ядер не ниже 4.15 и настроены с параметром CONFIG_UNWINDER_ORC=y. Для некоторых дистрибутивов, например Fedora 28, их необходимо установить отдельно от заголовков ядра.
Имена этих пакетов зависят от используемого дистрибутива Linux.
В ОС Red Hat Enterprise Linux, CentOS и Fedora пакеты обычно устанавливаются программой установки. В других дистрибутивах вы должны сами установить пакеты, если они не установлены или это не те версии, которые требуются.
Установлены ли необходимые пакеты?
Чтобы проверить, установлены ли пакеты, сделайте следующее:
- Выполните следующую команду, чтобы узнать версию ядра и необходимую версию GCC:
$ yum list installed | grep kernel-devel
$ dpkg --get-selections | grep linux-headers
$ dpkg --get-selections | grep linux-image
В каждом из этих случаев убедитесь в том, что версии такие же, как в параметре Linux version в шаге 1.
$ yum list installed | grep elfutils-libelf-devel
Установка пакетов из репозитория
В следующей таблице указано, как установить необходимые пакеты в различных дистрибутивах Linux.
Программа установки загрузит и установит пакеты автоматически по вашей подписке на Red Hat.
Выполните следующую команду:
Программа установки загрузит и установит пакеты автоматически.
Выполните следующую команду:
Выполните следующие команды:
$ sudo apt-get update
$ sudo apt-get install linux-headers-$(uname -r)
$ sudo apt-get install linux-image-$(uname -r)
$ sudo apt-get install gcc-
$ sudo apt-get install make
$ sudo apt-get install perl
Выполните следующие команды:
$ sudo zypper install kernel-source
$ sudo zypper install gcc
$ sudo zypper install make
$ sudo zypper install perl
Дополнительно для ядер версии 5.10 и новее:
flex
bison
Выполните следующие команды:
$ sudo apt install rpm
$ sudo apt install gcc
$ sudo apt install make
$ sudo apt-get install linux-headers-`uname -r`
$ sudo apt install flex
$ sudo apt install bison
Если используется Astra SE, пакеты необходимо установить с диска разработчика для текущей версии Astra.
Выполните следующие команды:
$ su -
# apt-get install kernel-source-
(где – версия ядра)
# apt-get install kernel-headers-modules-std-def
# apt-get install gcc
# apt-get install make
Если версия пакетов в репозитории новее версии текущего ядра, необходимо также обновить ядро:
$ su -
# apt-get update
# apt-get dist-upgrade
# update-kernel
Выполните следующие команды:
$ sudo yum install kernel-lt-devel
$ sudo yum install kernel-lt-headers
$ sudo yum install gcc
$ sudo yum install make
Желательно также полностью обновить систему:
Пакеты будут загружены из репозитория дистрибутива и установлены.
Для других дистрибутивов Linux обратитесь к документации по дистрибутиву, чтобы выяснить точные имена необходимых пакетов и способы их установки.
Установка пакетов вручную
Возможно, необходимо будет установить пакеты вручную, если:
- У машины нет активной подписки на Red Hat или подключения к Интернету.
- Программе установки не удается найти версию kernel-devel или gcc , соответствующую версии ядра. Если доступная версия kernel-devel новее версии ядра, необходимо обновить ядро или установить соответствующую версию kernel-devel вручную.
- Необходимые пакеты имеются в локальной сети, и вы не хотите тратить время на автоматический поиск и загрузку.
Загрузите пакеты из своей локальной сети или с веб-сайта надежного третьего поставщика и установите, как описано ниже.
- В Red Hat Enterprise Linux, CentOS и Fedora выполните следующую команду как привилегированный пользователь:
$ rpm -ivh PACKAGE_FILE1 PACKAGE_FILE2 PACKAGE_FILE3
$ sudo dpkg -i PACKAGE_FILE1 PACKAGE_FILE2 PACKAGE_FILE3
Пример: Установка пакетов вручную в Fedora
Для установки необходимых пакетов в Fedora выполните следующие шаги.
- Узнайте версии ядра и GCC. Например:
$ cat /proc/version
Linux version 2.6.35.6-45.fc14.i686
gcc version 4.5.1
kernel-devel-2.6.35.6-45.fc14.i686.rpm
gcc-4.5.1-4.fc14.i686.rpm
$ rpm -ivh kernel-devel-2.6.35.6-45.fc14.i686.rpm
$ rpm -ivh gcc-4.5.1.fc14.i686.rpm
$ rpm -ivh make-3.82-3.fc14.i686
Редакция от 11 июля 2023 г.
Как добавить в linux заголовки для работы с ядром?
Вопрос тупой но как добавить linux заголовки для работы с ядром. Суть мне нужно написать код для работать с прерываниямии драйвером 8250.#include #include таких заголовков нету как добавить или включить. Пытался обновить ядро sudo apt-get install linux-headers-$(uname -r) но заголовки все равно не появились. Что нужно с делать?
Убунта спасает тебя от паники ядра от твоего говнокода, подум0й.
Интересное замечание но без результативное мне нужен способ решения ошибки путем ее исправление а не отказа от работы
а есть менеджер для поиска пакетов на консоль просто у меня граф оболочка не установлена и для меня она ненужна слишком много места будет занимать
$ dpkg -S serial_8250.h linux/irq.h linux-headers-4.15.0-48: /usr/src/linux-headers-4.15.0-48/include/linux/serial_8250.h linux-headers-4.15.0-50: /usr/src/linux-headers-4.15.0-50/include/linux/serial_8250.h linux-headers-4.15.0-50: /usr/src/linux-headers-4.15.0-50/include/linux/irq.h linux-headers-4.15.0-48: /usr/src/linux-headers-4.15.0-48/include/linux/irq.h $ sudo apt install linux-headers-generic .
Почитать, как писать драйверы устройств. LDD3 тебе в помощь.
apt-get install linux-headers-$(uname -r )
установил не помогло если пытаюсь использовать библиотеку irq.h или serial_8250.h выходит такая ошибка fatal error: linux/irq.h: No such file or directory #include
Vsevolod-linuxoid ★★★★★ ( 20.05.19 11:22:31 MSK )
Последнее исправление: Vsevolod-linuxoid 20.05.19 11:22:54 MSK (всего исправлений: 1)
Добавить при компиляции путь, относительно которого указываешь include ?
gcc -I /usr/src/linux-headers-$(uname -r)/include program.c
И не следует ставить тег Ubuntu для Debian, у них разное именование части пакетов. И вместо заголовков для конкретного ядра следует использовать метапакет linux-image-amd64
попытался в итоге начал ругать на другую библиотеку gcc -I /usr/src/linux-headers-$(uname -r)/include ex.c -o ex In file included from /usr/src/linux-headers-4.14.108-ti-r104/include/linux/kernel.h:7:0, from /usr/src/linux-headers-4.14.108-ti-r104/include/linux/list.h:9, from /usr/src/linux-headers-4.14.108-ti-r104/include/linux/module.h:9, from ex.c:1: /usr/src/linux-headers-4.14.108-ti-r104/include/linux/linkage.h:8:10: fatal error: asm/linkage.h: No such file or directory #include
теперь для всех каждый раз придется прописывать или все же можно как то по другому установить
Linux packages
To add the necessary modules to the Linux kernel, the setup program needs the following Linux packages:
- The package with kernel headers or sources. The package version must match the kernel version.
- The GNU Compiler Collection (GCC) compiler system. The GCC version must be the one with which the kernel was compiled.
- The Make tool.
- The Perl interpreter.
- The libelf-dev , libelf-devel , or elfutils-libelf-devel libraries for building kernels starting with 4.15 and configured with CONFIG_UNWINDER_ORC=y. For some distributions, such as Fedora 28, they need to be installed separately from kernel headers.
The names of these packages vary depending on your Linux distribution.
In Red Hat Enterprise Linux, CentOS, and Fedora, the packages normally will be installed by the setup program. In other distributions, you need to install the packages if they are not installed or do not have the required versions.
Are the required packages already installed?
To check whether the packages are already installed, perform these steps:
- Run the following command to find out the kernel version and the required GCC version:
yum list installed | grep kernel-devel
dpkg --get-selections | grep linux-headers
dpkg --get-selections | grep linux-image
In either case, ensure that the package versions are the same as in Linux version in step 1.
yum list installed | grep elfutils-libelf-devel
Installing the packages from the repository
The following table lists how to install the required packages in various Linux distributions.
kernel-devel
gcc
make
elfutils-libelf-devel
Run the following command:
kernel-devel
gcc
make
elfutils-libelf-devel
Run the following command:
linux-headers
linux-image
gcc
make
perl
Run the following commands:
sudo apt-get update
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get install linux-image-$(uname -r)
sudo apt-get install gcc-
sudo apt-get install make
sudo apt-get install perl
kernel-source
gcc
make
perl
sudo zypper install kernel-source
sudo zypper install gcc
sudo zypper install make
sudo zypper install perl
The packages will be downloaded from the distribution’s repository and installed.
For other Linux distributions, please refer to the distribution’s documentation regarding the exact names of the required packages and the ways to install them.
Installing the packages manually
You may need to install the packages manually if:
- The machine does not have an active Red Hat subscription or Internet connection.
- The setup program cannot find the kernel-devel or gcc version corresponding to the kernel version. If the available kernel-devel is more recent than your kernel, you need to either update the kernel or install the matching kernel-devel version manually.
- You have the required packages on the local network and do not want to spend time for automatic search and downloading.
Obtain the packages from your local network or a trusted third-party website, and install them as follows:
- In Red Hat Enterprise Linux, CentOS, or Fedora, run the following command as the root user:
rpm -ivh PACKAGE_FILE1 PACKAGE_FILE2 PACKAGE_FILE3
sudo dpkg -i PACKAGE_FILE1 PACKAGE_FILE2 PACKAGE_FILE3
Example: Installing the packages manually in Fedora 14
Follow these steps to install the required packages in Fedora 14 on a 32-bit machine:
- Run the following command to determine the kernel version and the required GCC version:
Linux version 2.6.35.6-45.fc14.i686
gcc version 4.5.1
kernel-devel-2.6.35.6-45.fc14.i686.rpm
gcc-4.5.1-4.fc14.i686.rpm
rpm -ivh kernel-devel-2.6.35.6-45.fc14.i686.rpm
rpm -ivh gcc-4.5.1.fc14.i686.rpm
rpm -ivh make-3.82-3.fc14.i686
The topic was last revised: Saturday, October 31, 2020 7:36:31 PM
Web Help for Cyber Protection Version 20.10 .