當你在編譯一個設備驅動模塊時,你需要在系統中安裝內核頭文件。內核頭文件同樣在你編譯與內核直接鏈接的用戶空間程序時需要。當你在這些情況下安裝內核頭文件時,你必須確保內核頭文件精確地與你當前內核版本匹配(比如:3.13.0-24-generic)。
如果你的內核是發行版自帶的內核版本,或者使用默認的包管理器的基礎倉庫升級的(比如:apt-ger、aptitude或者yum),你也可以使用包管理器來安裝內核頭文件。另一方面,如果下載的是kernel源碼並且手動編譯的,你可以使用make命令來安裝匹配的內核頭文件。
現在我們假設你的內核是發行版自帶的,讓我們看下該如何安裝匹配的頭文件。
在 Debian、Ubuntu 或者 Linux Mint 上安裝內核頭文件
假設你沒有手動編譯內核,你可以使用apt-get命令來安裝匹配的內核頭文件。
首先,使用dpkg-query命令檢查是否有可用的內核頭文件。
$ dpkg-query -s linux-headers-$(uname -r)
dpkg-query: package 'linux-headers-3.11.0-26-generic' is not installed and no information is available
接著使用下面的命令安裝匹配的內核頭文件。
$ sudo apt-get install linux-headers-$(uname -r)
驗證頭文件是否成功安裝。
$ dpkg-query -s linux-headers-$(uname -r)
Package: linux-headers-3.11.0-26-generic
Status: install ok installed
Debian、Ubuntu、Linux Mint默認頭文件在/usr/src下。
在 Fedora、CentOS 或者 RHEL 上安裝內核頭文件
假設你沒有手動編譯內核,你可以使用yum命令來安裝匹配的內核頭文件。
首先,用下面的命令檢查系統是否已經安裝了頭文件。如果下面的命令沒有任何輸出,這就意味著還沒有頭文件。
$ rpm -qa | grep kernel-headers-$(uname -r)
接著用yum命令安裝頭文件。這個命令會自動找出合適的頭文件並安裝。
$ sudo yum install kernel-headers
驗證包安裝的狀態。
$ rpm -qa | grep kernel-headers-$(uname -r)
『貳』 linux系統的組成結構
Linux系統一般有4個主要部分:內核、shell、文件系統和應用程序。內核、shell和文件系統一起形成了基本的操作系統結構,它們使得用戶可以運行程序、管理文件並使用系統。
1、內核
內核是操作系統的核心,具有很多最基本功能,它負責管理系統的進程、內存、設備驅動程序、文件和網路系統,決定著系統的性能和穩定性。
Linux內核由如下幾部分組成:內存管理、進程管理、設備驅動程序、文件系統和網路管理等。
2、shell
shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種介面。它接收用戶輸入的命令並把它送入內核去執行,是一個命令解釋器。另外,shell編程語言具有普通編程語言的很多特點,用這種編程語言編寫的shell程序與其他應用程序具有同樣的效果。
目前主要有下列版本的shell:
①Bourne shell:是貝爾實驗室開發的。
②BASH:是GNU的Bourne Again
shell,是GNU操作系統上默認的shell,大部分Linux的發行套件使用的都是這種shell。
③Korn shell:是對Bourne shell的發展,在大部分內容上與Bourne shell兼容。
④C shell:是SUN公司shell的BSD版本。
3、文件系統
文件系統是文件存放在磁碟等存儲設備上的組織方法。Linux系統能支持多種目前流行的文件系統,如EXT2、EXT3、FAT、FAT32、VFAT和ISO9660。
4、應用程序
標準的Linux系統一般都有一套稱為應用程序的程序集,它包括文本編輯器、編程語言、X Window、辦公套件、Internet工具和資料庫等。
『叄』 linux內核編譯的幾點疑惑
(1)編譯內核於升級內核沒有直接關聯。如果編譯的內核的版本比現在系統使用的版本新,那麼使用編譯後的內核可以看成是內核升級。但是有時候是因為需要而編譯內核,比如某些模塊需要重新編譯,打開某些原來內核沒打開的選項,這時候可以是同版本內核重新編譯,這就不能說是升級內核。
(2)新內核編譯好後,還需要安裝。也就是make install(把bzimage移動到boot,重命名為vmlinuz) ,make moles install(把模塊全部放到/lib/moles/(內核名)文件夾內);然後depmod,在/lib/moles/(內核名)建好新的***.dep文件,這樣啟動時系統就能通過讀取***.dep文件信息來載入模塊。還要在boot下新建一個於內核名一樣的.img文件,如vmlinuz,那麼就是vmlinuz.img,至於系統使用哪個內核,那是在grub.cfg裡面寫的配置文件決定的。指定哪個就從哪個啟動,寫兩個entry就可以選擇啟動到哪一個。老內核當然還可以繼續使用。
(3)新內核主要是一些新的特性,驅動更改什麼的,我不是很清楚,比如2.6.34以上的內核就支持通過echo OFF>/sys/kernel/debug/vgaswitchroo/switch關閉某個顯卡,也就是雙顯卡切換支持,又比如2.6.38中加入了所謂的autogroup在某些情況下提升桌面性能的特性,還有一些對系統某些情況的處理方式的變化等。但是從用戶層來說一般感覺不到明顯變化。對於程序什麼的使用不影響(絕大多數)。
『肆』 linux操作系統的三個主要部分及其功能
Linux系統一般有四個主要部分:內核、Shell、文件系統和應用程序。
① Linux內核:內核是系統的「心臟」,是運行程序和管理磁碟、列印機等硬體設備的核心程序。
② Linux Shell:Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種介面。它接受用戶輸入的命令,並對其進行解釋,最後送入內核去執行,實際上就是一個命令解釋器。人們也可以使用Shell編程語言編寫Shell程序,這些Shell程序與用其他程序設計語言編寫的應用程序具有相同的效果。
③ Linux 文件系統:文件系統是文件存放在磁碟等存儲設備上的組織方法。Linux的文件系統呈樹型結構,同時它也能支持目前流行的文件系統,如:EXT2、EXT3、FAT、VFAT、NFS、SMB等。
④ Linux 應用程序:同Windows操作系統一樣,標準的Linux也提供了一套滿足人們上網、辦公等需求的程序集即應用程序,包括文本編輯器、X Windows、辦公套件、Internet工具、資料庫等。
Linux內核、Shell和文件系統一起形成了基本的操作系統結構,可使用戶運行程序,管理文件並使用系統。
所以你問的三個主要部分就是Linux內核、Shell和文件系統了。
『伍』 linux內核源碼詳解
Linux的內核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是內核源代碼。
對於源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的了解。對於linux內核源代碼來講,我認為,基本要求是:1、操作系統的基本知識; 2、對C語言比較熟悉,最好要有匯編語言的知識和GNU C對標准C的擴展的知識的了解。
另外在閱讀之前,還應該知道Linux內核源代碼的整體分布情況。我們知道現代的操作系統一般由進程管理、內存管理、文件系統、驅動程序、網路等組成。看一下Linux內核源代碼就可看出,各個目錄大致對應了這些方面。Linux內核源代碼的組成如下(假設相對於linux目錄):
arch 這個子目錄包含了此核心源代碼所支持的硬體體系結構相關的核心代碼。如對於X86平台就是i386。
include 這個目錄包括了核心的大多數include文件。另外對於每種支持的體系結構分別有一個子目錄。
init 此目錄包含核心啟動代碼。
mm 此目錄包含了所有的內存管理代碼。與具體硬體體系結構相關的內存管理代碼位於arch/-/mm目錄下,如對應於X86的就是arch/i386/mm/fault.c 。
drivers 系統中所有的設備驅動都位於此目錄中。它又進一步劃分成幾類設備驅動,每一種也有對應的子目錄,如音效卡的驅動對應於drivers/sound。
ipc 此目錄包含了核心的進程間通訊代碼。
moles 此目錄包含已建好可動態載入的模塊。
fs Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext2文件系統對應的就是ext2子目錄。
kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/-/kernel目錄下。
net 核心的網路部分代碼。裡面的每個子目錄對應於網路的一個方面。
lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/-/lib/目錄下。
scripts 此目錄包含用於配置核心的腳本文件。
Documentation 此目錄是一些文檔,起參考作用。
『陸』 跪求 kernel是個什麼文件,怎麼出現的能刪除嗎
kernel文件是與系統相關的文件,LINUX開發中常見到這個命名的文件。但是在Windows系統中不應當出現在用戶的文件夾里,只可能在系統文件夾內。所以,要麼是軟體BUG給你新增了這文件,要麼是病毒在作怪了。