как установить заголовочные файлы ядра в linux
Как установить заголовочные файлы ядра в 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. Она автоматически найдет подходящий пакет.
Если заголовочные файлы ядра, установленные с помощью вышеприведенной команды, не соответствуют установленному в системе ядре, значит оно устарело. В этом случае обновите ядро системы до последней версии с помощью приведенной ниже команды. После обновления необходимо перезагрузить систему.
Теперь проверьте, что установлены заголовочные файлы соответствующей версии с помощью команды:
Как установить Linux Kernel Headers на Kali Linux 2.0 (Kali Sana)
Как установить Linux Kernel Headers на Kali Linux 2.0 (Kali Sana)
Нужны заголовки для Linux
Заголовочные файлы ядра в ядре Linux используются для двух целей:
Как установить заголовки ядра Linux на Kali Linux 2.0
Изменить репозитории
Если следующие репозитории не существуют, замените старые на те, что указаны ниже.
Обновите apt-cache и обновите:
После этого проверьте версию своего ядра, набрав:
Установить заголовки ядра
Чтобы установить заголовки ядра, выполните команду:
Вы также можете добавить версию ядра к команде Linux-заголовки. Например
Смотрите скриншот ниже для более подробной информации
Для вашей версии Kali Linux 1.x просто выполните:
Вы можете прочитать мою статью о том, как добавить стандартные репозитории Kali для Kali Linux 1.x. Это все о том, как установить заголовки ядра Linux на Kali Linux 2.0.
Как установить заголовки Linux в Kali Linux
Главное меню » Kali Linux » Как установить заголовки Linux в Kali Linux
Заголовочные файлы Linux используются при определении интерфейса между различными компонентами ядра. Они также используются для определения интерфейсов между ядром и пользовательским пространством. Типичный случай, когда требуются заголовки Linux, – это запуск гипервизора, поскольку для инструментов требуются модули, которые взаимодействуют с ядром.
По умолчанию Kali Linux не поставляется с установленными заголовками Linux, вам придется делать это вручную.
Установка заголовков Linux с помощью APT
Один из методов, который вы можете использовать для установки заголовков ядра, – это использование диспетчера пакетов Debian с репозиториями Kali Linux.
Перед успешной установкой заголовков ядра вам может потребоваться выполнить полное обновление системы.
Отредактируйте файл sources.list и добавьте правильные репозитории, представленные в следующем ресурсе,
Затем обновите репозитории и запустите полное обновление дистрибутива.
После завершения перезагрузите установку Kali Linux и установите заголовки.
Введите команду ниже, чтобы установить заголовки Linux для вашей версии ядра. Мы воспользуемся командой uname –r, чтобы напрямую получить версию ядра.
Эта команда должна успешно запуститься и установить необходимые заголовки для вашей версии ядра. Однако, если описанный выше метод не работает, вы можете установить их вручную.
Установка заголовков ядра вручную
Перед установкой заголовков ядра вручную запустите полное обновление дистрибутива и перезагрузитесь, чтобы убедиться, что у вас установлена последняя версия ядра.
Откройте свой браузер и перейдите к
Загрузите необходимые заголовки ядра в виде пакета deb.
Затем используйте команду dpkg для установки заголовков:
Это должно установить необходимые заголовки ядра.
Вывод
В этой статье показано, как вручную установить заголовки ядра в Kali Linux и использовать диспетчер пакетов apt.
HOW-TO: Сборка ядра Linux
Содержание
В данном пошаговом руководстве вы узнаете, как правильно собрать и установить ядро ветвей >2.6 в семействе ОС Ubuntu.
Шаг 1. Получение исходного кода ядра
Исходники ядра Ubuntu можно получить двумя способами:
150 Мб в текущую папку. Чтобы получить исходники ядра, версия которого установлена на компьютере выполните команду:
Не забудьте включить общий доступ к исходникам в репозитории ( Параметры системы → Программы и обновления → Программное обеспечение Ubuntu → Исходный код ). Из консоли это сделать можно раскомментировав строки начинающиеся с deb-src в файле /etc/apt/sources.list, а затем выполнить обновление командой: «sudo apt-get update».
Другие ядра
Также существуют ядра, работоспособность которых в Ubuntu не гарантируется. Например, известна проблема с рядом популярных системных приложений (в частности драйвера NVidia, VirtualBox), которые при своей установке компилируются под установленное ядро. Поэтому для их установки на ядро, нестандартное для данной версии Ubuntu (например, Ubuntu 16.04 идёт с ядром 4.4.0), может потребоваться их отдельная компиляция вручную или специальные патчи, а последние версии ядер с kernel.org приложение может вообще не поддерживать.
Распакуйте полученный архив, используя команды:
Или в случае с linux-source:
Шаг 2. Получение необходимых для сборки пакетов
Выполните следующие команды для установки основных пакетов:
Далее всё зависит от того, каким способом вы хотите произвести конфигурацию ядра. Это можно сделать несколькими способами.
В случае, если вы хотите использовать config, oldconfig, defconfig, localmodconfig или localyesconfig, вам больше не нужны никакие дополнительные пакеты. В случае же с оставшимися тремя вариантами необходимо установить также дополнительные пакеты.
Для установки пакетов, необходимых для использования menuconfig выполните следующую команду:
Для установки пакетов, необходимых для использования gconfig выполните следующую команду:
Для установки пакетов, необходимых для использования xconfig выполните следующую команду:
Шаг 3. Применение патчей
Официальные патчи уже наложены на исходники, если ядро получалось описанной выше командой:
Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду:
Эта команда установит программу patch, необходимую для, как можно догадаться, применения патчей. Теперь скачайте файл патча в папку, куда вы распаковали ядро. Это может быть либо архивный файл (напр. Bzip2 или Gzip), либо несжатый patch-файл.
На данный момент подразумевается, что вы уже сохранили файл в ту папку, куда ранее распаковали ядро, и установили программу patch.
Если скачанный вами файл был в формате Gzip (*.gz), тогда выполните следующую команду для распаковки содержимого архива:
Если скачанный вами файл был в формате Bzip2 (*.bz2), тогда выполните следующую команду для распаковки содержимого архива:
Если при её выполнении не возникнет ошибок, то изменения можно смело внедрять в сами файлы. Для этого выполните команду:
Шаг 4. Конфигурация будущей сборки ядра
Перейдите в папку, куда вы распаковали ядро, выполнив команду
На данный момент вы уже должны были определиться с методом конфигурации ядра (если нет, то ознакомьтесь с ними в разделе «Получение необходимых для сборки пакетов». В зависимости от этого, выполните следующую команду для запуска выбранного вами способа конфигурации:
После вызова соответствующая программа конфигурации будет запущена. Произведите необходимые настройки в соответствии с вашими потребностями, сохраните файл конфигурации и переходите к следующему шагу.
Шаг 5. Сборка ядра
Итак, приготовления завершены. Теперь можно запустить процесс сборки ядра. Чтобы это сделать, выполните команду:
Шаг 6. Установка образов и заголовков ядра
Когда сборка ядра подошла к концу, в вашей домашней папке появятся два deb-пакета. Их и необходимо установить. Для этого выполните команды:
и найдите эти самые два пакета.
Шаг 7. Генерация начального RAM-диска
Для корректной работы Ubuntu требует наличия образа начального RAM-диска. Чтобы его создать, выполните команду:
Шаг 8. Обновление конфигурации загрузчика GRUB
Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера, выполните следующую команду:
Файл menu.lst (для GRUB версии 1) или grub.cfg (для GRUB версии 2) обновится в соответствии с наличием установленных операционных систем и образов ядер.
Шаг 9. Проверка ядра
Сборка и установка ядра успешно выполнены! Теперь перезагрузите компьютер и попробуйте загрузить систему с новым ядром. Чтобы удостовериться, что система запущена с новым ядром, выполните команду
Она выведет на экран используемую версию ядра.
Если всё сделано правильно, то вы можете удалить архивы с исходным кодом и весь каталог linux-2.6.x.y в вашей домашней папке. Это освободит около 5 ГБ на вашем жёстком диске (размер освобождаемого пространства зависит от параметров сборки).
На этом процесс сборки и установки завершён, поздравляю!
Сборка ядра Linux
Самым основным компонентом операционной системы Linux есть ядро. Именно ядро выступает промежуточным звеном между пользовательскими программами и оборудованием компьютера. Во всех бинарных дистрибутивах не нужно заботиться о сборке и настройке ядра, все уже сделали за нас разработчики дистрибутива. Но если вы хотите установить самую свежую версию ядра или настроить его под себя удалив от туда всё лишнее, вам придется собрать его вручную.
Раньше ядро собирали для того чтобы получить максимальную производительность от своего оборудования, но сейчас, учитывая стремительное увеличение мощности компьютеров увеличение производительности при сборке ядра совсем незаметно. Сейчас сборка ядра может понадобиться пользователям не бинарных дистрибутивов, таких как Gentoo, тем, кто хочет внести некоторые изменения в ядро, получить новую самую свежую версию ядра и, конечно, же тем, кто хочет полностью разобраться в работе своей системы. В этой статье мы рассмотрим как собрать ядро Linux на примере дистрибутива Ubuntu.
Сборка ядра Linux из исходников
1. Текущая версия ядра
Для того чтобы посмотреть текущую версию ядра, установленную в системе используйте такую команду:
2. Установка необходимых пакетов
Для успешной сборки ядра необходимо убедится, что в вашей системе установлены все пакеты, нужные для сборки ядра и установить недостающие. Для этого выполните команду:
sudo apt install libncurses-dev libncurses dwarves build-essential gcc bc bison flex libssl-dev libelf-dev
После установки пакетов можно переходить к загрузке исходников ядра.
3. Получение исходников ядра
Исходники лучшие брать с сайта вашего дистрибутива, если они там есть или официального сайта ядра: kernel.org. В этой статье будет рассмотрена загрузка исходников с kernel.org.
Итак когда определились с версией зайдите на kernel.org и скачайте нужные исходники в формате tarball:
В этой статье будет использована самая новая на данный момент стабильная версия 5.13.7. Полученный с официального сайта архив необходимо распаковать. Для этого перейдите в папку загрузок и выполните команду распаковки:
Затем нужно перейти в папку с распакованными исходниками ядра. Например, для версии 5.13.7 команда будет выглядеть вот так:
4. Текущая конфигурация ядра
Вы можете сами настраивать ядро с нуля, но это, скорее всего, займет очень много времени и точно не для новичков. Поэтому удобнее всего взять текущую конфигурацию ядра и использовать её в качестве базы для сборки нового. Во многих дистрибутивах конфигурация хранится в файле /proc/config.gz. Однако это будет работать только если была включена соответствующая опция ядра. Извлечь такую конфигурацию можно с помощью команды:
Часто поддержка этой возможности отключена. Но в Ubuntu и других современных дистрибутивах, конфигурация ядра находится в папке /boot, в файле с названием config и версия ядра. Если у вас в системе установлено несколько ядер, то будет несколько конфигурационных файлов. Например, config-5.11.0-25-generic:
Для того чтобы скопировать этот конфигурационный файл в папку с исходниками выполните:
5. Автоматическая конфигурация
Полученную конфигурацию необходимо актуализировать до состояния текущего ядра. В новых версиях ядра, обычно, добавляются новые опции, значений которых ещё нет в конфигурации ядра вашего дистрибутива. Для этого есть несколько скриптов. В этой статье будет рассмотрено только два: oldconfig и localmodulesconfig. Первый скрипт позволяет в интерактивном режиме заполнить новые поля конфигурации. Для его запуска в папке с исходниками ядра выполните:
После запуска скрипта вам придется просмотреть все вопросы и ответить на них. Обычно скрипт советует как отвечать и в большинстве случаев можно оставить значение по умолчанию, но если вы сомневаетесь, то можно посмотреть какое значение стоит выбрать в Google. Особое внимание уделяйте пунктам, не отмеченным как NEW, такие настройки не новые и требуют вашего вмешательства.
После ответа на все вопросы можно переходить к следующему шагу. Однако, при таком способе конфигурации ядра останутся включёнными многие ненужные модули, а значит сборка займет много времени, много места на диске (до 20 Гб) и само ядро получится большого размера.
С помощью команды localmodulesconfig можно оптимизировать процесс. Это ответ на вопрос как собрать ядро Linux под свое железо проще всего. Она работает аналогично предыдущей, только в дополнение к этому проверяет какие модули ядра сейчас загружены и оставляет включёнными только их, сборку всех остальных отключает. Такое ядро соберется намного быстрее, да и вопросов, на которые надо будет ответить будет меньше.
Здесь обратите внимание на алгоритм сжатия модулей ядра. Лучше оставить без сжатия:
6. Ручная настройка ядра
После того как вы выполнили один из автоматических скриптов настройки ядра, вы можете захотеть настроить что-то дополнительно вручную. Для этого используется команда menuconfig. Она позволяет изменять настройки ядра в псвевдографическом меню. Для его запуска выполните:
По каждому пункту можно получить справку. Для этого выберите кнопку Help и нажмите Enter:
Пункт Support for paging of anonymous memory (swap) позволяет включить поддержку подкачки:
Возвращайтесь назад с помощью кнопки Exit, а затем откройте пункт File systems. Здесь можно включить или отключить поддержку файловых систем. Убедитесь, что включена поддержка ext4 и ext3, а также можете включить Btrfs и F2FS:
6. Сборка ядра и установка вручную
Если вы хотите установить ядро вручную достаточно выполнить такие команды последовательно для его сборки:
По умолчанию будет использоваться только одно ядро процессора. Вы можете ускорить сборку попросив программу использовать сразу несколько ядер с помощью опции -j. Например, для сборки в 8 потоков используйте такую команду:
После завершения выполнения этих команд сборка ядра Linux будет завершена, дальше необходимо установить ядро. Для этого выполните:
Скрипт автоматически обновит конфигурацию Grub и вы сможете перезагрузить компьютер и получить новое ядро:
Но прежде чем идти дальше, давайте рассмотрим ещё один способ сборки ядра.
7. Сборка пакета для Ubuntu
Описанный выше способ установки не очень удобный, поскольку если вы захотите удалить ядро, вам придется это делать вручную. Вместо этого вы можете собрать пакет для своего дистрибутива и установить его с помощью пакетного менеджера. Для сборки deb пакета выполните такую команду:
После завершения сборки ядра Linux пакеты появятся на каталог выше каталога с исходниками:
Для установки этих пакетов достаточно выполнить такую команду:
Затем вы можете перезагрузить компьютер и убедится, что теперь используется новое ядро:
Для удаления ядра, установленного таким способом достаточно загрузится с другим ядром и удалить пакеты ядра из системы. Например, для этой версии команда будет выглядеть так:
sudo apt remove linux-headers-5.13.7 linux-image-5.13.7 linux-image-5.13.7-dbg linux-libc-dev
Что делать если ядро не загружается
Если по каким-либо причинам собранное только что ядро не загружается, то ничего страшного ещё не произошло. Вы можете загрузится со старым ядром и начать всё сначала или удалить новое ядро и продолжить использовать систему со старым ядром. Для этого в меню Grub необходимо выбрать пункт Дополнительные параметры, а потом нужную версию ядра, например: 5.11.0.25:
Если меню Grub не отображается, попробуйте зажать перед загрузкой операционной системы клавишу Shift. После авторизации в системе вы можете удалить новое ядро с помощью пакетного менеджера, если использовали его для установки или вручную. Для удаления вручную следует удалить файлы ядра из папки /boot. Например:
А затем необходимо обновить конфигурацию Grub:
После этого в вашей системе останутся только старые ядра.
Выводы
Вот и все. В этой статье мы подробно рассмотрели выполняется сборка ядра Linux из исходников. Это будет полезно всем желающим лучшие понять свою систему, и тем, кто хочет получить самую новую версию ядра в своей системе. Если остались вопросы, задавайте комментарии!
Нет похожих записей
Оцените статью:
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
47 комментариев
Установку первого своего линукса начинал с именно ручной настройки и сборки ядра. Уже и не помню сколько было попыток, прежде чем оно «завелось»:) Где-то неделю по вечерам после работы я его собирал на домашнем компьютере читая хэндбуки в консольном браузере 🙂 Это в 2008-м году было. С винды сел на gentoo. На сборку всей системы до юзабельного состояния у меня ушло недели 3. С тех пор и ковыряюсь в никсах.
Перейти с окноуза и сразу на генту это уже целая биография
Можно разве что прикрутить старое ядро к новому дистрибутиву.
Возможно, если знаете Си, чтоб вытянуть драйвер и кучу зависимостей поправить в исходном коде нового ядра. Вот только какой вэтом великий смысл для домашнего ПК, находящегося за NAT провайдера и за NAT роутера? Или найденные уязвимости старой версии ядра, другие домачадцы будут эксплуатировать?
Хорошо что сказали, через консоль качается очень много лишнего, нужно будет подправить ссылку.
Я так понимаю это ошибка и вместо lscpi нужно вводить lspci
Смотрю вы так ссылку и не поменяли. При клонирование скачивается много лишнего.
Ссылку поменял на Github, но там тоже скачивается документация. Так что если нужна самая последняя версия, которой еще нет на сайте, то придется качать все.
А после команды инсталяции
$ sudo make install && sudo make modules_install
Как затем правильно удалить ядро и модули при этом не затронув модули старого ядра?
У меня ОС ROSA Linux Fresh.
admin, расскажи, реально интересно как удалить модули ничего не сломав
нееее, речь идет про модули sudo make modules_install какой командой обратить эту установку?
Я нашел ответ если кому интересно будет, удаляете ядра которые вам не нужны больше, в директории /boot так же удаляете сопровождающие файлы для удаляемых ядер, а именно: system.map и initramfs. Далее по поводу обращения в спять make modules_install: в директории /lib/modules просто удаляете папку с модулями соответствующую названием с названием ядра которое удаляете. И все, как будто ничего не было, другие ядра в целостности и сохранности и ничего не испорченно. Информация взята из журнала LinuxFormat за октябрь 2016 года, очень полезная вещь(не реклама, совет новичкам).
Поставил себе Ubuntu 16.04 на виртуальную машину и скачал ядро 4.11. Начал собирать, столкнулся с проблемами при сборке. Может, кому поможет.
sudo apt-get install libssl-dev build-essential kernel-package libncurses-dev
С помощью этих установок на Ubuntu 16.04 у меня всё заработало и ядро начало собираться.
Админ, статья хорошая, мне не хватило только преднастроек самой системы для работы со сборкой ядра, если добавишь, будет статья от А до Я.
Так вот оно что! Мне при сборке с помощью make && make modules выдавало ошибку про отсуствие openssl, ядро 4.19.2. Всё заработало
А можно ли в принципе включить поддержку программного RAID NTFS? Ядро 4.9.
Я софт рейд-1 делал с помощью mdadm
Как раз этой строчки мне и не хватало «sudo apt-get install libssl-dev build-essential kernel-package libncurses-dev».
Спасибо.
Как вручную установить само ядро описанно cp arch/x86_64/boot/bzImage /boot/vmlinuz, а как в ручную установить модули для ядра?
хм, если это так просто то почему разрабы не ставят самое последнее ядро?
например на Linux Mint сейчас используется ядро 4.15 а на kernel.org уже стабильное 4.17
Потому что меняется API ядра и разрабам надо кучу софта переписывать, чтоб корректно работало на новом ядре. не всё так быстро. Вы же не хотите получить какой-нибудь вечно глючный дистрибутив?
А что такое ядро ML?
По инструкции в одной из статей здесь обновляю ядро, но там можно выбрать только версию ML.
До этого в системе были только обычные версии ядра, без ML.
Я давно (очень давно) не компилировал ядра. еще со вторых версий.
есть вопорос: в случае если новое ядро не оживёт, можно ли будет загрузиться в том что было и заново начать сборки?
Раньше я руками правил граб для того чтобы было старое ядро.
Сейчас в grub есть дополнительные пункты меню со старыми ядрами или можно как и раньше исправлять конфиг перед загрузкой.
я уже ожидаю завершение компиляции. 5.2.8
странно как-то. раньше обязательно нужно было выкачивать заголовочные файлы, а сецчас и без их идёт компиляция ИЛИ они у меня уже есть.
Раньше, напрмер, для компиляции ядра 2.4.2 нужно было качать и распак linux-headers-2.4.2. Сейчас не так. И распоковку кодов ядра нужно было делать строго в /usr/src/
Ну понятно что времени не мало прошло со времен ядра 2,4, сейчас проще.
я уже ожидаю завершение компиляции. 5.2.8
странно как-то. раньше обязательно нужно было выкачивать заголовочные файлы, а сецчас и без их идёт компиляция ИЛИ они у меня уже есть.
Раньше, например, для компиляции ядра 2.4.2, нужно было качать и распак linux-headers-2.4.2. Сейчас не так. И распаковку кодов ядра нужно было делать строго в /usr/src/.
Ну понятно что времени не мало прошло со времен ядра 2,4, сейчас проще.
а обновлять grub не нужно?
update-grub
По сравнению с ядрами 2.4, ядра 4.15 и 5.2 в ДВА раза больше. Скорее всего из-за добавления нового железа и появления новых штучек (в очень обширном понятии этого слова).
У меня вопрос у автору и ко всем комментирующим. КТО-ТО ИЗ ВАС ПРОВОДИЛ СБОРКУ ЯДРА СОГЛАСНО ЭТОМУ ПОСТУ. ЗАЧЕМ ТАКОЕ ПИСАТЬ? ИЛИ ЭТО ОПЕЧАТКИ.
—
И ОПЫТ, СЫН ОШИБОК.
ПРАВИЛЬНО НУЖНО НЕ sudo make install && sudo make modules_install, А
всё. у меня всё получилось!
Эта ошибка вылазиет,не могу ничего скомпилировать.Что делать?
sudo make install && sudo make modules_install ТАК НЕ ПРАВИЛЬНО.
слушай, а может компутеры эти и Тимофей Хирьянов, это все не твое?
Как узнать установлено ли ядро или нет после перезагрузки?
Вся статья из каких-то поломанных команд (с ошибками, не продуманные), начиная с первых же строк! ADMIN это ник или статус владельца сайта? В любом случае, выкладывать такие статьи, человеком опытным, позор! Тем более не допилить такую статью до ума за 5 лет! Тем более для такого популярного ресурса и уж тем более для столь важной темы, основы основ Linux(без которой дальше никто и никуда не двинет)! При учёте вполне вменяемых комментариев, с исправлениями и доработками!
ПОЗОР.
Сергей прекрасно ответил. вот достойная помощь. Наверное Вы родились с ОЗУ не скажу где. Человек узнать хочет что-то, научиться чему-то. Его или не его решать только ему.