linux內核代碼
Linux的內核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是內核源代碼。
對於源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的了解。對於linux內核源代碼來講,我認為,基本要求是:1、操作系統的基本知識; 2、對C語言比較熟悉,最好要有匯編語言的知識和GNU C對標准C的擴展的知識的了解。
另外在閱讀之前,還應該知道Linux內核源代碼的整體分布情況。我們知道現代的操作系統一般由進程管理、內存管理、文件系統、驅動程序、網路等組成。看一下Linux內核源代碼就可看出,各個目錄大致對應了這些方面。Linux內核源代碼的組成如下(假設相對於linux目錄):
arch 這個子目錄包含了此核心源代碼所支持的硬體體系結構相關的核心代碼。如對於X86平台就是i386。
include 這個目錄包括了核心的大多數include文件。另外對於每種支持的體系結構分別有一個子目錄。
init 此目錄包含核心啟動代碼。
mm 此目錄包含了所有的內存管理代碼。與具體硬體體系結構相關的內存管理代碼位於arch/-/mm目錄下,如對應於X86的就是arch/i386/mm/fault.c 。
drivers 系統中所有的設備驅動都位於此目錄中。它又進一步劃分成幾類設備驅動,每一種也有對應的子目錄,如音效卡的驅動對應於drivers/sound。
ipc 此目錄包含了核心的進程間通訊代碼。
moles 此目錄包含已建好可動態載入的模塊。
fs Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext2文件系統對應的就是ext2子目錄。
kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/-/kernel目錄下。
net 核心的網路部分代碼。裡面的每個子目錄對應於網路的一個方面。
lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/-/lib/目錄下。
scripts 此目錄包含用於配置核心的腳本文件。
Documentation 此目錄是一些文檔,起參考作用。
Ⅱ 命令行查看Linux的系統版本和內核版本以及機器字長
查看Linux版本
1. lsb_release -a (適用於所有linux)
Distributor ID: CentOS
Description: CentOS release 6.5 (Final)
Release: 6.5
Codename: Final
注意:如果提示「-bash: lsb_release: command not found」 ,就需要手動安裝 lsb_release 命令。使用 yum install -y redhat-lsb
以下方法適用於RedHat , CentOS
復制代碼代碼如下:#cat /etc/redhat-release
CentOS release 6.5 (Final)
或者通過查看軟體包名來看查看系統版本
redhat執行:
復制代碼代碼如下:#rpm -q redhat-release
centos執行;
復制代碼代碼如下:# rpm -q centos-release
centos-release-6-5.el6.centos.11.2.i686
查看linux內核版本:
1. uname -a
或者直接用-r 參數
復制代碼代碼如下:uname -r
2.6.32-042stab094.8
2. cat /proc/version
復制代碼代碼如下:Linux version 2.6.32-042stab094.8 (root@kbuild-rh6-x64) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Tue Dec 16 20:36:56 MSK 2014
查看系統位數(查看機器字長)
1..直接看看有沒有/lib64 目錄。64位的系統會有/lib64和/lib兩個目錄,32位只有/lib一個
2.getconf LONG_BIT
復制代碼代碼如下:32
3.file /bin/ls 查看基本程序二進制信息
復制代碼代碼如下:/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
注意:如果沒有file 這個命令,就使用 yum install file 安裝這個file命令。
查看系統詳細參數信息
復制代碼代碼如下:getconf -a