Управляющее резюме
Вы, вероятно, хотите установить пакет под названием linux-headers-generic
.
Если ход uname -r
дает вам что - то другое , чем generic
после того , как номер версии, заменить , что для generic
в linux-headers-generic
. (Это может быть server
или generic-pae
в некоторых установках некоторых выпусков Ubuntu, и есть несколько других случайных «ядер».)
Поскольку вам, скорее всего, это нужно для того, чтобы вы могли создать драйвер (который может быть автоматизирован, вам не нужно «собирать его самостоятельно»), рекомендуется также установить build-essential
его, чтобы у вас были все необходимые инструменты. ,
Полное объяснение
Насколько мне известно, ни у одной операционной системы нет пакета под названием Linux-kernel-devel
. Это по двум причинам:
- Имена пакетов, начинающиеся с заглавных букв, встречаются крайне редко для любой Unix-подобной ОС.
- Операционные системы GNU / Linux обычно называют свои связанные с ядром пакеты так, чтобы имена содержали слово kernel или слово linux , но не оба. (В Ubuntu это слово linux .)
Связанные с ядром пакеты в системах, использующих Red Hat Package Manager ( rpm
) и связанные утилиты , часто встречаются kernel
в названии своих пакетов. Например, у Mageia есть несколько пакетов , имена которых начинаются с kernel
и заканчиваются на devel
. Эти пакеты почти всегда (в Mageia и любой операционной системе, в которой они есть) предоставляют файлы заголовков, необходимые для сборки драйверов из исходного кода для использования с ядром. Они также могут предоставить соответствующие утилиты для облегчения. Эти пакеты:
- ничего не предоставляют полный исходный код ядра. Это предусмотрено другими пакетами.
- ничего не обеспечивает предварительно скомпилированные, годное к употреблению ядра. Это предусмотрено другими пакетами.
- ничего не обеспечивает компилятор или большинство других инструментов цели сборки. Они также предоставляются другими пакетами.
В Ubuntu, как видно из приведенного здесь списка , пакеты с заголовками ядра имеют имена, начинающиеся с linux-headers
. Обычно правильный пакет для установки linux-headers-generic
. Однако, чтобы быть уверенным в том, какой пакет установить для получения заголовков, соответствующих вашему текущему ядру, выполните:
uname -r
Вы получите вывод, который выглядит примерно так:
3.5.0-36-generic
Таким образом, у вас будет номер версии (который будет включать .
символы и, как правило, по крайней мере, один -
), за которым следует буква a -
, за которой следуют одно или несколько слов, указывающих, какое ядро вы используете.
Если вы просто хотите , чтобы заголовки для конкретной версии вам случится быть запущен в настоящее время, вы можете установить пакет, имя которого , linux-headers-*
где *
заменяется полным выходомuname -r
. Например, в моей системе я мог запустить:
sudo apt-get update && sudo apt-get install linux-headers-3.5.0-36-generic
Я мог бы даже автоматизировать это:
sudo apt-get update && sudo apt-get install linux-headers-`uname -r`
Эти подходы эквивалентны, но, как правило, не лучший путь.
Вместо этого вы обычно захотите установить метапакет, который всегда предоставляет новейшие заголовки ядра в качестве обновления (постоянно в зависимости от того, какой пакет заголовков является самым новым). Это аналогично тому, как ваше скомпилированное работающее ядро устанавливается и обновляется. Для этого посмотрите только часть uname -r
вывода после номера версии. То есть, если uname -r
дает вам 3.5.0-36-generic
, возьмите толькоgeneric
участие.
Затем установите пакет с именем , linux-headers-*
где *
заменяются той частью. Таким образом, в моей системе это было бы так, linux-headers-generic
и один из способов, которым я мог бы установить это, было бы запустить:
sudo apt-get update && sudo apt-get install linux-headers-generic
Для большинства людей это linux-headers-generic
, но в зависимости от того, что Ubuntu релиза вы работаете, какая архитектура и типа устройства вы используете его, и как он установлен и настроен, другие возможности включают в себя generic-pae
, highbank
, omap
, server
, и virtual
.
Связанные пакеты
Заголовочные файлы облегчают разработку и компиляцию / сборку программного обеспечения, которое использует средства, предоставляемые программным обеспечением, чьи заголовочные файлы используются. Наиболее распространенная причина, по которой вам могут понадобиться заголовки ядра, - это то, что вы собираетесь собрать драйвер (модуль ядра) из исходного кода. Некоторым приложениям, таким как VMware и VirtualBox, иногда требуется это, и они сами автоматизируют сборку.
Помимо заголовочных файлов, для сборки программного обеспечения необходим компилятор и другие инструменты. Чтобы максимизировать вероятность того, что у вас есть необходимые инструменты, рекомендуется установитьbuild-essential
пакет.
Никому не нужен настоящий полный исходный код ядра (если, конечно, вы не планируете собирать ядро из исходного кода). Но если вам это нужно, вам придется установить и другой пакет. В Ubuntu пакет для полного исходного кода ядра называется linux-source
. (Это соответствует соглашению Debian / Ubuntu о присвоении имен пакетам, которые предоставляют существенные части ядра Linux, linux
а не kernel
.)
Если у вас все еще есть проблемы
Если вы попытаетесь установить какой-либо из этих пакетов, но у вас возникнут проблемы, и вам понадобится помощь, вам придется включить полный и точный текст из Терминала, включая строки, в которых вы вводили команды. Лучший способ обеспечить это - отредактировать ваш вопрос, но если он слишком длинный, вы можете вставить его где-нибудь, например, http://paste.ubuntu.com и предоставить нам URL-адрес, по которому мы сможем получить к нему доступ.
Если вы прокомментируете этот вопрос, я буду уведомлен. Вы можете отредактировать свой вопрос, а также прокомментировать здесь, чтобы привлечь внимание к информации, которую вы указали в своем вопросе. (Важную информацию лучше хранить в вопросах и ответах.) Удачи!