Linux headers что это
Как то я уже писал о том, как обновить ядро в Debian, но, решил обновить данную статью. Да и не просто обновить, но и дополнить. Ядро системы играет важную роль в работе вашего компьютера, от ядра зависит так же поддержка оборудования. Чем новее ядро, тем больше вероятность, что ваше оборудования будет поддерживаться. В Debian используется версия ядра с длительной поддержкой, но, можно установить и другое, которое имеется в репозиториях самого Debian. Или собрать ядро из исходников, как это сделать, написано в данной статье . В этой статье, мы рассмотрим как можно обновить ядро из репозиториев backports и experimental. А так же как удалить не используемые ядра. Давайте приступим и первым делом сначала обновим ядро из репозиториев самого Debain 10
Смотрим доступные ядра Debian
Первым делом нужно узнать какая версия ядра у нас установлена, для этого можно воспользоваться командой “uname -r”, а так же можно ввести команду “uname -a”, она тоже покажет версию ядра. Какую из команд вести, решать вам, я же веду “uname -r”, перед этим рекомендую обновить систему до актуального состояния:
Как вы можете увидеть, у меня сейчас стоит ядро версии 4.19.0-10-amd64. Теперь давайте подключим репозитории backports и experimental, откуда мы и будем устанавливать более свежую версию ядра в Debian 10. Что бы подключить данный репозиторий, воспользуемся редактором nano, о котором вы можете прочитать в этой статье. Нам нужно отредактировать файл sources.list, куда и впишем репозиторий backports и experimental. Открываем файл sources.list введя команду в терминале:
sudo nano /etc/apt/sources.list
Вписываем в открывшийся файл адрес репозитория, вы можете вписать только backports и установить ядро из него. А можете сразу два репозитория подключить и выбрать самую свежую версию ядра, которая только доступна в репозиториях Debian:
После чего сохраняем файл sources.list и выходим из него, далее обновляем списки пакетов командой “apt update”. Теперь нужно посмотреть какие версии ядра имеются в данном репозитории, что бы в дальнейшем их установить. Что бы посмотреть, а затем и установить более свежее ядро, вводим команду:
sudo apt search linux-headers
В результате в терминале будет выведен список всех доступных ядер, которые вы можете установить. Например, я установлю “linux-headers-rt-amd64”
Обновляем ядро
Что бы установить выбранное ядро в Debian, необходимо ввести команду установки “apt install”, а затем вести выбранное имя ядра. В данном случае это linux-headers-rt-amd64. Замечу, что “header” это лишь заголовок само ядро обозначается как “linux-image”. Соответственно, нам необходимо установить их обоих. Подробней о пакетах:
- linux-image-версия – само ядра
- linux-image-extra-версия – модули ядра
- linux-headers-версия – Заголовки
sudo apt install linux-headers-rt-amd64 linux-image-rt-amd64
После установки перезагружаем компьютер и проверяем какое ядро у нас используется. Для этого вводим команды либо “uname -r” либо “uname -a”. Если же вы устанавливали Debian на ноутбук, то вам так же необходимо обновить firmware из репозитория backports.
sudo apt -t stretch-backports install firmware-iwlwifi
Удаляем не используемые ядра
Со временем у вас может получится несколько ядер в вашей системе Debian. Это может быть в результате естественного обновления системы, так как во время обновления так же и обновляется периодически ядро, так и установка кастомных ядер. Все их хранить у себя на компьютере не обязательно. Что бы их удалить, можно воспользоваться простой командой “purge”. Но, для начала нужно узнать, какие ядра системы Debian у нас имеются, для этого вводим одну из команд, которая выведет все установленные ядра:
apt list --installed | egrep "linux-image|linux-headers"
dpkg --list | egrep "linux-image|linux-headers"
Теперь собственно переходим к удалению неиспользуемых ядер, например, я хочу удалить ядро “4.19.0-6”. Для этого вводим команду “purge –remove” далее версию ядра и заголовки “linux-headers”. То есть примерно так “sudo purge –remove linux-image-версия linux-headers-версия”. Теперь собственно переходим к удалению:
sudo purge linux-image-4.19.06-amd64 linux-headers-4.19.06-amd64
После удаления неиспользуемого ядра, можно обновить загрузчик GRUB, что бы он не выводил удаленное ядро. Для этого вводим команду:
Более подробно про обновление загрузчика вы найдете в данной статье . Перезагружаем компьютер и после загрузки системы, смотрим, какие ядра у нас теперь имеются в системе, для этого выполним одну из выше приведенных команд:
Для удаления всех неиспользуемых ядер, можно ввести команду:
Но, я бы не рекомендовал вам этого делать, так как для практичности работы Debian, да и не только, рекомендую вам оставлять парочку ядер в вашей системе. В случае чего, вы всегда сможете выбрать одно из двух ядер и загрузится с него.
Заключение
А на этом сегодня все. Надеюсь данная статья будет вам полезна.
Журнал Cyber-X
Когда вы компилируете драйвер устройства как модуль ядра, вам необходимы установленные заголовочные файлы ядра. Также они требуются, если вы собираете пользовательское приложение, которое взаимодействует напрямую с ядром. При установке заголовочных файлов ядра, необходимо убедиться, что их версия совпадает с версией ядра установленного в системе.
Если версия вашего ядра не менялась после установки дистрибутива, или вы обновляли его с использованием системного менеджера пакетов (то есть 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. Она автоматически найдет подходящий пакет.
Если заголовочные файлы ядра, установленные с помощью вышеприведенной команды, не соответствуют установленному в системе ядре, значит оно устарело. В этом случае обновите ядро системы до последней версии с помощью приведенной ниже команды. После обновления необходимо перезагрузить систему.
Теперь проверьте, что установлены заголовочные файлы соответствующей версии с помощью команды:
sudo выполняет инструкцию с повышенными привилегиями. apt-get - это команда для извлечения определенного пакета / программы. Что делают остальные переключатели / флаги?
Я пытаюсь сбросить драйверы беспроводного адаптера до заводских настроек по умолчанию.
1 ответ
--reinstall install :
Обычно, это записано install --reinstall , но оба работают просто великолепно. Это просто говорит apt-get переустановить пакет (пакеты).
linux-headers- :
linux-headers- начало имени пакета. Если Вы работаете dpkg -l | grep linux-headers- Вы видите, что полный список любых пакетов установил, которые начинаются с этого:
Заголовочные файлы от сайта GNU:
И, поскольку Вы видите от ответа от dpkg -l | grep linux-headers- , пакеты, которые запускаются с linux-headers- заголовочные файлы для ядра Linux.
`uname -r` :
Это работает uname -r команда, которая возвращает текущую версию ядра:
и затем помещает то, что возвращается из uname -r команда в sudo apt-get --reinstall install linux-headers-`uname -r` команда.
Замена команды позволяет выводу команды заменять саму команду. Замена команды происходит, когда команда включается следующим образом:
или
Bash выполняет расширение путем выполнения команды и замены замены команды стандартным выводом команды с любыми запаздывающими удаленными новыми строками.
Теперь, Вы не видите, что это происходит - Вы просто видите результаты. Однако, если Вы действительно видели команду после uname -r ответ был помещен в команду, это несколько, это было бы похоже (изменяющийся для Вашей текущей версии ядра, очевидно):
sudo apt-get --reinstall install linux-headers-3.16.0-31-generic
Упрощенная версия:
Вы говорите склонный - добираются для переустановки пакета заголовков Linux для текущей версии ядра.
Я знаю, что если я хочу скомпилировать свое собственное ядро Linux, мне нужны заголовки ядра Linux, но для чего они хороши?
Я узнал, что в /usr/src/ , похоже, есть десятки файлов заголовков C. Но какова их цель, они напрямую не включены в источники ядра?
3 ответа
Файлы заголовков определяют интерфейс: они определяют способ определения функций в исходном файле.
Они используются таким образом, чтобы компилятор мог проверить правильность использования функции в качестве сигнатуры функции (возвращаемое значение и параметры) в файле заголовка. Для этой задачи фактическая реализация функции не требуется.
Вы можете сделать то же самое со всеми исходными файлами ядра, но вы установите много ненужных файлов.
Пример: если я хочу использовать функцию
в программе мне не нужно знать, как реализована реализация foo , мне просто нужно знать, что она принимает один param ( double ) и возвращает целое число.
Как указано, файлы заголовков определяют интерфейсы для функций, а также структуры, используемые программами.
В случае файлов заголовков ядра эти функции и структуры находятся внутри самого ядра.
Если вы создаете полное ядро, то, очевидно, вам нужны полные исходные файлы, а не только заголовки. Однако, если вы компилируете драйвер устройства или другой загружаемый модуль, который подключается к ядру, вам нужны только файлы заголовков, поэтому вы можете сэкономить место, не устанавливая полные источники.
Разделение пакетов так, что вы можете установить только файлы заголовков, частично исторически, поскольку разница в использовании диска была существенной, когда диски были меньше. В наши дни весь источник на диске (без необходимости) не будет основным соображением на диске.
Термированные заголовочные файлы происходят из языка программирования C , используемого при написании ядра Linux.
Чтобы объяснить это с очень высокого уровня .
В C перед использованием необходимо иметь декларацию вперед функции. Другими словами, описание функции, ее параметров и возвращаемых данных. Общепринятой практикой является включение всех форвардных деклараций в один файл с заголовком . Файлы исходного кода для других программ могут затем include этот заголовок и иметь доступ ко всем функциям исполняемого исполняемого файла программы после его компиляции .
Файлы заголовков Linux являются файлами .h , которые содержат функции, которые предоставляет ядро Linux, которые могут быть вызваны из других программ .
Читайте также: