導航:首頁 > 編程語言 > linux系統編程源碼

linux系統編程源碼

發布時間:2023-05-25 12:40:59

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內核源碼如何編譯Ubuntu源代碼在哪裡呢

編譯linux內核步驟:
1、安裝內核
如果內核已經安裝(/usr/src/目錄有linux子目錄),跳過。如果沒有安裝,在光碟機中放入linux安裝光碟,找到kernel-source-2.xx.xx.rpm文件(xx代表數字,表示內核的版本號),比如RedHat linux的RPMS目錄是/RedHat/RPMS/目錄,然後使用命令rpm -ivh kernel-source-2.xx.xx.rpm安裝內核。如果沒有安裝盤,可以去各linux廠家站點或者www.kernel.org下載。
2、清除從前編譯內核時殘留的.o 文件和不必要的關聯
cd /usr/src/linux
make mrproper
3、配置內核,修改相關參數,請參考其他資料
在圖形界面下,make xconfig;字元界面下,make menuconfig。在內核配置菜單中正確設置個內核選項,保存退出
4、正確設置關聯文件
make dep
5、編譯內核
對於大內核(比如需要SCSI支持),make bzImage
對於小內核,make zImage
6、編譯模塊
make moles
7、安裝模塊
make moles_install
8、使用新內核
把/usr/src/linux/arch/i386/boot/目錄內新生成的內核文件bzImage/zImage拷貝到/boot目錄,然後修改/etc/lilo.conf文件,加一個啟動選項,使用新內核bzImage/zImage啟動。格式如下:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux-new ### 告訴lilo預設使用新內核啟動linux ###
append="mem=256M"
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda5
image=/boot/bzImage(zImage)
label=linux-new
read-only
root=/dev/hda5
保留舊有的啟動選項可以保證新內核不能引導的情況,還可以進入linux進行其他操作。保存退出後,不要忘記了最重要的一步,運行/sbin/lilo,使修改生效。
9、重新生成ram磁碟
如果您的系統中的/etc/lilo.conf沒有使用了ram磁碟選項initrd,略過。如果您的系統中的/etc/lilo.conf使用了ram磁碟選項initrd,使用mkinitrd initrd-內核版本號,內核版本號命令重新生成ram磁碟文件,例如我的Redhat 6.2:
mkinitrd initrd-2.2.14-5.0 2.2.14-5.0
之後把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件:
initrd=/boot/initrd-2.2.14-5.0
ram磁碟能使系統性能盡可能的優化,具體參考/usr/src/linux/Documents/initrd.txt文件
10、重新啟動,OK!

❸ linux操作系統內核的源代碼是加密

不是。linux操作系統內核的源代滾搭碼是開元的,開元的意思是含灶免費的,不是加密的。Linux是一種免費使用和自由傳播談備扮的類UNIX操作系統。

❹ 如何查看linux系統源碼

例如:想在Linux系統下查看cat命令工具的源碼,方法如下:

1、查看工具的路徑

$whereiscat
cat:/bin/cat/usr/share/man/man1/cat.1.gz

2、查看工具所屬的包

$dpkg-S/bin/cat
coreutils:/bin/cat
coreutils就是cat的源碼包名

3、下載工具源碼包

$sudoapt-getsourcecoreutils
[sudo]passwordforlizh:
正在讀取軟體包列表...完成
正在分析軟體包的依賴關系樹
正在讀取狀態信息...完成
需要下載10.8MB的源代碼包。
獲取:1http://mirrors.sohu.com/ubuntu/maverick/maincoreutils8.5-1ubuntu3(dsc)[1,891B]
獲取:2http://mirrors.sohu.com/ubuntu/maverick/maincoreutils8.5-1ubuntu3(tar)[10.7MB]
獲取:3http://mirrors.sohu.com/ubuntu/maverick/maincoreutils8.5-1ubuntu3(diff)[21.5kB]
下載10.8MB,耗時42秒(254kB/s)
gpgv:於2015年07月06日星期一13時49分55秒CST創建的簽名,使用RSA,鑰匙號21B2133D
gpgv:無法檢查簽名:找不到公鑰
dpkg-source:警告:對./coreutils_8.5-1ubuntu3.dsc校驗簽名失敗
dpkg-source:info:-8.5
dpkg-source:info:unpackingcoreutils_8.5.orig.tar.gz
dpkg-source:info:applyingcoreutils_8.5-1ubuntu3.diff.gz

❺ 如何編譯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內核源碼在600萬行左右
即便是最初的那個可以穩定運行的v0.11版Linux內核的代碼也有2萬多行
還不要網址,還直接打出來……
你當Linux操作系統是你平時練手的小程序呢……
想學習源碼建議不要直接看最新槐返版的代碼,
600萬行的代碼量相信你不會願意一山毀行一行的去看……那樣能看到你八十歲生日去……
但有挑選的看的話對新手來說不現實,既不知道怎麼挑,挑出來也未必能看懂
建議去看Linux
v0.11版的源代碼或者Minix的源代碼
(Linux和Minix內核結構有所不同,如果是為了學習操作系統對硬體的操作原理,可以學Minix,因為這個系統寫出來就是為了給學生們上課學慣用的鉛唯飢。而如果是為了學習Linux內核原理,那還是看Linux早期版本的源碼吧,畢竟和Minix在構造上還是有區別的)
推薦去OldLinux網站看v0.11的源代碼
還有一本書:同濟大學的趙炯博士寫的《Linux內核完全注釋》
網上有電子版,也能買大出版的書籍。這本書就是對Linux
v0.11內核代碼的完全注釋和解析,對於學習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里發信詢問了一下,幾個小時後就得到了答案。

❽ 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操作系統的源代碼

首先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 的源代碼就是 Linux 的源代碼……

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

閱讀全文

與linux系統編程源碼相關的資料

熱點內容
吃雞國際服為什麼會伺服器匆忙 瀏覽:244
微信中如何打開定位伺服器 瀏覽:203
java並發編程書籍 瀏覽:280
android601源碼 瀏覽:788
程序員離職了還能幹嘛 瀏覽:156
少林功法pdf 瀏覽:471
安卓80版本小游戲怎麼玩 瀏覽:632
奇書pdf 瀏覽:836
伺服器的管理口有什麼用 瀏覽:641
澳洲加密資產新政策 瀏覽:155
哈利波特連接伺服器失敗什麼意思 瀏覽:234
提取手機上安裝的app並反編譯 瀏覽:964
人工智慧演算法書 瀏覽:604
安卓如何傳輸圖片給蘋果 瀏覽:829
可編程式控制制器原理應用網路 瀏覽:587
社畜解壓是什麼意思 瀏覽:436
吉利博越用哪個app啊 瀏覽:513
西安單片機晶振電容 瀏覽:187
分地面積的演算法 瀏覽:179
安卓手機升級包後怎麼安裝 瀏覽:262