Streszczenie
Prawdopodobnie chcesz zainstalować pakiet o nazwie linux-headers-generic
.
Jeśli uruchomienie uname -r
daje coś innego niż generic
po numerze wersji, zamień to na generic
in linux-headers-generic
. (Może to być server
lub generic-pae
w niektórych instalacjach niektórych wydań Ubuntu, a od czasu do czasu istnieje kilka innych „smaków” jądra).
Ponieważ najprawdopodobniej potrzebujesz tego, aby zbudować sterownik (który może być zautomatyzowany, być może nie „budujesz go sam”), dobrym pomysłem jest build-essential
również zainstalowanie go, aby mieć zapewnione wszystkie niezbędne narzędzia .
Pełne wyjaśnienie
Według mojej najlepszej wiedzy żaden system operacyjny nie ma pakietu o nazwie Linux-kernel-devel
. Wynika to z dwóch powodów:
- Nazwy pakietów zaczynające się od wielkich liter są niezwykle rzadkie, dla każdego systemu operacyjnego typu uniksowego.
- Systemy operacyjne GNU / Linux zwykle nazywają swoje pakiety związane z jądrem, tak aby nazwy zawierały słowo jądro lub słowo linux , ale nie oba. (W Ubuntu jest to słowo linux .)
Powszechnie jest, że pakiety związane z jądrem w systemach, które używają Red Hat Package Manager ( rpm
) i powiązanych narzędzi, które mają kernel
w nazwie swoich pakietów. Na przykład Mageia ma wiele pakietów, których nazwy zaczynają się kernel
i kończą devel
. Te pakiety prawie zawsze (na Magei i dowolnym systemie operacyjnym, który je posiada) zawierają pliki nagłówkowe potrzebne do zbudowania sterowników ze źródła do użytku z jądrem. Mogą również zapewniać powiązane narzędzia ułatwiające. Te pakiety:
- czy nie podać pełny kod źródłowy jądra. Zapewniają to inne pakiety.
- czy nie zapewnić skompilowane jądro, użytkową. Zapewniają to inne pakiety.
- czy nie zapewnić kompilator lub większość innych narzędzi Celem budowy. Te również są dostarczane przez inne pakiety.
W Ubuntu, jak widać na liście tutaj , pakiety zawierające nagłówki jądra mają nazwy zaczynające się od linux-headers
. Zwykle jest to właściwy pakiet do zainstalowania linux-headers-generic
. Jednak, aby upewnić się, jaki pakiet zainstalować, aby uzyskać nagłówki odpowiadające aktualnie działającemu jądru, uruchom:
uname -r
Otrzymasz wyjście, które wygląda mniej więcej tak:
3.5.0-36-generic
Oznacza to, że będziesz mieć numer wersji (który będzie zawierał .
znaki i zwykle co najmniej jeden -
), po którym następuje a -
, po którym następuje jedno lub więcej słów wskazujących, jakiego rodzaju jądro używasz.
Jeśli tylko chcesz nagłówki dla wersji konkretnego zdarzy ci się być teraz uruchomione, można zainstalować pakiet, którego nazwa jest linux-headers-*
gdzie *
otrzymuje pełnej mocy uname -r
. Na przykład w moim systemie mógłbym uruchomić:
sudo apt-get update && sudo apt-get install linux-headers-3.5.0-36-generic
Mógłbym to nawet zautomatyzować:
sudo apt-get update && sudo apt-get install linux-headers-`uname -r`
Podejścia te są równoważne, ale zazwyczaj nie są najlepszym rozwiązaniem.
Zamiast tego zwykle będziesz chciał zainstalować metapakiet, który zawsze udostępnia najnowsze nagłówki jądra jako aktualizację (nieustannie zależnie od tego, który pakiet nagłówków jest najnowszy). Jest to analogiczne do sposobu, w jaki skompilowane, działające jądro jest instalowane i aktualizowane. Aby to zrobić, spójrz tylko na część uname -r
wyniku po numerze wersji. To znaczy, jeśli uname -r
daje 3.5.0-36-generic
, weź tylko generic
część.
Następnie zainstaluj pakiet o nazwie linux-headers-*
gdzie *
jest zastąpiony przez tę część. Tak więc w moim systemie byłoby to linux-headers-generic
i jednym ze sposobów, w jaki mógłbym zainstalować, byłoby uruchomienie:
sudo apt-get update && sudo apt-get install linux-headers-generic
Dla większości ludzi jest to linux-headers-generic
, ale w zależności od tego, co Ubuntu zwolnić używasz, co architektura i typ urządzenia używasz go, i jak jest zainstalowany i skonfigurowany, inne możliwości obejmują generic-pae
, highbank
, omap
, server
, i virtual
.
Powiązane pakiety
Pliki nagłówkowe ułatwiają tworzenie i kompilowanie / tworzenie oprogramowania, które korzysta z udogodnień udostępnianych przez oprogramowanie, którego pliki nagłówkowe są używane. Najczęstszym powodem, dla którego możesz potrzebować nagłówków jądra, jest zbudowanie sterownika (modułu jądra) z kodu źródłowego. Niektóre aplikacje, takie jak VMware i VirtualBox, czasami będą tego wymagać i same zautomatyzują kompilację.
Oprócz plików nagłówkowych do zbudowania oprogramowania potrzebny jest kompilator i inne narzędzia. Aby zmaksymalizować prawdopodobieństwo posiadania niezbędnych narzędzi, dobrym pomysłem jest również zainstalowanie build-essential
pakietu.
Nieczęsto potrzebny jest pełny kod źródłowy jądra (chyba że planujesz zbudować jądro ze źródła). Ale jeśli tego potrzebujesz, musisz zainstalować również inny pakiet. W Ubuntu nazywa się pakiet pełnego kodu źródłowego jądra linux-source
. (Jest to zgodne z konwencją nazywania pakietów Debian / Ubuntu linux
zamiast dostarczania istotnych części jądra Linuksa kernel
.)
Jeśli nadal masz problemy
Jeśli spróbujesz zainstalować którykolwiek z tych pakietów, ale napotkasz problemy i potrzebujesz pomocy, będziesz musiał dołączyć pełny i dokładny tekst z terminala, w tym wiersze, w których wpisałeś polecenia. Najlepszym sposobem na to jest, edytując swoje pytanie, ale jeśli jest zbyt długie, możesz je wkleić gdzieś na przykład http://paste.ubuntu.com i podać nam adres URL, pod którym możemy uzyskać do niego dostęp.
Jeśli skomentujesz to pytanie, otrzymam powiadomienie. Możesz edytować swoje pytanie, a także komentować tutaj, aby zwrócić uwagę na informacje podane w pytaniu. (Ważne informacje najlepiej przechowywać w pytaniach i odpowiedziach.) Powodzenia!