當前位置:首頁 > 芯聞號 > 充電吧
[導讀]Linux-2.6.38.8 移植參考 ? 最近學習Linux有點迷茫,剛學會了字符驅動的編寫但是卻不知道下一步該干些什么,想學習Linux內核裁剪,但是苦于找不到資料,開發(fā)板自帶的是Linux3.0

Linux-2.6.38.8 移植參考

?

最近學習Linux有點迷茫,剛學會了字符驅動的編寫但是卻不知道下一步該干些什么,想學習Linux內核裁剪,但是苦于找不到資料,開發(fā)板自帶的是Linux3.01,雖然我會編譯內核卻完全不知道如何去裁剪,配置都是開發(fā)板自帶的,我想自己學習裁剪一個Linux2.6的內核,因為現(xiàn)在的學習資料大部分都是以2.6的內核為例的,因此為了學習方便,我想移植一個Linux2.6的內核,因此從官網下載了一個Linux2.6.38.8版本的Linux源代碼。


后面會持續(xù)更新...

?

?

1.進入Linux2.6的源代碼根目錄。

?

Linux源碼目錄結構詳解

?

Arch

目錄包括了所有和體系結構相關的核心代碼。它下面的每一個子目錄都代表一種Linux支持的體系結構,例如i386就是Intel?CPU及與之相兼容體系結構的子目錄。PC機一般都基于此目錄。

Copying

目錄下是GPL版權申明。對具有GPL版權的源代碼改動而形成的程序,或使用GPL工具產生的程序,具有使用GPL發(fā)表的義務,如公開源代碼。

Credits

目錄下是光榮榜。對Linux做出過很大貢獻的一些人的信息。

Documentation

目錄下是一些文檔,沒有內核代碼,可惜都是English的,是對每個目錄作用的具體說明。

Drivers

目錄中是系統(tǒng)中所有的設備驅動程序。它又進一步劃分成幾類設備驅動,每一種有對應的子目錄,如聲卡的驅動對應于drivers/sound;?block?下為塊設備驅動程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系統(tǒng)的設備是如何初始化的,你可以看drivers/block/genhd.c中的device_setup()。它不僅初始化硬盤,也初始化,因為安裝nfs文件系統(tǒng)的時候需要網絡其他:?如,?Lib放置核心的庫代碼;?Net,核心與網絡相關的代碼;?Ipc,這個目錄包含核心的進程間通訊的代碼;?Fs,所有的文件系統(tǒng)代碼和各種類型的文件操作代碼,它的每一個子目錄支持一個文件系統(tǒng),例如fat和ext2。

Fs

目錄存放Linux支持的文件系統(tǒng)代碼和各種類型的文件操作代碼。每一個子目錄支持一個文件系統(tǒng),如ext3文件系統(tǒng)對應的就是ext3子目錄。

Include

目錄包括編譯核心所需要的大部分頭文件,例如與平臺無關的頭文件在include/linux子目錄下,與?intel?cpu相關的頭文件在include/asm-i386子目錄下,而include/scsi目錄則是有關scsi設備的頭文件目錄。

Init

目錄包含核心的初始化代碼(不是系統(tǒng)的引導代碼),有main.c和Version.c兩個文件。這是研究核心如何工作的好起點。

Ipc

目錄包含了核心進程間的通信代碼。

Kernel

內核管理的核心代碼,此目錄下的文件實現(xiàn)了大多數linux系統(tǒng)的內核函數,其中最重要的文件當屬sched.c;同時與處理器結構相關代碼都放在arch/*/kernel目錄下。

Lib

目錄包含了核心的庫代碼,不過與處理器結構相關的庫代碼被放在arch/*/lib/目錄下。

Maintainers

目錄存放了維護人員列表,對當前版本的內核各部分都有誰負責。

Makefile

目錄第一個Makefile文件。用來組織內核的各模塊,記錄了個模塊間的相互這間的聯(lián)系和依托關系,編譯時使用;仔細閱讀各子目錄下的Makefile文件對弄清各個文件這間的聯(lián)系和依托關系很有幫助。

Mm

目錄包含了所有獨立于?cpu?體系結構的內存管理代碼,如頁式存儲管理內存的分配和釋放等。與具體硬件體系結構相關的內存管理代碼位于arch/*/mm目錄下,例如arch/i386/mm/Fault.c?。

Modules

目錄存放了已建好的、可動態(tài)加載的模塊文件目錄,是個空目錄,用于存放編譯時產生的模塊目標文件。

Net

目錄里是核心的網絡部分代碼,其每個子目錄對應于網絡的一個方面。

Reporting-bugs

目錄里是有關報告Bug?的一些內容

Scripts

目錄包含用于配置核心的腳本文件等。

一般在每個目錄下都有一個.depend文件和一個Makefile文件。這兩個文件都是編譯時使用的輔助文件。仔細閱讀這兩個文件對弄清各個文件之間的聯(lián)系和依托關系很有幫助。另外有的目錄下還有Readme文件,它是對該目錄下文件的一些說明,同樣有利于對內核源碼的理解。

?

?

?

?

?

修改根目錄makefile文件

exportKBUILD_BUILDHOST := $(SUBARCH)

ARCH???????????????? =arm

CROSS_COMPILE???? ?= $(CONFIG_CROSS_COMPILE:"%"=%)

否則后面不能設置ARM處理器。

?

?

配置Linux內核,最常用的是執(zhí)行“makemenuconfig",如果不能執(zhí)行請安裝ncurses.

menucofig是個圖圖形配置解碼,如下

?

在圖中選項前面如果為<*>表示模塊被編譯進內核;如果為表示編譯成可加載模塊;如果為<>表示不編譯。有--->說明有子項。如果沒有system type --->這一項,請先修改makefile文件.

?

?

?

黃色高亮表示啟用該選項。

選項說明

1.General setup --->???????????????????? //一般設置


???????? ?[*] Prompt for development and/or incompletecode/drivers??

默認情況下是選擇的,這將會在設置界面中顯示還在開發(fā)或者還沒有完成的代碼與驅動.? 你應該選擇它,因為有許多設備可能必需選擇這個選項才能進行配置,實際上它是安全的。

???????? ()? Cross-compiler toolprefix?? ???????

?????????????????? 交叉編譯工具前綴,如果你要使用交叉編譯工具的話輸入相關前綴。我使用的是arm-linux- 前綴。

???????? ()? Local version -append to kernel release???

?????????????????? 自定義版本,也就是uname -r可以看到的版本,可以自行修改,這里我沒有使用

???????? [ ] Automatically append version information to the versionstring???

自動生成版本信息。這個選項會自動探測你的內核并且生成相應的版本,使之不會和原先??????? 的重復。這需要Perl的支持。由于在編譯的命令make-kpkg 中我們會加入- –append-to-version 選項來生成自定義版本,所以這里選N。

???????? Kernel compression mode (Gzip)? --->???

有5個選項,這個選項是說內核鏡像要用的壓縮模式,回車一下,可以看到gzip,bzip2,lzma,xz,lzo,一般可以按默認的gzip,如果要用bzip2,lzma,lzo,要先安裝相關解壓縮工具

???????? [*] Support for paging of anonymous memory(swap)?

?????????????????? 使你的內核支持虛擬內存 , 一定要選。

???????? [*] System V IPC?

進程提供通信機制,這將使系統(tǒng)中各進程間有交換信息與保持同步的能力。有些程序只有??????? 在選Y的情況下才能運行,所以不用考慮,這里一定要選。

???????? [*] POSIX Message Queues

?????????????????? 這是POSIX的消息隊列,它同樣是一種IPC。建議你最好將它選上

???????? [*] BSD Process Accounting ?????

這是允許用戶進程訪問內核,將賬戶信息寫入文件中。這通常被認為是個好主意,建議你??????? 最好將它選上。將進程的統(tǒng)計信息寫入文件的用戶級系統(tǒng)調用,主要包括進程的創(chuàng)建時間/創(chuàng)建者/內存占用等信息。

???????? [*]??BSD Process Accounting version 3 file format????

用的話統(tǒng)計信息將會以新的格式(V3)寫入,這格式包含進程ID和父進程。注意這個格式和以前的 v0/v1/v2 格式不兼容,所以你需要 升級相關工具來使用它。選不選均可。

???????? [*] Export task/processstatistics through netlink (EXPERIMENTAL)?

處于實驗階段的功能。通過通用的網絡輸出工作/進程的相應數據,和BSD不同的是,這些數據在進程運行的時候就可以通過相關命令訪問。和BSD類似,數據將在進程結束時送入用戶空間。如果不清楚,選N。
通過netlink接口向用戶空間導出任務/進程的統(tǒng)計信息,與BSD Process Accounting的不同之處在于這些統(tǒng)計信息在整個任務/進程生存期都是可用的

???????? [*]??Enable per-task delay accounting (EXPERIMENTAL)?

?????????????????? 在統(tǒng)計信息中包含進程等候系統(tǒng)資源(cpu,IO同步,內存交換等)所花費的時間

???????? [*]??Enable extended accounting over taskstats (EXPERIMENTAL)??

?????????????????? 在統(tǒng)計信息中包含擴展進程所花費的時間

???????? [*]????Enable per-task storage I/O accounting (EXPERIMENTAL)??

?????????????????? 在統(tǒng)計信息中包含I/O存儲進程所花的時間。

???????? -*- Auditing support?

審計支持,用于和內核的某些子模塊同時工作,(例如SELinux)需要它,只有同時選擇其子項才能對系統(tǒng)調用進行審計。允許審計的下層能夠被其他內核子系統(tǒng)使用,比如SE-Linux,它需要這個來進行登錄時的聲音和視頻輸出。

???????? [*]??Enable system-call auditing support

支持對系統(tǒng)調用的審計。允許系統(tǒng)獨立地或者通過其他內核的子系統(tǒng),調用審計支持,比??????? 如SE-Linux。要使用這種審計的文件系統(tǒng)來查看特性,請確保 INOTIFY 已經被設置。??????????????

RCU Subsystem? --->? 一個高性能的鎖機制RCU 子系統(tǒng)

RCU(Read-CopyUpdate),顧名思義為讀取-復制更新。對于被RCU保護的共享數據結構,讀者不需要獲得任何鎖就可以訪問它,但寫者在訪問它時首先拷貝一個副本,然后對副本進行修改,最后使用一個回調(callback)機制在適當的時機把指向原來數據的指針重新指向新的被修改的數據。這個時機就是所有引用該數據的CPU都退出對共享數據的操作。

???????? IRQ subsystem? --->?????? //IRQ中斷子系統(tǒng)設置。

?????????????????? [*]Support sparse irq numbering???

??????????????????????????? 支持稀有終端編號,不知道怎么用,默認選中

???????? RCU Subsystem? ---> ???? //RCU子系統(tǒng)設置,非對稱讀寫鎖系統(tǒng)是一種新的kernel鎖機制,適用于讀多寫少環(huán)境

RCU (Read-Copy Update),顧名思義為讀取-復制更新。對于被RCU保 護的共享數據結構,讀者不需要獲得任何鎖就可以訪問它,但寫者在訪問它時首先拷貝一個副本,然后對副本進行修改,最后使用一個回調(callback)機 制在適當的時機把指向原來數據的指針重新指向新的被修改的數據。這個時機就是所有引用該數據的CPU都退出對共享數據的操作。

?????????????????? RCU Implementation(Tree-based hierarchical RCU)?--->?

??????????????????????????? (X)UP-only small-memory-footprint RCU?

???????????????????????????????????? 小內存的RCU。

?????????????????? [ ] Enable tracingfor RCU

???????????????????????????????????? 激活跟蹤,不選擇

???????? < > Kernel.config support????

這個選項允許.config文件(即編譯LINUX時的配置文件)保存在內核當中。它提供正在運行中的或者還在硬盤中的內核的相關配置選項??梢酝ㄟ^內核鏡像文件 kernel image file 用命令script scripts/extract-ikconfig 來提取出來,作為當前內核重編譯或者另一個內核編譯的參考。如果你的內核在運行中,可以通過/proc/config.gz文件來讀取。下一個選項提供這項支持。看起來好像是一個不錯的功能,可以把編譯時的 .config文件保存在內核中,以供今后參考調用。用來重編譯和編譯其他的內核的時候可以用上。你是一個編譯內核的狂人的話,這項要選上

???????? (17) Kernel logbuffer size (16 => 64KB, 17 => 128KB)??

內核日志緩存的大小,12 => 4 KB,13 => 8KB,14 => 16 KB單處理器, 15 => 32 KB多處理器,16=> 64 KB for x86 NUMAQ or IA-64,17 =>128 KB for S/390???? ,保持默認。

???????? -*- Control Groupsupport? --->

?????????????????? cgroup支持,如cpusets那樣來使用cgroup子系統(tǒng)進程(不確定可以不選)????????????????

?

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉