Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 核心架構概覽:用戶態/核心態/硬體層分工、代碼樹目錄結構與 Kconfig/Makefile 建置機制

編輯:Linux 教學

前言

理解 Linux 核心架構是驅動開發與系統移植的基石。本文以「飯店服務」類比說明驅動角色,系統介紹三層架構分工、核心原始碼目錄功能劃分、補丁製作與應用、五類 Makefile 階層關係,以及 make menuconfig 生成 .config 的完整流程。

一、三層架構類比

層級對應組件飯店類比ARM 模式
應用層POSIX API、glibc、GUI 庫客人透過服務台(API)提出需求User / System 模式
核心層系統呼叫、VFS、記憶體管理、排程器、驅動服務台派遣服務生(驅動)執行具體工作SVC (Supervisor) 模式
硬體層CPU、記憶體、外設控制器廚房、客房、設施(實體資源)-

Linux 架構圖

飯店類比圖

二、核心原始碼目錄速查

目錄核心功能
arch/CPU 架構相關程式碼(arm、x86、riscv…)
block/區塊裝置 I/O 排程器
drivers/所有裝置驅動
fs/檔案系統實作
include/核心通用標頭檔
init/核心啟動流程(start_kernel)
ipc/進程間通訊
kernel/核心核心:排程、信號、定時器
mm/記憶體管理
net/網路協議堆疊
sound/音訊子系統

驅動開發最常查閱:drivers/、include/linux/、arch/arm/、init/。

三、核心補丁操作


# 1. 產生補丁(舊→新)
diff -Naur linux-5.10/ linux-5.10.1/ > linux-5.10.1.patch

# 2. 應用補丁(在舊原始碼根目錄下)
cd linux-5.10
patch -p1 < ../linux-5.10.1.patch

# 3. 還原補丁
patch -R -p1 < ../linux-5.10.1.patch

注意:-p1 忽略第一層目錄前綴;補丁必須對應相同基準版本。

四、五類 Makefile 階層關係

類型位置職責
總 Makefile核心根目錄控制整體建置流程、架構選擇、子目錄遞迴
架構 Makefilearch/$(ARCH)/Makefile定義架構專屬編譯選項、子目錄
Kbuild 共用規則scripts/Makefile.*編譯/連結/模組打包通用規則
子目錄 Makefile (Kbuild)各功能目錄下宣告 obj-y/m、ccflags-y 等
.config根目錄編譯時期配置變數來源

五、建置流程:make menuconfig → make

  1. make menuconfig:
    • 讀取 arch/$(ARCH)/Kconfig 為入口,遞迴 source 子目錄 Kconfig。
    • 呈現圖形選單,使用者勾選 [*] (內建)、[M] (模組)、[] (不編譯)。
    • 儲存產生 .config 與 include/config/auto.conf(去註釋版)。
  2. make:
    • 總 Makefile 依 .config 變數決定編譯哪些 obj-y、obj-m。
    • 遞迴進入子目錄執行該目錄 Makefile(Kbuild)。
    • 產生 .o、.ko,最後連結生成 vmlinux → 壓縮為 bzImage。

六、Kconfig 語法要點


config MY_FEATURE
    bool "Enable My Feature"
    depends on HAS_FOO
    select BAR
    default n
    help
      Detailed description...
  • depends on:相依符號為 y 才顯示/可選。
  • select:選擇本項自動強制選擇目標符號。
  • default:未使用者干預時的預設值。

七、常用配置指令

指令用途
make defconfig架構預設配置
make menuconfig文字模式圖形選單
make xconfigQt 圖形介面
make gconfigGTK 圖形介面
make olddefconfig升級核心時保留舊配置、新增項用預設
make savedefconfig輸出最小化 defconfig 供版控
Copyright © Windows教程網 All Rights Reserved