當前位置:首頁 » 操作系統 » lunix源碼

lunix源碼

發布時間: 2022-05-01 17:11:40

『壹』 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的內核源代碼可以從很多途徑得到。一般來講,在安裝的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核心代碼這樣的復雜程序令人望而生畏。它象一個越滾越大的雪球,閱讀核心某個部分經常要用到好幾個其他的相關文件,不久你將會忘記你原來在干什麼。所以沒有一個好的工具是不行的。由於大部分愛好者對於Window平台比較熟悉,並且還是常用Window系列平台,所以在此我介紹一個Window下的一個工具軟體:Source Insight。這是一個有30天免費期的軟體,可以從www.sourcedyn.com下載。安裝非常簡單,和別的安裝一樣,雙擊安裝文件名,然後按提示進行就可以了。安裝完成後,就可啟動該程序。這個軟體使用起來非常簡單,是一個閱讀源代碼的好工具。它的使用簡單介紹如下:先選擇Project菜單下的new,新建一個工程,輸入工程名,接著要求你把欲讀的源代碼加入(可以整個目錄加)後,該軟體就分析你所加的源代碼。分析完後,就可以進行閱讀了。對於打開的閱讀文件,如果想看某一變數的定義,先把游標定位於該變數,然後點擊工具條上的相應選項,該變數的定義就顯示出來。對於函數的定義與實現也可以同樣操作。別的功能在這里就不說了,有興趣的朋友可以裝一個Source Insight,那樣你閱讀源代碼的效率會有很大提高的。怎麼樣,試試吧!

『叄』 如何編譯linux源代碼

首先uname -r看一下你當前的linux內核版本

1、linux的源碼是在/usr/src這個目錄下,此目錄有你電腦上各個版本的linux內核源代碼,用uname -r命令可以查看你當前使用的是哪套內核,你把你下載的內核源碼也保存到這個目錄之下。
2、配置內核 make menuconfig,根據你的需要來進行選擇,設置完保存之後會在當前目錄下生成.config配置文件,以後的編譯會根據這個來有選擇的編譯。
3、編譯,依次執行make、make bzImage、make moles、make moles
4、安裝,make install
5、.創建系統啟動映像,到 /boot 目錄下,執行 mkinitramfs -o initrd.img-2.6.36 2.6.36
6、修改啟動項,因為你在啟動的時候會出現多個內核供你選擇,此事要選擇你剛編譯的那個版本,如果你的電腦沒有等待時間,就會進入默認的,默認的那個取決於 /boot/grub/grub.cfg 文件的設置,找到if [ "${linux_gfx_mode}" != "text" ]這行,他的第一個就是你默認啟動的那個內核,如果你剛編譯的內核是在下面,就把代表這個內核的幾行代碼移到第一位如:
menuentry 'Ubuntu, with Linux 3.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash $vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
當然你也可以修改 set default="0"來決定用哪個,看看你的內核在第幾位,default就填幾,不過我用過這種方法,貌似不好用。

重啟過後你編譯的內核源碼就成功地運行了,如果出現問題,比如滑鼠不能用,usb不識別等問題就好好查查你的make menuconfig這一步,改好後就萬事ok了。

最後再用uname -r看看你的linux內核版本。是不是你剛下的那個呢!有沒有成就感?

『肆』 linux源碼在哪個目錄

如果是別人發布的二進制包,可執行文件通常都安裝到Linux系統 /usr/bin 下面;如果是自己從源代碼安裝的,可執行文件通常都在 /usr/local/bin 下面,除非配置時指定了安裝位置。
例如:
rpm -ivh xxx1.rpm
可執行文件通常都安裝到 /usr/bin 下面
./configure (或者 ./configure --prefix=/usr/local)
make
make install
可執行文件通常都在 /usr/local/bin 下面,因為默認參數就是 --prefix=/usr/local
./configure --prefix=/usr (或者 ./configure --prefix=/opt 也可以指定其他位置,如你的家目錄 --prefix=~,~就是 /home/xxx<即你的家目錄>的縮寫)
make
make install
可執行文件通常都在 /usr/bin 下面(或者相應地位於 /opt/bin 下面,或者 /home/xxx/bin 下面,xxx 是你的家目錄)
無論那種方法,在 bash 控制台下只要輸入可執行文件頭幾個字母,然後連續按兩次 Tab 鍵,就可以列出可能的所有命令,如果只有一種可能,則自動顯示該文件全名,這稱為命令補全。想執行當前目錄下的可執行文件,則必須使用 ./ 作為命令前導,例如:
./myprogram
除此之外,一般的可執行文件都處在系統的搜索路徑里,只要在控制台直接輸入命令名就可執行。例如你編譯安裝了一個叫 synaptic 的軟體,只需要在 KDE 的 konsole 虛擬控制台下輸入 synaptic 即可。
如果不幸,你的可執行文件不在系統的搜索路徑里,就會報告沒有這個命令。那麼你需要把那個可執行文件的位置加入環境變數 PATH 里,用冒號作分割符,例如:
在你的家目錄的 .profile 文件或 .bashrc 文件里添加如下命令
PATH="~/bin:$PATH" 就可以把你的家目錄的 bin 目錄追加到搜索路徑里。
無論任何時候想知道系統里某個「命令文件」的位置,都可以使用 which 命令,例如:
$which pwd
/usr/bin/pwd
說明 pwd 命令位於 /usr/bin 下面。

『伍』 如何查看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 的源代碼……

Linux 的源代碼 != Linux 的內核源代碼。
一般所說的 Linux ,是指一整套 GNU/Linux 套件的。

『柒』 如何查看Linux命令源代碼

以find命令為例:
第一步,確定命令屬於哪個rpm包:
#rpm -qf /usr/bin/find
fintils-4.1-34
第二步,查找fintils的源碼包fintils-4.1-34.src.rpm,這個一般在發行版的網站上可以找到(比如FC6的源碼在這里可以找到:http://ftp.kddilabs.jp/Linux/packages/fedora/core/6/source/SRPMS/)。
也可以到rpmfind.net上查找,輸入rpm包的名字就可以找到相關的源碼包,有的也可以得到軟體對應的網站。
第三步,安裝源碼包:
rpm -ivh fintils-4.1-34.src.rpm
安裝好之後可以到/usr/src/RedHat/SOURCE下找到相關的源碼包
或者直接編譯源碼包:
rpmbuild -bb fintils-4.1-34.src.rpm

『捌』 怎樣解讀LINUX系統的源代碼

解讀LINUX
的源代碼,這一點阻擋了許多人的熱情。
我的建議是:隨著技術的發展,LINUX系統也向著桌面化發展,在內核內加入了越來越多的代碼,是內核越來越臃腫,增加了閱讀的難度.
1.一般情況下LINUX的源代碼位於/USR/LINUX下
2.其中的ARCH目錄下為一些重要的代碼.
3.INCLUDE目錄下是編譯系統所需要的頭文件
4.其他的一些文件大多可以根據其所在文件夾的名字,以及自身的名字來
判斷.
蒲У姆絞接枰源娣

『玖』 如何查看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的啟動順序一步步來閱讀;對於像內存管理部分,可以單獨拿出來進行閱讀分析。實際上這是一個反復的過程,不可能讀一遍就理解。

『拾』 Linux系統的所有源代碼

Linux是一個開放的,自由的類Unix操作系統,它的源代碼是公開的, 各個版本的Linux,包括從內核到許許多多的應用程序的源代碼, 以及可執行文件都可以免費從互聯網上下載。 你也可以通過光碟得到Linux系統,和一般的軟體不同的是, 你可以合法的和你的朋友分享Linux光碟。很顯然Linux光碟的價格不會很高, 第一,因為你可以免費從網上下載;第二,你可以和你的朋友合夥湊錢買一套Linux光碟, 再和你的朋友分享使用。 Linux和一般的軟體不同,是可以和你的朋友分享的。 舉個例子來說: 如果朋友家有張非常漂亮的窗子,但是這窗子是95牌的, 那麼你仿製是違法的,如果這窗子是X牌的,或者說牌子是GPL, 那麼你仿製就不違法。如果你不想違法,但又想要漂亮的窗子, 答案是選擇自由軟體。選擇Linux。 Linux准確的說,是一個系統內核,它是最初在91年, 由芬蘭的了不起的學生Linus Torvalds發起, 接著又有全世界的志願者加入進來開發的。 現在有一些軟體公司在做Linux的生意, 著名的有RedHat,SuSE以及Caldera等等, 這些公司發布自己的基於Linux內核的一整套的Linux系統: 這些整套的系統通常包括有:一個C語言及C++編譯器,Perl腳本解釋程序, 外殼Shell,圖形用戶界面X窗口系統,包括有X Server以及眾多的應用程序等等。 這些整套的Linux系統按照習慣叫做Linux發布(distribution)。 目前使用最廣泛的Linux發布是RedHat公司的RedHat Linux。 以前使用廣泛的Slackware,現在也還有許多人在使用, 我自己的第一個Linux系統就是Slackware,現在我玩的是Debian, Debian和其他的Linux發布的不同之處在於:Debian是完全由志願者開發的, 不像RedHat和SuSE,是由軟體公司所支持的。 RedHat是使用最廣泛的Linux發布,並且RedHat公司現在得到了Netscape, 以及Intel的支持,前景看好,根據一般的看法Redhat也是最容易上手的Linux發布。 SLackware和RedHat相比要稍微復雜一些,這主要是指軟體的安裝方面, 由於RedHat使用rpm打包系統,安裝新軟體簡單到只要一行命令即可。 而Slackware往往要從源代碼重新編譯,稍微費事一些。 SuSE也是基於rpm打包系統,SuSE的特別之處在於它對X窗口系統的支持非常好, SuSE的吉祥物是一隻綠色的蜥蜴,非常可愛。 Debian基於自己的Deb格式的打包系統,但是它也可以安裝rpm軟體包。 Linux可以運行在DEC公司的Alpha機上,也可以運行在Sun公司的Sparc機器上。 當然也可以運行在Intel公司的386以上的機器上。 編寫的好的源代碼可以不經修改的在各種不同的Linux平台上直接編譯安裝運行, 但是顯然,不同的硬體平台之間的可執行文件是不兼容的。 但是一個特別針對Intel機器的rpm軟體包是可以輕易的在for Intel的RedHat,SuSE,Debian, 以及Slackware上安裝運行起來的。 RedHat,SuSE,Slackware以及Debian等各個發布之間的另一個不同是, 它們都帶有自己的系統管理工具。 RedHat使用著名的控制面板+Linuxconf, Debian使用臭名昭著的dselect(為什麼說臭名昭著?因為它非常難控制, 我自己只要有可能,就盡量不碰它) Slackware使用pkgtool, SuSE也有自己的管理工具。 Linux是一個開放的操作系統,它的各個部分:內核,應用程序, 庫程序是有機的結合的。並不是固定的死死的,碰都不能碰。Linux的內核的版本號是XX.XX.XX格式的,由三個數字組成, 第一個數字是主版本好,第三個數字是輔版本號,中間的數字如果是奇數, 表示這是一個開發版的內核,如果是偶數,表示是一個相對穩定的,可靠的內核。 一般來講,除非你正在研究Linux內核,或有特別的需要, 否則不要擺弄奇數版本的內核。 今天演示的第三個部分是Linux下的軟體。常常有人抱怨Linux缺乏有效的軟體的支持, 這在一定情況下的確如此,但是另一方面也是我們對Linux了解太少, Linux平台上現在已經有了相當多的應用軟體。 並且Linux正在得到越來越多的廠家的支持。 這段時間炒的非常火的Oracle,Sybase等等大型資料庫的Linux版本就是一例。 Linux下不但有類似於PhotoShop的免費的圖像編輯軟體:gimp, 還有免費的類似於3DS的三維設計軟體:MoonLight。 並且所有這些軟體,你都可以得到源代碼。 Linux下的圖形用戶界面是基於X窗口系統的, 這也秉承了Linux的一貫傳統:開放的,有機結合的。 XFree86隻是圖形界面的伺服器,上面可以運行各種不同的窗口管理器, 現在著名的窗口管理器有AfterStep,WindowMaker,以及Enlightenment。 有的窗口管理器做得非常的漂亮,真是叫做不看不知道,一看嚇一跳。 另外,如果你不喜歡花哨的窗口管理器,你可以選擇wm2或者9wm, 它們只佔用非常少的系統資源,我自己經常使用的就是9wm。 有了X伺服器和一個窗口管理器,你就有了圖形用戶界面。 你就可以運行Gimp或者Moonlight了,甚至你還可以運行Doom和quake! 現在還有一批程序員正在為Linux開發免費的,開放源代碼的紅色警報。 對Linux的一個最主要的批評是:Linux缺乏支持。 坦白的說,就我自己作為一個個人用戶來講,我覺得Linux的支持非常的好。 我曾經在安裝Debian的時候遇到幾個問題, 到Debian的Mail List里發信詢問了一下,幾個小時後就得到了答案。

熱點內容
魔獸世界退役伺服器有什麼用處 發布:2024-10-05 20:50:00 瀏覽:194
新車配置不符怎麼投訴 發布:2024-10-05 20:49:00 瀏覽:388
編譯的html文件 發布:2024-10-05 20:48:58 瀏覽:160
python自學網站 發布:2024-10-05 20:46:08 瀏覽:18
存儲在rom中的數據當計算機斷電後 發布:2024-10-05 20:43:46 瀏覽:9
炒股編程代碼 發布:2024-10-05 20:29:10 瀏覽:275
防火門報配置錯誤是什麼原因 發布:2024-10-05 20:20:47 瀏覽:886
移動寬頻設置路由器怎麼設置密碼 發布:2024-10-05 20:03:30 瀏覽:105
微指令的編譯方法有哪一些 發布:2024-10-05 19:02:10 瀏覽:885
android離線定位 發布:2024-10-05 18:36:40 瀏覽:860