linux內核路徑
『壹』 當前linux所使用的內核在哪個文件夾,如何看當前使用的內核版本情況。
1、linux的內核文件一般是在/boot下的img文件
2、內核版本可以在/proc/version下看到
3、內核版本還可以使用uname -a 命令查看。
『貳』 linux內核的文件都在哪兒
linux內核默認存放到/boot下,而/usr/src中可查看內核的信息。
幾種linux內核文件的區別:
1、vmlinux 編譯出來的最原始的內核文件,未壓縮。
2、zImage 是vmlinux經過gzip壓縮後的文件。
3、bzImage bz表示「big zImage」,不是用bzip2壓縮的。兩者的不同之處在於,zImage解壓縮內核到低端內存(第一個640K),bzImage解壓縮內核到高端內存(1M以上)。如果內核比較小,那麼採用zImage或bzImage都行,如果比較大應該用bzImage。
4、uImage U-boot專用的映像文件,它是在zImage之前加上一個長度為0x40的tag(64個位元組,說明這個映像文件的類型、載入位置、生成時間、大小等信息)。其實就是一個自動跟手動的區別,有了uImage頭部的描述,u-boot就知道對應Image的信息,如果沒有頭部則需要自己手動去搞那些參數。換句話說,如果直接從uImage的0x40位置開始執行,zImage和uImage沒有任何區別。
5、vmlinuz 是bzImage/zImage文件的拷貝或指向bzImage/zImage的鏈接。
6、initrd 是「initial ramdisk」的簡寫。一般被用來臨時的引導硬體到實際內核vmlinuz能夠接管並繼續。
『叄』 如何在linux中查詢內核版本的路徑請高手們幫幫忙!!
內核文件一般位於/boot目錄下
要通過查找配置的方式知道內核文件的路徑,可以查看grub的配置。因為現在大部分Linux系統通過grub方式引導,引導時自然需要知道內核文件在哪裡。grub的配置文件一般是/boot/grub.conf
但是文件中關於內核文件的位置描述使用的是grub的表示方法,例如:
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
第一行表示使用第一塊硬碟的第一個分區作為引導式的根系統,而kernel文件位於該分區的/boot目錄中,文件名為vmlinuz-2.4.18-14,2.4.18表示的就是內核文件的版本了。
『肆』 Linux內核程序入口地址
在Linux內核中,使用 vmlinux.lds.S 文件(路徑: arch/arm64/kernel/ )布局內核映像中相關段(例: .text、.data )的位置。
在Linux內核編譯時, vmlinux.lds.S 文件最終會被構建成鏈接腳本 vmlinux.lds 文件(路徑: arch/arm64/kernel/ )。
本文主要介紹Linux內核程序運行的起始位置 _text ,在 vmlinux.lds.S 文件中定義如下:
從上面可以看出: _text = KIMAGE_VADDR + TEXT_OFFSET 。
1、KIMAGE_VADDR定義
文件: arch/arm64/include/asm/memory.h ,定義如下:
文件: include/linux/sizes.h ,定義如下:
宏 KIMAGE_VADDR 展開如下:
上面是按照無符號計算, KIMAGE_VADDR 為: 0xFFFFFF8008000000 。
2、TEXT_OFFSET定義
文件: arch/arm64/Makefile ,定義如下:
通過計算, _text 值為: 0xFFFFFF8008080000 。
在Linux內核啟動時,從 log 信息中也可以找到對應的地址:
_text 對應的是虛擬地址 , 在內核中可以直接通過訪問該地址獲取其保存的值 ,其對應 Image 映像中的第一個字 0x14424000 。
Image 映像查看方法如下:
本文基於 RockPI 4A 單板Linux 4.4內核。
『伍』 linux內核存放的位置是在/usr/src/kernels下還是/boot/vmlinuz下
1、是在/boot目錄下
2、/usr/src目錄一般是系統內核代碼目錄
3、你看/boot/grub/grub.conf文件,kernel那行是vmlinuz...,就是代表內核的名字
4、Linux是一個一體化內核(monolithic kernel)系統。「內核」指的是一個提供硬體抽象層、磁碟及文件系統控制、多任務等功能的系統軟體。一個內核不是一套完整的操作系統。一套基於Linux內核的完整操作系統叫作Linux操作系統,或是GNU/Linux。設備驅動程序可以完全訪問硬體。Linux內的設備驅動程序可以方便地以模塊化(molarize)的形式設置,並在系統運行期間可直接裝載或卸載。
『陸』 如何確定Linux內核源代碼目錄即,KBUILD的路徑
方法一:
確定內核源代碼目錄通常==文件系統中內核驅動模塊的build路徑
即/lib/moles/2.6.25-14.fc9.i686/build,這個build通常為鏈接文件,連接到
/usr/src/kernels/2.6.25-14.fc9.i686
此方法較准確,通常可以寫如下腳本實現:
# KBUILD is the path to the Linux kernel build tree. It is usually the
# same as the kernel source tree, except when the kernel was compiled in
# a separate directory.
KBUILD ?= $(shell readlink -f /lib/moles/$(KVERS)/build)
方法二:
自己下載內核源文件包,自己指定內核的編譯目錄!
不推薦這種做法,還是按照各大發行版的做法比較好!這樣不至於在編譯下載的某個設備驅動程序時
『柒』 linux內核的文件都在哪兒
首先保證系統有linux內核源碼
下載內核源碼,版本可以更改
1> sudo apt-get install linux-source-2.6.35
下載內核源碼一般在/usr/src目錄中
2>進入/usr/src中解壓內核源碼
3>然後執行cd /usr/src/內核目錄
『捌』 如何確定Linux內核源代碼目錄即,KBUILD的路徑
方法一:
確定內核源代碼目錄通常==文件系統中內核驅動模塊的build路徑
即/lib/moles/2.6.25-14.fc9.i686/build,這個build通常為鏈接文件,連接到
/usr/src/kernels/2.6.25-14.fc9.i686
此方法較准確,通常可以寫如下腳本實現:
# KBUILD is the path to the Linux kernel build tree. It is usually the
# same as the kernel source tree, except when the kernel was compiled in
# a separate directory.
KBUILD ?= $(shell readlink -f /lib/moles/$(KVERS)/build)
方法二:
自己下載內核源文件包,自己指定內核的編譯目錄!
不推薦這種做法,還是按照各大發行版的做法比較好!這樣不至於在編譯下載的某個設備驅動程序時
『玖』 Linux內核源碼在哪裡
一般在Linux系統中的/usr/src/linux*.*.*(*.*.*代表的是內核版本,如2.4.23)目錄下就是內核源代碼(如果沒有類似目錄,是因為還沒安裝內核代碼)。另外還可從互連網上免費下載。注意,不要總到http://www.kernel.org/去下載,最好使用它的鏡像站點下載。請在http://www.kernel.org/mirrors/里找一個合適的下載點,再到pub/linux/kernel/v2.6/目錄下去下載2.4.23內核。
代碼目錄結構
在閱讀源碼之前,還應知道Linux內核源碼的整體分布情況。現代的操作系統一般由進程管理、內存管理、文件系統、驅動程序和網路等組成。Linux內核源碼的各個目錄大致與此相對應,其組成如下(假設相對於Linux-2.4.23目錄):
1.arch目錄包括了所有和體系結構相關的核心代碼。它下面的每一個子目錄都代表一種Linux支持的體系結構,例如i386就是Intel CPU及與之相兼容體系結構的子目錄。PC機一般都基於此目錄。
2.include目錄包括編譯核心所需要的大部分頭文件,例如與平台無關的頭文件在include/linux子目錄下。
3.init目錄包含核心的初始化代碼(不是系統的引導代碼),有main.c和Version.c兩個文件。這是研究核心如何工作的好起點。
4.mm目錄包含了所有的內存管理代碼。與具體硬體體系結構相關的內存管理代碼位於arch/*/mm目錄下。
5.drivers目錄中是系統中所有的設備驅動程序。它又進一步劃分成幾類設備驅動,每一種有對應的子目錄,如音效卡的驅動對應於drivers/sound。
6.ipc目錄包含了核心進程間的通信代碼。
7.moles目錄存放了已建好的、可動態載入的模塊。
8.fs目錄存放Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext3文件系統對應的就是ext3子目錄。
Kernel內核管理的核心代碼放在這里。同時與處理器結構相關代碼都放在arch/*/kernel目錄下。
9.net目錄里是核心的網路部分代碼,其每個子目錄對應於網路的一個方面。
10.lib目錄包含了核心的庫代碼,不過與處理器結構相關的庫代碼被放在arch/*/lib/目錄下。
11.scripts目錄包含用於配置核心的腳本文件。
12.documentation目錄下是一些文檔,是對每個目錄作用的具體說明。
一般在每個目錄下都有一個.depend文件和一個Makefile文件。這兩個文件都是編譯時使用的輔助文件。仔細閱讀這兩個文件對弄清各個文件之間的聯系和依託關系很有幫助。另外有的目錄下還有Readme文件,它是對該目錄下文件的一些說明,同樣有利於對內核源碼的理解。
在閱讀方法或順序上,有縱向與橫向之分。所謂縱向就是順著程序的執行順序逐步進行;所謂橫向,就是按模塊進行。它們經常結合在一起進行。對於Linux啟動的代碼可順著Linux的啟動順序一步步來閱讀;對於像內存管理部分,可以單獨拿出來進行閱讀分析。實際上這是一個反復的過程,不可能讀一遍就理解。
『拾』 redhatenterpriselinux7的內核程序存儲於那個目錄
管理類文件夾: /boot 該目錄默認下存放的是Linux的啟動文件和內核,例如LILO或GRUB的文件。 /initrd 它的英文含義是boot loader initialized RAM disk,就是由boot loader初始化的內存檔。在linux內核啟動前,boot loader會將存儲介質(一般是硬碟)中的initrd文件載入到內存,內核啟動時會在訪問真正的根文件系統前先訪問該內存中的initrd文件系統。 /bin 該目錄中存放Linux的常用命令。 /sbin 該目錄用來存放系統管理員使用的管理程序。 /var 該目錄存放那些經常被修改的文件,包括各種日誌、數據文件。如果做mail server,則需在Linux安裝時將該目錄設置為大空間。 /etc 該目錄存放系統管理時要用到的各種配置文件和子目錄,例如網路配置文件、文件系統、X系統配置文件、設備配置信息、設置用戶信息等。如果做web server,則需在Linux安裝時將該目錄設置為大空間。 /dev 該目錄包含了Linux系統中使用的所有外部設備,它實際上是訪問這些外部設備的埠,訪問這些外部設備與訪問一個文件或一個目錄沒有區別。例如在系統中鍵入「cd /dev/cdrom」就可以看到光碟機中的文件。 /mnt 該目錄默認下有2個分別對應光碟機和軟碟機的文件夾cdrom和floppy。你可以臨時將別的文件系統掛在該目錄下,例如「掛載光碟機mount/dev/cdrom /mnt/cdrom,查看光碟機cd /mnt/cdrom」,養成良好習慣不使用時及時卸載「umount /mnt/cdrom」。 二、用戶類文件夾: /root 如果你是以超級用戶的身份登錄的,這個就是超級用戶的主目錄。 /home 如果建立一個名為「xx」的用戶,那麼在/home目錄下就有一個對應的「/home/xx」路徑,用來存放該用戶的主目錄。
三、應用程序類文件夾: /usr 用戶的應用程序和文件幾乎都存放在該目錄下。
