如何內核
1. 如何從linux內核
打開網路官網,輸入kernel內核開始搜索,
找到官網,點擊打開,網路速度可能比較慢
打開後我們在其首頁就可以看到最近版本的linux內核下載按鈕,這里我們下載的linux4.2.3版本的內核
下載好後我們會得到一個壓縮包,但是根據我的實驗,在windows下打開會報錯,所以我們這里將其轉入到linux下解壓打開
如圖,這是我解壓後的linux內核壓縮包,進入該文件夾,我們會看到很多內核相關的文件及文件夾
步驟閱讀
6
這時我們就可以用vi或者vim編輯器來研究分析我們的linux內核了
2. 如何進行linux內核開發
內核幾乎全是用C寫成的,有一些架構相關的部分是用匯編語言寫成的。熟練掌握C語言是內核開發的必備條件。匯編語言(任何架構)的了解不是必須的,除非你准備做某個架構的底層開發。雖然下面這些書不能完全代替扎實的C語言教學和/或者成年累月的經驗,他們還是不錯的參考,如果用得著的話: - "The C Programming Language" 作者: Kernighan and Ritchie [Prentice Hall]- "Practical C Programming" 作者: Steve Oualline [O'Reilly] 內核是用 GNU C 和 GNU 工具鏈寫成的。雖然它符合 ISO C89 標准,它還是使用了一些標准中沒有的擴展。內核是自成體系的 C 環境,它並不依賴標准C庫,所以某些C語言標準是不支持的。任意長度long long類型除法和浮點數是不被允許的。有時候會很難理解內核對於它所使用的工具鏈和擴展的假定,而且不幸的是也沒有關於它們的絕對的參考。請查閱gcc 的info頁(`info gcc`)以獲取有關信息。 他們發現遵循這些標准對於這樣一個大規模的且地理上分散的團隊是最佳的選擇。嘗試提前學習盡可能多的有關這些標準的知識,因為它們都有很好的文檔;不要期望別人會遵照你或
3. linux中內核是怎樣為
以下介紹3種查看方法:
第一種:登錄linux,在終端輸入cat /proc/version 運行效果如下圖:
4. 要如何學習linux內核
1.首先要了解為什麼要學習內核?下圖已表明,如果要從事驅動開發或系統研究,就要學習內核。
5.語言基礎也需要扎實,所以需要把C語言鞏固鞏固
5. 如何定製自己的linux內核
一 前言
為什麼要編譯自己的內核?這可能會有各種不同的答案,列舉如下:
1 為了研究,學習內核源碼。
2 為了支持新的硬體或者打開某項內核功能。
3 升級內核到更新版本。
4 按自己的要求定製和優化內核功能。
如此種種...
折騰不需要理由,這里我就不在多說,下面直接進入主題。
編譯方式
編譯內核有多種方式,從kernel.org下載選擇下載需要的版本的內核源碼,
如:linux-2.6.32-rc1.tar.bz2,下載內核源碼到/home/user/目錄,進入下載目錄,解壓壓縮包。
#cd /home/user/
#tar -xjvf linux-2.6.32-rc1.tar.bz2
二 准備編譯環境
開始之前,首先確認下面軟體包已經安裝(編譯中標普華4.0時,直接全部安裝CD3可保證此條件)。
* rpmdevtools
* yum-utils
fedora系統可以使用如下命令安裝:
#yum install yum-utils rpmdevtools
1. 生成一個rpmbuild命令工作所需的目錄樹,下面命令可以完成該操作,也可以手動建立目錄樹。
命令建立:
#rpmdev-setuptree
此命令將會在/usr/src/rpmbuild/目錄下生成如下目錄結構(如果此位置沒有,則可能在當前用戶目錄下).
# tree /usr/src/rpmbuild/
rpmbuild/
|-- BUILD
|-- RPMS
|-- SOURCES
|-- SPECS
`-- SRPMS
上面部分是rpmbuild的環境建立。rpm
3. 安裝內核源碼包需要的依賴組件(在此可以跳過此步操作)
su -c 'yum-builddep kernel-<version>.src.rpm'
4.安裝內核源碼到系統,默認目錄在/usr/src/neoshine:
rpm -Uvh kernel-<version>.src.rpm
三 配置內核(生成config配置文件)
下面將介紹如何解開源碼包,並修改,配置和重新打包源碼
1. 解開源碼包並打上所有的補丁到BUILD目錄
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=`uname -m` kernel.spec
kernel源碼將在這里找到:
/usr/src/neoshine/rpmbuild/BUILD/kernel-<version>/linux-<version>.<arch> directory
配置內核源碼
1. 進入內核源碼:
cd ~/rpmbuild/BUILD/kernel-2.6.$ver/linux-2.6.$ver.$arch/
2. 復制/boot/config*配置文件到源碼目錄下,此config文件也可以是已經配好或者其他地方備份的kernel配置文件:
cp /boot/config2.6- 2.6.$ver.$arch .config
3. 先檢查kernel配置中新增的選項:
make oldconfig
4. 定製內核功能,關閉initrd支持選項,執行圖形化內核配置工具:
make menuconfig
註:在generic setup選項下找到initial RAM system and RAM disk(initramfs and initrd) support 項,取消編譯。同時確保跟文件系統對應的驅動和系統所在存儲器對應的驅動都已經編譯到內核(否則會無法啟動系統).
5. 在.config文件第一行改為下面內容(注意:沒有此行時,後面的編譯會報錯)
# i386
6. 拷貝.config到SOURCES/:
cp .config ../SOURCES/config-$arch
四 編譯新內核
1. 下面開始准備編譯新的內核包
打開SPEC/kernel.spec
vim SPEC/kernel.spec
改變下面行內容,可以定製自己的內核擴展名(如fc10之類):
%define buildid .<自己內核的小版本名>
下一步將生成一個新內核的rpm包,此過程需要編譯內核源碼包
使用下面命令生成新的內核源碼包
rpmbuild -bb --with baseonly --without debuginfo --target=`uname -m` kernel.spec
參數說明:bb表示只編譯二進制包,即不生成源碼包,without debuginfo 表示沒有調試信息,
target=`uname -r`表示生成對應當前平台的內核包
如果上面的命令成功執行完成,那麼會在BUILD/i686目錄下生成新的內核安裝包
五 安裝新內核
rpm -ivh kernel-$ver-$arch.rpm
此步操作會自動安裝內核到boot目錄下,安裝對應內核模塊到/lib/moles/目錄下,並且生成新內核對應的grub引導菜單。
修改grub引導菜單為以下格式
title new kernel
kernel /boot/vmlinuz-$ver-$arch root=/dev/sdax(hdax)
注意,此處不要使用uuid指定跟文件系統(可能會無法掛載根分區而導致內核死機),也不要再加和顯示相關的參數(內核不支持對應設置時,只會看到一個黑黑的屏幕)。
至此一個禁用initrd的新內核配置安裝完畢!
6. 如何學習linux內核
Linux是最受歡迎的自由電腦操作系統內核。它是一個用C語言寫成,符合POSIX標準的類Unix操作系統。Linux最早是由芬蘭黑客LinusTorvalds為嘗試在英特爾x86架構上提供自由免費的類Unix操作系統而開發的。該計劃開始於1991年,在計劃的早期有一些Minix黑客提供了協助,而今天全球無數程序員正在為該計劃無償提供幫助。技術上說Linux是一個內核。「內核」指的是一個提供硬體抽象層、磁碟及文件系統控制、多任務等功能的系統軟體。一個內核不是一套完整的操作系統。一套基於Linux內核的完整操作系統叫作Linux操作系統,或是GNU/Linux。
組成進程管理(processmanagement)、1
定時器(timer)、2
中斷管理(interruptmanagement)、3
內存管理(memorymanagement)、4
模塊管理(molemanagement)、5
虛擬文件系統介面(VFSlayer)、6
文件系統(filesystem)、7
設備驅動程序(devicedriver)、8
進程間通信(inter-processcommunication)、9
網路管理(networkmanagement)、10
系統啟動(systeminit)等操作系統功能的實現。想學先買有關的書,再請教微機老師或專業人士。
7. 如何學習Linux內核
Linux是最受歡迎的自由電腦操作系統內核。它是一個用C語言寫成,符合POSIX標準的類Unix操作系統。Linux最早是由芬蘭黑客 Linus Torvalds為嘗試在英特爾x86架構上提供自由免費的類Unix操作系統而開發的。該計劃開始於1991年,在計劃的早期有一些Minix 黑客提供了協助,而今天全球無數程序員正在為該計劃無償提供幫助。 技術上說Linux是一個內核。「內核」指的是一個提供硬體抽象層、磁碟及文件系統控制、多任務等功能的系統軟體。一個內核不是一套完整的操作系統。一套基於Linux內核的完整操作系統叫作Linux操作系統,或是GNU/Linux。
組成進程管理(process management)、 1
定時器(timer)、 2
中斷管理(interrupt management)、 3
內存管理(memory management)、 4
模塊管理(mole management)、 5
虛擬文件系統介面(VFS layer)、 6
文件系統(file system)、 7
設備驅動程序(device driver)、 8
進程間通信(inter-process communication)、9
網路管理(network management)、 10
系統啟動(system init)等操作系統功能的實現。 想學先買有關的書,再請教微機老師或專業人士
8. 怎樣做到Linux系統內核開發者
內核幾乎全是用C寫成的,有一些架構相關的部分是用匯編語言寫成的。熟練掌握C語言是內核開發的必備條件。匯編語言(任何架構)的了解不是必須的,除非你准備做某個架構的底層開發。雖然下面這些書不能完全代替扎實的C語言教學和/或者成年累月的經驗,他們還是不錯的參考,如果用得著的話: - "The C Programming Language" 作者: Kernighan and Ritchie [Prentice Hall]- "Practical C Programming" 作者: Steve Oualline [O'Reilly] 內核是用 GNU C 和 GNU 工具鏈寫成的。雖然它符合 ISO C89 標准,它還是使用了一些標准中沒有的擴展。內核是自成體系的 C 環境,它並不依賴標准C庫,所以某些C語言標準是不支持的。任意長度long long類型除法和浮點數是不被允許的。有時候會很難理解內核對於它所使用的工具鏈和擴展的假定,而且不幸的是也沒有關於它們的絕對的參考。請查閱gcc 的info頁(`info gcc`)以獲取有關信息。 他們發現遵循這些標准對於這樣一個大規模的且地理上分散的團隊是最佳的選擇。嘗試提前學習盡可能多的有關這些標準的知識,因為它們都有很好的文檔;不要期望別人會遵照你或者你公司的行事方式。 文檔Linux內核源代碼樹有很多文檔,它們對於學習如何與內核社區交流來說有不可估量的價值。當新的功能加進內核的時候,通常建議作者把解釋這個新功能的文檔也加進內核。如果一個內核變動導致了內核對用戶空間界面的改變,建議你把這個信息或者一個解釋了這個變動的manpage的補丁發送給手冊頁的維護者 [email protected]。 Do*****entation/Changes 這個文件介紹了成功編譯和運行內核所需要各種不同軟體的列表。 Do*****entation/CodingStyle 這個文件描述了Linux內核代碼風格,還有背後的一些原因。所有的新代碼的要符合這個文檔里的准則。大多數維護者只會接受符合這些規則的補丁,很多人只看符合正確風格的代碼。
9. 如何編譯一個內核
內核,是一個操作系統的核心。它負責管理系統的進程、內存、設備驅動程序、文件和網路系統,決定著系統的性能和穩定性。Linux作為一個自由軟體,
在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了舊內核的bug,並增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的系統度身定
制一個更高效,更穩定的內核,就需要重新編譯內核。
10. 怎樣學習linux內核
先練基本功,《C語言》,《數據結構》,《計算機操作系統》,《計算機體系結構》,這幾門課程是必須的。
《Linux內核源碼分析》+Linux內核代碼。對著書本,邊看邊理解,對照實際內核代碼,驗證一次,比如用Source Insight,很方便看調用的邏輯關系。
上兩點是理論加理解,對工作及學習有很大幫助。實際操作起來,還是建議從編譯開始,驅動入手,再往子系統,框架走比較穩妥。