1. linux內核的文件都在哪兒
linux內核默認存放到/boot下,而/usr/src中可查看內核的信息。
幾種linux內核文件的區別:
1、vmlinux 編譯出來的最原始的內核文件,未壓縮。
2、zImage 是vmlinux經過gzip壓縮後的文件。
3、bzImage bz表示「big zImage」,不是用bzip2壓縮的。兩者的不同之處在於,zImage解壓縮內核到低端內存(第一個640K),bzImage解壓縮內核到高端內存(1M以上)。如果內核比較小,那麼採用zImage或bzImage都行,如果比較大應該用bzImage。
4、uImage U-boot專用的映像文件,它是在zImage之前加上一個長度為0x40的tag(64個位元組,說明這個映像文件的類型、載入位置、生成時間、大小等信息)。其實就是一個自動跟手動的區別,有了uImage頭部的描述,u-boot就知道對應Image的信息,如果沒有頭部則需要自己手動去搞那些參數。換句話說,如果直接從uImage的0x40位置開始執行,zImage和uImage沒有任何區別。
5、vmlinuz 是bzImage/zImage文件的拷貝或指向bzImage/zImage的鏈接。
6、initrd 是「initial ramdisk」的簡寫。一般被用來臨時的引導硬體到實際內核vmlinuz能夠接管並繼續。
2. linux 下的u-boot 和 kernel裡面的 mtd 目錄有什麼用
「MTD(memory
technology
device內存技術設備)是用於訪問memory設備(ROM、flash)的Linux的子系統。MTD的主要目的是為了使新的memory設備的驅動更加簡單,為此它在硬體和上層之間提供了一個抽象的介面。MTD的所有源代碼在/drivers/mtd子目錄下。CFI介面的MTD設備分為四層(從設備節點直到底層硬體驅動),這四層從上到下依次是:設備節點、MTD設備層、MTD原始設備層和硬體驅動層。」
--摘自網路
很明顯,就是用來存數據的
MTD
對應的驅動相關內容。
現在嵌入式設備,內置
NAND
存儲器的操作一般都是用
MTD
模塊實現。
3. 如何確定Linux內核源代碼目錄即,KBUILD的路徑
方法一:
確定內核源代碼目錄通常==文件系統中內核驅動模塊的build路徑
即/lib/moles/2.6.25-14.fc9.i686/build,這個build通常為鏈接文件,連接到
/usr/src/kernels/2.6.25-14.fc9.i686
此方法較准確,通常可以寫如下腳本實現:
# KBUILD is the path to the Linux kernel build tree. It is usually the
# same as the kernel source tree, except when the kernel was compiled in
# a separate directory.
KBUILD ?= $(shell readlink -f /lib/moles/$(KVERS)/build)
方法二:
自己下載內核源文件包,自己指定內核的編譯目錄!
不推薦這種做法,還是按照各大發行版的做法比較好!這樣不至於在編譯下載的某個設備驅動程序時
4. 深入理解LINUX內核的目錄
前言
第一章緒論
Linux與其他類Unix內核的比較
硬體的依賴性
Linux版本
操作系統基本概念
Unix文件系統概述
Unix內核概述
第二章內存定址
內存地址
硬體中的分段
Linux中的分段
硬體中的分頁
Linux中的分頁
第三章進程
進程、輕量級進程和線程
進程描述符
進程切換
創建進程
撤消進程
第四章中斷和異常
中斷信號的作用
中斷和異常
中斷和異常處理程序的嵌套執行
初始化中斷描述符表
異常處理
中斷處理
軟中斷及tasklet
工作隊列
從中斷和異常返回
第五章內核同步
內核如何為不同的請求提供服務
同步原語
對內核數據結構的同步訪問
避免競爭條件的實例
第六章定時測量
時鍾和定時器電路
Linux計時體系結構
更新時間和日期
更新系統統計數
軟定時器和延遲函數
與定時測量相關的系統調用
第七章進程調度
調度策略
調度演算法
調度程序所使用的數據結構
調度程序所使用的函數
多處理器系統中運行隊列的平衡
與調度相關的系統調用
第八章內存管理
頁框管理
內存區管理
非連續內存區管理
第九章進程地址空間
進程的地址空間
內存描述符
線性區
缺頁異常處理程序
創建和刪除進程的地址空間
堆的管理
第十章系統調用
POSIXAPI和系統調用
系統調用處理程序及服務常式
進入和退出系統調用
參數傳遞
內核封裝常式
第十一章信號
信號的作用
產生信號
傳遞信號
與信號處理相關的系統調用
第十二章虛擬文件系統
虛擬文件系統(VFS)的作用
VFS的數據結構
文件系統類型
文件系統處理
路徑名查找
VFS系統調用的實現
文件加鎖
第十三章I/O體系結構和設備驅動程序
I/O體系結構
設備驅動程序模型
設備文件
設備驅動程序
字元設備驅動程序
第十四章塊設備驅動程序
塊設備的處理
通用塊層
I/O調度程序
塊設備驅動程序
打開塊設備文件
第十五章頁高速緩存
頁高速緩存
把塊存放在頁高速緩存中
把臟頁寫入磁碟
sync()、fsync()和fdatasync()系統調用
第十六章訪問文件
讀寫文件
內存映射
直接I/O傳送
非同步I/O
第十七章回收頁框
頁框回收演算法
反向映射
PFRA實現
交換
第十八章Ext2和Ext3文件系統
Ext2的一般特徵
Ext2磁碟數據結構
Ext2的內存數據結構
創建Ext2文件系統
Ext2的方法
管理Ext2磁碟空間
Ext3文件系統
第十九章進程通信
管道
FIFO
SystemVIPC
POSIX消息隊列
第二十章程序的執行
可執行文件
可執行格式
執行域
exec函數
附錄一系統啟動
附錄二模塊
參考文獻
源代碼索引
……
5. linux 下的內核頭文件放在哪裡
linux下的內核頭文件放在/usr/include/linux/和/usr/include/sys/
linux目錄樹:
scripts目錄
該目錄中不包含任何核心代碼,該目錄下存放了用來配置內核的腳本和應用程序源碼。
lib目錄
該目錄主要包含兩部分內容:gnuzip解壓縮演算法,用於在系統啟動過程中將壓縮的內核鏡像解壓縮;剩餘的文件用於實現一個C庫的子集,主要包括字元串和內存操作等相關函數。
mm目錄
該目錄包含了體系結構無關的內存管理代碼,包括通用的分頁模型的框架、夥伴演算法的實現和對象緩沖器slab的實現代碼。
include目錄
這個目錄包含了Linux源代碼目錄樹中絕大部分頭文件,每個體系架構都在該目錄下對應一個子目錄,該子目錄中包含了給定體系結構所必需的宏定義和內聯函數。
init目錄
該目錄中存放的是系統核心初始化代碼,內核初始化入口函數start_kernel就是在該目錄中的文件main.c內實現的。
kernel目錄
該目錄中存放的是Linux內核的最核心的代碼,用於實現系統的核心模塊,這些模塊包括:進程管理、進程調度器、中斷處理、系統時鍾管理、同步機制等。
arch目錄
該目錄中的每個子目錄中都與某種體系結構相對應,用於存放體系結構相關代碼,向平台無關的系統核心模塊提供所需的功能介面。每個體系結構對應的子目錄下通常至少包含以下幾個子目錄:kernel子目錄、lib子目錄、mm子目錄、boot子目錄。
系統次核心組件包括:
block目錄:用於實現塊設備的基本框架和塊設備的I/O調度演算法。
usr目錄:該目錄中的代碼為內核尚未完全啟動時執行用戶空間代碼提供了支持
ipc目錄:該目錄中的文件用於實現System V的進程間通信模塊。
driver目錄:用於存放各類設備的驅動程序。
sound目錄:存放了聲音系統架構,如Open Sound System(OSS)、Advanced Linux Sound Architecture(ALSA)的相關代碼和具體音效卡的設備驅動程序。
security目錄:存放了Security-Enhanced Linux(SELinux)安全框架的實現代碼
crypto目錄:該目錄中存放了相關的加密演算法的代碼。
Documentation目錄:存放了與內核相關的文檔。
net和fs目錄:包含linux內核支持的眾多網路協議和文件系統。
6. 怎樣進入linux內核文件目錄
1、先是輸入賬號密碼進入centos7。
7. Linux Kernel是什麼
Linux kernel 譯為linux 內核,其基礎為linux平台,linux為C語言編寫的內核,基於此內核又衍生出了具體的Red hat linux 、open suse linux等具體的操作系統,一套基於Linux內核的完整操作系統叫作Linux操作系統,或是GNU/Linux。
對於linux kernel,先看它的目錄結構,這里只挑幾個重要的說明。
arch 包括所有和體系結構相關的核心代碼。從裡面我們能看到arm、alpha、i386、mips、ia64這些文件夾,每種處理器架構都有不一樣的硬體模塊,這里就是要針對不同的架構進行不同的初始化。
init包含內核的初始化代碼(不是系統的引導代碼),其中有一個main.c文件,用於執行內核所有的初始化工作(包括初始化內存、初始化所有硬體、創建第一個任務task0,設置中斷允許標志位),然後移到用戶模式調用fork()函數創建新進程,並在控制台運行shell。
kernel 包含內核管理的核心代碼,瞅這名就知道,這貨是個重量級目錄,所有的處理任務的程序,包括fork、exit、調度程序(sched.c)以及一些系統調用(sys.c)、信號處理(signal.c)、時間函數(time.c),還有中斷異常處理、電源管理等等一系列調用關系錯綜復雜的函數。
mm 包含所有的內存管理代碼。其中包括實現進程的邏輯地址到實際物理地址的映射,實現分頁、分段機制,實現內存頁面異常中斷處理程序等。
drivers包含系統中所有的設備驅動程序,比如什麼cdrom啊bluetooth啊pci、i2c這些。
ipc 包含核心進程間的通信代碼。
fs 存放Linux支持的文件系統代碼,裡面有ext2、ext3、ext4、fat、ntfs等等一堆目錄。
net 內核的網路部分代碼,其每個子目錄對應於網路的一個方面,比如ieee80211、ipv4、ipv6這些目錄。
lib 包含核心的庫代碼,什麼strcpy、sprintf、sort這些函數都在裡面。更多Linux知識可參考《Linux就該這么學》。
8. linux內核主目錄kernel是/home嗎
不是的。
/home:是用戶家目錄。
kernel是內核,內核文件在/boot目錄下,一般以vmlinuz開頭,vm表示內核支持虛擬內存,z表示image zip是壓縮的內核 ,本身裡面帶有gzip的代碼,運行的時候會自行解壓的。
9. 一個linux系統裡面能有多個kernel嗎如果可以應該怎麼添加呢
能有多個 kernel 但這是啟動系統的東西,只能用一個。
內核在 /boot 裡面,vmlinuz 那些個就是,其他的文件都是輔助用的。其中還有用的是 initrd ,這東西是隨內核一起被引導器——現在基本就是 GRUB ——一起讀取到內存中,內核啟動後會讀取這里的文件,並且把它作為臨時的根文件系統,之後再過渡啟動到硬碟。不過 initrd 不是必須存在的,他因為在啟動內核時一同讀取到內存,所以他的硬體限制很少,可以作為提供驅動的數據文件,也可以實現一些掛載你的硬碟跟分區前的檢測工作。
/lib/moles/ 裡面都是按內核版本號分別保存的其他內核需要和提供的文件,主要是內核模塊。以及針對這個內核的開發需要的相應文件(不光是頭文件,雖然開發主要是需要 C Header)。
模塊目錄具體結構請看一些專業的介紹資料吧。
題外:/usr/src 裡面一般存放內核的源代碼,如果是自己編譯的內核,或者某些特殊情況的內核。這里也會放一些東西。/lib/moles 裡面的內核其他數據目錄裡面會有一些內容連接到這里的。這個規劃具體看發行版的設計。不過一般大家的習慣是這里必然有內核源代碼,所以很多驅動程序和內核有關的一些應用程序,都會直接來這里找開發數據。所以現在大部分系統偏向於這里保存一些內容。