Как получить linux headers

Как установить заголовочные файлы ядра в Linux

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

Если версия вашего ядра не менялась после установки дистрибутива, или вы обновляли его с использованием системного менеджера пакетов (то есть apt-get, aptitude или yum) из системных репозиториев, то заголовочные файлы вы также можете установить с помощью пакетного менеджера. Однако если вы скачивали исходный код ядра и компилировали его самостоятельно, то заголовочные файлы необходимо устанавливать с помощью команды make.

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

Установка заголовочных файлов ядра в Debian, Ubuntu или Linux Mint

Если вы не компилировали ядро вручную, то можете установить соответствующие заголовочные файлы ядра с помощью команды apt-get.
Сначала проверьте, не установлены ли уже требуемые заголовочные файлы с помощью команды:

Теперь установите заголовочные файлы, как показано ниже.

Проверьте, что установка прошла успешно.

По умолчанию в Debian, Ubuntu или Linux Mint заголовочные файлы находятся в /usr/src.

Установка заголовочных файлов ядра в Fedora, CentOS или RHEL

Если вы не обновляли ядро вручную, то можете установить соответствующие заголовочные файлы ядра с помощью команды yum.
Сначала проверьте, не установлены ли уже требуемые заголовочные файлы. По умолчанию заголовочные файлы ядра расположены в /usr/src/kernels/.
Если подходящих заголовочных файлов не установлено, вы можете установить их с помощью команды yum. Она автоматически найдет подходящий пакет.

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

Теперь проверьте, что установлены заголовочные файлы соответствующей версии с помощью команды:

Источник

How to Install Kernel Headers in Ubuntu and Debian

In our last article, we have explained how to install kernel headers in CentOS 7. Kernel Headers contain the C header files for the Linux kernel, which offers the various function and structure definitions required when compiling any code that interfaces with the kernel, such as kernel modules or device drivers and some user programs.

It is very important to note that the kernel headers package you install should match with the currently installed kernel version on your system. If your kernel version ships with the default distribution installation or you have upgraded your Kernel using dpkg or apt package manager from the Ubuntu or Debian base repositories, then you must install matching kernel headers using package manager only. And if you’ve compiled kernel from sources, you must also install kernel headers from sources.

Читайте также:  Windows reset file permission

In this article, we will explain how to install Kernel Headers in Ubuntu and Debian Linux distributions using default package manager.

Install Kernel Headers in Ubuntu and Debian

First check your installed kernel version as well as kernel header package that matches your kernel version using following commands.

Check Kernel Version and Kernel Headers in Ubuntu

On Debian, Ubuntu and their derivatives, all kernel header files can be found under /usr/src directory. You can check if the matching kernel headers for your kernel version are already installed on your system using the following command.

Check Kernel Headers in Ubuntu

From the above output, it’s clear that the matching kernel header directory doesn’t exist, meaning the package is not yet installed.

Before you can install the appropriate kernel headers, update your packages index, in order to grab information about the latest package releases, using the following command.

Then run the following command that follows to install the Linux Kernel headers package for your kernel version.

Install Kernel Headers in Ubuntu

Next, check if the matching kernel headers have been installed on your system using the following command

Verify Installed Kernel Headers in Ubuntu

That’s all! In this article, we have explained how to install kernel headers in Ubuntu and Debian Linux and other distributions in the Debian family tree.

Always keep in mind that to compile a kernel module, you will need the Linux kernel headers. If you have any quires, or thoughts to share, use the comment form below to reach us.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

We are thankful for your never ending support.

Источник

Q: Где лежат хэдеры самостоятельно скомпиленного ядра?

Собственно по сабжу — когда компиляешь ядро, куда падают headers?

То есть насколько я понял, они остаются в папке компиляции (допустим /usr/src/linux*) а так как эти самые хэдэры нужны для установки, например nvidia драйвера и не только, то что нужно оставить — ведь хранить распакованные исходники уже бессмысленно — и от них хочется избавиться.

Читайте также:  Windows server сам устанавливает принтер

Так вот вопрос скорее дополнится: «где лежат хэдеры?», и «что необходимо(помимо хэдэров) оставить — чтобы не возникало проблем потом?»

А дистриб не дебиано-подобный?

После установки ядра делаешь make clean и забываешь о нем.

anonymous нет — mandriva, и в данном вопросе разницы нет, разве что предвижу что Вы хотели предложить собрать ядро в deb-пакет — это я тоже знаю как делается(ведь именно гайды по убунту везде по интернетам и разбросаны)

panter_dsd ну про make clean — это я знаю, и он всё таки не удаляет сырцы. Да и вопрос был совсем в другом.

Я сейчас специально посмотрел kernel.spec, по которому собираются ядрёные пакеты в Fedora. Там для создания пакета kernel-devel (как раз всё, что нужно для сборки внешних драйверов) дерево с исходниками ядра подчищается вручную. Т.е. стандартного метода типа «make install_kernel_devel» (по аналогии с install_headers) судя по всему нет.

nvidia собирается с —kernel-source-path=KERNEL-SOURCE-PATH

а вообще можно в /lib/modules/`uname -r`/build’ посмотреть

> что необходимо(помимо хэдэров) оставить — чтобы не возникало проблем потом?

только конфиг. а если ядро собрано с CONFIG_IKCONFIG, то вообще ничего.

а для установки например nvidia драйвера достаточно выполнить

modprobe configs (если CONFIG_IKCONFIG=m)
zcat /proc/config.gz > /usr/src/linux/.config
make prepare
make scripts

спасибо! вот они где засранцы прячутся(но это в дистрибовском ядре на работе — погляжу дома падают ли они туда же при сборке/установке модулей — ядро я всегда руками в /boot переносил — как то спокойнее когда знаешь что куда положил, особенно после очень давнего инцидента со slackware)

и ещё вопрос — при явном указании —kernel-source-path хэдеры получается не нужны? инсталятор сам что надо соберёт из сырцов?

спасибо — покурю на досуге

в /lib/modules будет ссылка на каталог сборки, соответственно если его не удалять все модуль собираемые отдельно потом найдут всё что им надо

хм, то есть всё таки удалять исходники черевато или нет?

Чревато тем что допмодули типа nvidia не соберутся.

make headers_install тебе поможет

чёрт, я ведь даже документацию к ядру ещё не успел почитать(да и вообще пока не притрагивался) — давно на никсах ядра не собирал, и такого не припомню.

Источник

Правильная инструкция по установке linux-headers в Debian Stretch. uname -r|sed ‘s/[^-]*-[^-]*-//’ — работает неправильно?

(uname -r|sed ‘s/[^-]*-[^-]*-//’) — что вот это вот делает?

Но почему apt-get устанавливает linux-headers откуда-то отсюда:

Или нужно при установке обязательно указывать часть backports?

apt-get install -t stretch-backports linux-headers-`uname -r`

Я читал это, но не понял что вот это делает: (uname -r|sed ‘s/[^-]*-[^-]*-//’)? uname -r — понятно, но sed.. ‘s/[^-]*-[^-]*-//’)?!

Заменяет последовательность «[не минусы]минус[не минусы]минус» на пустую строку

Кстати, можно было написать uname -r | cut -d- -f3 , но люди почему-то любят использовать sed для всего.

Можно, но пока нет

А как желательно писать при установку пакетов для архитектуры процессора amd64?

apt-get install linux-image-amd64

apt-get install linux-image-$(uname -r|sed ‘s/[^-]*-[^-]*-//’)

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

Читайте также:  What does java do in windows

для amd64 одинаково, но это-то заклинание именно такое, чтобы не задавать новичку лишний раз вопрос об архитектуре системы, чтобы работало везде.

замудрено больно, мне проще посмотреть что там есть вкусного

и потом полностью указать желаемое

Зачем это всё, когда есть мета-пакеты?

И какой мета-пакет нужен мне?

мне проще посмотреть что там есть вкусного

Ещё есть apt-cache policy

uname -r | cut -d- -f3-

linux-image-amd64 linux-headers-amd64 — если для обоих указать backports, то так и поставятся.

Вместо того, чтобы в гугле на первой странице найти ответ на вопрос, ты лезешь на форум спрашивать. Нет предела тупости.

А ну я уже поставил этот мета-пакет. Осталось только найти 5 пакетов для 390 драйвера. А эта установка мета-пакетов тоже нужна из backpor’ов насколько я понял.

Такой подход не всегда нужен. Иногда надо установить определённую версию, а не последнюю в случае указания мета-пакета.

Так для меня актуально ядро 4.17, а не 4.18, на который указывает мета-пакет.

в таком случае проще поставить нужную версию, чем колупать sed.

Правильная инструкция по установке linux-headers

Источник

Что делает linux-headers-`uname -r`?

Что делает следующая команда?

sudo выполняет инструкцию с повышенными привилегиями. apt-get — это команда для извлечения определенного пакета / программы. Что делают остальные переключатели / флаги?

Я пытаюсь сбросить драйверы беспроводного адаптера до заводских настроек по умолчанию.

1 ответ

—reinstall install :

Обычно, это записано install —reinstall , но оба работают просто великолепно. Это просто говорит apt-get переустановить пакет (пакеты).

linux-headers- :

linux-headers- начало имени пакета. Если Вы работаете dpkg -l | grep linux-headers- Вы видите, что полный список любых пакетов установил, которые начинаются с этого:

Заголовочные файлы от сайта GNU:

Заголовочный файл является файлом, содержащим C объявления и макроопределения, которые будут совместно использованы несколькими исходными файлами. Вы запрашиваете использование заголовочного файла в Вашей программе включением его с C предварительная обработка директивы ‘#include’.

И, поскольку Вы видите от ответа от dpkg -l | grep linux-headers- , пакеты, которые запускаются с linux-headers- заголовочные файлы для ядра Linux.

`uname -r` :

Это — то, что известно как Замена Команды. (Ссылка к странице faqs.org о возможностях замены команды BASH.)

Это работает uname -r команда, которая возвращает текущую версию ядра:

и затем помещает то, что возвращается из uname -r команда в sudo apt-get —reinstall install linux-headers-`uname -r` команда.

От страницы faqs.org:

Замена команды позволяет выводу команды заменять саму команду. Замена команды происходит, когда команда включается следующим образом:

Bash выполняет расширение путем выполнения команды и замены замены команды стандартным выводом команды с любыми запаздывающими удаленными новыми строками.

Теперь, Вы не видите, что это происходит — Вы просто видите результаты. Однако, если Вы действительно видели команду после uname -r ответ был помещен в команду, это несколько, это было бы похоже (изменяющийся для Вашей текущей версии ядра, очевидно):

sudo apt-get —reinstall install linux-headers-3.16.0-31-generic

Упрощенная версия:

Вы говорите склонный — добираются для переустановки пакета заголовков Linux для текущей версии ядра.

Источник

Оцените статью