Резюме
Ви, ймовірно, хочете встановити пакет з назвою linux-headers-generic
.
Якщо хід uname -r
дає вам що - то інше , ніж generic
після того , як номер версії, замінити , що для generic
в linux-headers-generic
. (Це може бути server
або generic-pae
в деяких установках деяких версій Ubuntu, і є кілька інших випадкових "ароматів ядра".)
Оскільки вам, швидше за все, це потрібно для того, щоб ви могли створити драйвер (який може бути автоматизований, ви, можливо, не "будуєте його самостійно"), це гарна ідея, щоб встановити build-essential
його, щоб ви, мабуть, мали всі необхідні інструменти .
Повне пояснення
Наскільки мені відомо, жодна операційна система не має пакета, який називається Linux-kernel-devel
. Це з двох причин:
- Назви пакетів, що починаються з великих літер, є надзвичайно рідкісними для будь-яких ОС, схожих на Unix.
- Операційні системи GNU / Linux зазвичай називають свої пакети, пов’язані з ядром, так що імена містять слово ядро або слово 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-адресу, де ми можемо отримати доступ до нього.
Якщо ви коментуєте це питання, я отримаю сповіщення. Ви можете редагувати своє запитання, а також коментувати тут, щоб звернути увагу на інформацію, яку ви вказали у своєму запитанні. (Важливу інформацію найкраще зберігати у запитаннях та відповідях.) Удачі!