4.0內核,Linux 源碼目錄結構梳理

對於嵌入式開發者必須關注drivers目錄

 

以下是博客網友提供:

include/							----> 內核頭文件, 需要提供給外部模塊(例如用戶空間代碼)使用;
kernel/								----> Linux內核的核心代碼, 包含進程調度子系統以及進程調度相關的模塊;
mm/									----> 內核管理子系統;
fs/									----> VFS子系統;
net/								----> 不包括網絡設備驅動的網絡子系統;
ipc/								----> IPC(進程間通信)子系統;
 
arch//								----> 體系結構相關的代碼, eg. arm x86 ...
	arch/mach/						----> 具體的machine/board相關的代碼;
	arch/include/asm				----> 體系結構相關的頭文件;
	arhc/boot/dts					----> 設備樹(Device Tree)文件;
 
init/								----> Linux系統啓動初始化相關的代碼;
block/								----> 提供塊設備的層次;
sound/								----> 音頻相關的驅動和子系統, 可以看做"音頻子系統";
drivers/							----> 設備驅動(代碼量佔比最大的部分);
 
lib/								----> 實現需要在內核中使用的庫函數, eg. CRC, FIFO, LIST, MD5 ...
crypto/								----> 加密, 解密相關的庫函數;
security/							----> 提供安全特性(SELinux);
virt/								----> 提供虛擬技術(KVM等)的支持;
usr/								----> 用於生成initramfs的代碼;
firmware/							----> 保存用於驅動第三方設備的固件;
 
samples/							----> 一些示例代碼;
tools/								----> 一些常用工具, eg. 性能剖析, 自測試等;
 
Kconfig, Kbuild, Makefile, scripts/ ----> 用於內核編譯的配置文件, 腳本等;
 
COPYING								----> 版權聲明;
MAINTAINERS							----> 維護者名單;
CREDITS								----> Linux主要的貢獻者名單;
REPORTING-BUGS						----> Bug上報的指南;
 
Documentation, README				----> 幫助, 說明文檔;

 

在4.0內核的裏:

  • ·arch: 包含和硬件體系結構相關的代碼, 每種平臺佔一個相應的目錄, 如i386、 arm、 arm64、powerpc、 mips等。 Linux內核目前已經支持30種左右的體系結構。 在arch目錄下, 存放的是各個平臺以及各個平臺的芯片對Linux內核進程調度、 內存管理、 中斷等的支持, 以及每個具體的SoC和電路板的板級支持代碼。
  • ·block: 塊設備驅動程序I/O調度。
  • ·crypto: 常用加密和散列算法(如AES、 SHA等) , 還有一些壓縮和CRC校驗算法。
  • ·documentation: 內核各部分的通用解釋和註釋。
  • ·drivers: 設備驅動程序, 每個不同的驅動佔用一個子目錄, 如char、 block、 net、 mtd、 i2c等。
  • ·fs: 所支持的各種文件系統, 如EXT、 FAT、 NTFS、 JFFS2等。
  • ·include: 頭文件, 與系統相關的頭文件放置在include/linux子目錄下。
  • ·init: 內核初始化代碼。 著名的start_kernel() 就位於init/main.c文件中。
  • ·ipc: 進程間通信的代碼。
  • ·kernel: 內核最核心的部分, 包括進程調度、 定時器等, 而和平臺相關的一部分代碼放在arch/*/kernel
  • 目錄下。
  • ·lib: 庫文件代碼。
  • ·mm: 內存管理代碼, 和平臺相關的一部分代碼放在arch/*/mm目錄下。
  • ·net: 網絡相關代碼, 實現各種常見的網絡協議。
  • ·scripts: 用於配置內核的腳本文件。
  • ·security: 主要是一個SELinux的模塊。
  • ·sound: ALSA、 OSS音頻設備的驅動核心代碼和常用設備驅動。
  • ·usr: 實現用於打包和壓縮的cpio等。
  • ·include: 內核API級別頭文件。

內核一般要做到drivers與arch的軟件架構分離, 驅動中不包含板級信息, 讓驅動跨平臺。 同時內核的通用部分( 如kernel、 fs、 ipc、 net等) 則與具體的硬件( arch和drivers)。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章