Microsoft PowerPoint - 9-Linux Kernel.ppt

Similar documents
Abstract arm linux tool-chain root NET-Start! 2

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

CC213

untitled

The golden pins of the PCI card can be oxidized after months or years

华恒家庭网关方案

K7VT2_QIG_v3

QLOGIC QLA22OO 使用手冊

ebook140-9

EK-STM32F

Windows 2000 Server for T100

Guide to Install SATA Hard Disks

1

<4D F736F F D20C7B6C8EBCABD6C696E7578BBF9B4A1CAB5D1E92E646F63>

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

QLOGIC QLA22OO 使用手冊

Ác Åé å Serial ATA ( Sil3132) S A T A (1) SATA (2) BIOS SATA (3)* RAID BIOS RAID (4) SATA (5) SATA (a) S A T A ( S A T A R A I D ) (b) (c) Windows XP

ebook71-13

Serial ATA ( nvidia nforce4 Ultra/SLI)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 6 (4) S A T A... 9 (5) S A T A (6) Micro


Serial ATA ( Nvidia nforce430)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 6 (4) S A T A... 9 (5) S A T A (6) Microsoft Win

(Microsoft Word - EELiod_Linux\271\352\305\347\244\342\245U_part2.doc)

Windows 2000 Server for T100

目次 

自由軟體教學平台

f2.eps

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer)

穨TX2使用手冊草稿.PDF

ebook140-8

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1.

系統更新與核心編譯 蕭志榥黃國連 NCHC Opensource Taskforce Feb, 2004

ARM JTAG实时仿真器安装使用指南

NEXT SDT2.51 C:\ARM251 SDT2.51 ARM SDT 2.51 ARM PROJECT MANAGER SDT 2

目 录

static struct file_operations gpio_ctl_fops={ ioctl: gpio_ctl_ioctl, open : gpio_open, release: gpio_release, ; #defineled1_on() (GPBDAT &= ~0x1) #def

第 十 一 期 2015 年 2 月 关 于 车 辆 购 置 税 征 收 管 理 有 关 问 题 的 公 告 ( 点 击 跳 转 至 全 文 ) 国 家 税 务 总 局 公 告 2015 年 第 4 号 关 于 电 池 涂 料 消 费 税 征 收 管 理 有 关 问 题 的 公 告 ( 点 击 跳

DVK530/531扩展板

考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09: 二 技 企 管 一 胡 宗 兒 中 文 輸 入 四 技 企 四 甲 林 姿 瑄 中 文 輸 入 二 技 企 管 一

IT (1) IDE... 2 (2) BIOS IDE RAID... 3 (3) RAID BIOS RAID... 5 (4) R A I D (5) ID E RA ID... 15

投影片 1

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與

(Microsoft Word - \302\315\301n\272\241\276\360\300Y2.doc)

2012年目录文件目录.xls

使用手冊

地 方, 硬 件 工 程 师 在 写 完 了 一 个 4*4 键 盘 驱 动 后, 无 需 也 不 必 管 应 用 程 序 在 获 得 键 值 后 做 哪 些 处 理 及 操 作 也 就 是 说 软 件 工 程 师 需 要 看 到 一 个 没 有 硬 件 的 纯 软 件 世 界, 硬 件 必 须 透

Ác Åé å Serial ATA ( nvidia nforce4 SLI) S A T A (1) SATA (2) BIOS SATA (3)* RAID BIOS RAID (4) SATA (5) SATA (a) S A T A ( S A T A R A I D ) (b) (c)

Dell EMC Data Domain DDOS 5.5 Data Domain Data Domain Data Domain : Data Domain Boost (DDBoost) Dell EMC DDBoost Data Domain DDBoost Source De-Dup Bac

Microsoft Word - PS2_linux_guide_cn.doc

PowerPoint Presentation

BYOD IP+Optical (IP NGN) API 4. End-to-End (Service Aware) 5. IP NGN (IP Next Generation Network) ( ) Prime Carrier Management Access Edge Co

untitled

P4V88+_BIOS_CN.p65

Cygwin Cygwin windows Linux Cygwin.dll Windows Linux API Linux Windows Linux 2

Microsoft Word - 正文.doc

GoFlex Home UG Book.book

例 如, 一 个 含 有 2000 个 记 录 的 文 件, 每 个 磁 盘 块 可 容 纳 250 个 记 录, 则 该 文 件 包 含 8 个 磁 盘 块 然 后 对 该 文 件 作 二 路 归 并 的 外 排 序, 每 次 往 内 存 读 入 两 个 磁 盘 块, 排 序 后 再 写 回 磁

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

untitled

Cadence SPB 15.2 VOICE Cadence SPB 15.2 PC Cadence 3 (1) CD1 1of 2 (2) CD2 2of 2 (3) CD3 Concept HDL 1of 1

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

软件测试(TA07)第一学期考试

谚语阐因

Chapter 2

audiogram3 Owners Manual

LSI U320 SCSI卡用户手册.doc

LSC操作说明

P4VM800_BIOS_CN.p65

untitled

Measurement Studio Expands Your Test and Measurement Programming Power

Oracle Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE "P

AL-M200 Series

投影片 1

ebook71-6

V A. 1 Hyper-V R2 V C. A. Hyper-V B. Microsoft SCOM 20 V C. MAP D. Microsoft SCVMM 2008 V B. V D. 2. IT IT 2

<4D F736F F D20D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E5A3A92E646F63>

菩提道次第廣論

路 上 沒 說 話, 車 子 被 爸 離 去 後 開 走 了, 沒 什 麼 變, 除 了 一 股 淡 淡 的 香 味, 我 不 太 習 慣, 像 空 氣 中 的 粉 塵, 左 飄 右 飄, 光 中 飛 舞 我 沒 提, 看 車 窗 外, 外 面 不 太 有 趣, 我 只 是 沒 事 幹, 我 們 本

繁 華 國 小 101 學 年 母 親 節 感 恩 惜 福 - 跳 蚤 市 場 暨 科 學 闖 關 遊 戲 親 子 活 動 實 施 計 畫 一 依 據 : 本 校 101 學 年 度 校 務 計 畫 及 行 事 曆 二 目 的 : 1. 培 養 學 生 感 恩 惜 物 知 福 惜 福 的 節 儉 觀

台 中 市 北 屯 區 東 山 里 橫 坑 9 林 志 明 巷 89-5 菜 豆 菜 大 漿 果 菜 豆 菜 大 漿 果 小 漿 果 核 果 柑 桔 無 陳 錦 生 新 竹 市 香 山 區


育儿小故事(四)

PCMCIA Compact Flash GPRS GPS PCMCIA Personal Computer Memory Card International Association CF Compact Flash PCMCIA CF PCMCIA/CF

TCA Linux 相容性認證測試流程步驟

S 可编程控制器

epub

Ác Åé å Serial ATA ( nvidia nforce4-4x; nvidia nforce3 250/Ultra; nvidia nforce2 MCP RAID) S A T A (1) SATA (2) BIOS SATA (3)* RAID BIOS RAID (4) SATA

华恒家庭网关方案

提纲 1 2 OS Examples for 3

HighPoint产品的FAQ手册

1 CPU

自动化接口

ebook70-5

(Microsoft PowerPoint - 03_ Android.ppt [\260\337\305\252])

AutoCAD 用戶如何使用 ArchiCAD

Bus Hound 5

Copyright 2007 Hewlett-Packard Development Company, L.P. Microsoft 和 Windows 是 Microsoft Corporation 在 美 国 的 注 册 商 标 Bluetooth 是 其 所 有 者 拥 有 的 商 标,Hew

行业

RAID RAID 0 RAID 1 RAID 5 RAID * ( -1)* ( /2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( )

Transcription:

Building Linux Kernel

Outline Linux 核心程式碼的目錄結構及各目錄的相關內容 Linux 核心各設定選項內容和作用 Linux 核心設定檔 config.in 的作用 Linux 核心的編譯過程 將新增核心程式加入到 Linux 核心結構中的方法

核心程式碼目錄介紹 (1) arch:arch 子目錄包括所有與體系結構相關的核心程式 arch 的每一個子目錄都代表一個 Linux 所支援的體系結構 例如 :arm 目錄下就是 arm 體系架構的處理器目錄, 包含我們使用的 PXA 處理器 include:include 子目錄包括編譯核心所需要的標頭檔 與 ARM 相關的標頭檔在 include/asm-arm 子目錄下 init: 這個目錄包含核心的初始化程式, 但不是系統的引導程式, 其中所包含 main.c 和 Version.c 檔是研究 Linux 核心的起點 mm: 該目錄包含所有獨立於 CPU 體系結構的記憶體管理程式, 如頁式儲存管理記憶體的分配和釋放等 與 ARM 體系結構相關的程式在 arch/arm/mm 中 Kernel: 這裡包括主要的核心程式, 此目錄下的檔實現大多數 Linux 的核心函數, 其中最重要的檔案是 sched.c 與 Xscale 體系結構相關的程式在 arch/arm-pxa/kernel 目錄中

核心程式碼目錄介紹 (2) Drives: 此目錄存放系統所有的設備驅動程式, 每種驅動程式各占一個子目錄 /block: 區塊設備驅動程式 區塊設備包括 IDE 和 scsi 設備 /char: 字元設備驅動程式 如串列埠 滑鼠等 /cdrom: 包含 Linux 所有的 CD-ROM 程式 /pci:pci 卡驅動程式程式, 包含 PCI 子系統映射和初始化程式等 /scsi: 包含所有的 SCSI 程式以及 Linux 所支援的所有的 SCSI 設備驅動程式程式 /net: 網路設備驅動程式 /sound: 音效卡設備驅動程式 lib 目錄放置核心的函式庫程式 ; net 目錄包含核心與網路的相關的程式 ; ipc 目錄包含核心行程通訊的程式 ; fs 目錄是所有的檔案系統程式和各種類型的檔案操作程式, 它的每一個子目錄支援一個檔案系統, 如 JFFS2; scripts 目錄包含用於設定核心的腳本檔案等 每個目錄下一般都有 depend 檔和一個 makefile 檔, 他們是編譯時使用的輔助檔, 仔細閱讀這兩個檔案對弄清各個檔案之間的相互依託關係很有幫助

核心的設定的基本結構 Makefile: 分佈在 Linux 核心程式中的 Makefile, 定義 Linux 核心的編譯規則 ; 頂層 Makefile 是整個核心設定 編譯的整體控制檔案 ; 設定檔 (config.in): 給使用者提供設定選擇的功能 ;.config: 核心設定檔, 包括由使用者選擇的設定選項, 用來存放核心設定後的結果 ; 設定工具 : 包括對設定腳本中使用的設定命令進行解釋的設定命令解釋器和設定使用者介面 ( 基於字元介面 :make config; 基於 Ncurses 圖形介面 :make menuconfig; 基於 xwindows 圖形介面 :make xconfig) Rules.make: 規則檔, 被所有的 Makefile 使用

編譯規則 Makefile 利用 make menuconfig( 或 make config make xconfig) 對 linux 核心進行設定後, 系統將產生設定檔 (.config) 在編譯時, 頂層 Makefile 將讀取.config 中的設定選擇 頂層 Makefile 完成產生核心檔 (vmlinux ) 和核心模組 (module) 兩個任務, 為了達到此目的, 頂層 Makefile 遞迴進入到核心的各個子目錄中, 分別調用位於這些子目錄中的 Makefile, 然後進行編譯 至於到底進入哪些子目錄, 取決於核心的設定 頂層 Makefile 中的 include arch/$(arch)/makefile 指定特定 CPU 體系結構下的 Makefile, 這個 Makefile 包含了特定平台相關的資訊

設定檔 config.in Linux 所有選項設定都需要在 config.in 檔中用設定語言來編寫設定腳本, 然後頂層 Makefile 調用 scripts/configure, 按照 arch/arm/config.in 來進行設定 命令執行完後產生儲存有設定資訊的設定檔 (.config) 下一次再做 make config 時將產生新的.config 檔案, 原.config 被改名為.config.old

編譯核心的常用命令 Make config: 核心設定, 調用./scripts/Configure 按照 arch/i386/config.in 來進行設定 命令執行後產生檔.config, 其中儲存著設定資訊 下次在做 make config 時將產生新的.config 檔案, 原檔案 config 更名為 config.old make dep: 尋找依存關係 產生兩個檔. depend 和.hdepend, 其中.hdepend 表示每個.h 檔都包含其他哪些嵌入檔 而.depend 檔有多個, 在每個會產生目標檔 (.o) 檔的目錄下均有, 它表示每個目標檔都依賴於哪些嵌入檔 (.h) make clean: 清除以前建構核心所產生的所有的目標檔, 模組檔, 核心以及一些暫存檔案等, 不產生任何檔 make rmproper: 刪除所有以前在建構核心過程所產生的所有檔, 及除了做 make clean 外, 還要刪除.config,.depend 等檔, 把核心程式恢復到最原始的狀態 下次建構核心時必須進行重新設定 ; make, make zimage, make bzimage: make: 建構核心 通過各目錄的 Makefile 檔進行, 會在各個目錄下產生一大堆目標檔, 如核心程式沒有錯誤, 將產生檔 vmlinux, 這就是所建構的核心 並產生映射檔 system.map 通過各目錄的 makefile 檔進行.version 檔中的數加 1, 表示版本號的變化 make zimage: 在 make 的基礎上產生壓縮的核心映射檔./arch/$(ARCH)/boot/zImage 以及./arch/$(ARCH)/boot/compressed 目錄下產生一些暫存檔案 make bzimage: 在 make 的基礎上產生壓縮比例更大的的核心映射檔./arch/$(ARCH)/boot/bzImage 以及./arch/$(ARCH)/boot/compressed 目錄下產生一些暫存檔案 在核心太大時進行

核心編譯過程 make mrproper: 刪除所有以前在構核過程所產生的所有檔 make menuconfig: 核心設定 make dep: 尋找依存關係 make zimage: 產生壓縮的核心映射檔 核心編譯完畢之後, 產生 zimage 核心映像檔儲存在程式碼的 arch/arm/boot/ 目錄下

Main Menu

Code maturity level options

System Type

General setup

Memory Technology Devices (MTD)

RAM/ROM/Flash chip drivers

Mapping drivers for chip access

Block devices

Networking options

Network device support

Character devices

File systems

Frame-buffer support

新增驅動程式到 linux 核心 假設將 xsbase 驅動儲存到 linux 程式碼的 drivers/xsbase/ 目錄下 : $ cd drivers/xsbase $ tree. -- Config.in -- Makefile -- test.c `-- test_client.c

編輯設定檔 # # XSBASE driver configuration # mainmenu_option next_comment comment XSBASE Driver' bool 'XSBASE support' CONFIG_XSBASE if [ "$CONFIG_XSBASE" = "y" ]; then tristate 'TEST user-space interface' CONFIG_TEST_USER bool 'TEST CPU ' CONFIG_TEST_CPU fi endmenu

Sound

New Driver

編輯修改 CPU 體系目錄下的設定檔 在 arch/arm/config.in 檔進行修改, 在檔案最後加入 :source drivers/xsbase/config.in

Makefile 的修改與編輯 編輯 xsbase 目錄下的設定檔 Makefile 檔 # drivers/xsbase/makefile # # Makefile for the XSBASE TEST. # L_TARGET := test.o export-objs := test.o obj-$(config_test) += test.o include $(TOPDIR)/Rules.make clean: rm -f *.[oa].*.flags

Makefile 的修改與編輯 編輯 drivers/makefile subdir-$(config_mmc) subdir-$(config_xsbase) include $(TOPDIR)/Rules.make += mmc += xsbase

Makefile 的修改與編輯 編輯 Makefile DRIVERS-$(CONFIG_PLD) += drivers/pld/pld.o DRIVERS-$(CONFIG_MMC) += drivers/mmc/mmcdrivers.o DRIVERS-$(CONFIG_XSBASE) += drivers/xsbase/test.o DRIVERS := $(DRIVERS-y)

Driver Testing Use arm-linux-gcc c o test_client test_client.c to compile test program. Copy test_client and test.o to PXA270 by nfs. Create device node mknode /dev/xsb_edr_8led c 60 1 Insert module insmod test.o Run application./test_client