Android系統(tǒng)與Linux內(nèi)核是什么關(guān)系?Linux內(nèi)核發(fā)行版介紹
Linux內(nèi)核是非常重要的,同時(shí)Linux內(nèi)核也是非常復(fù)雜的,Linux內(nèi)核超過千萬行代碼。為增進(jìn)大家對(duì)Linux內(nèi)核的認(rèn)識(shí),本文將對(duì)Linux內(nèi)核發(fā)行版以及Android系統(tǒng)和Linux內(nèi)核的關(guān)系予以介紹。如果你對(duì)Linux內(nèi)核具有興趣,不妨和小編一起繼續(xù)往下閱讀哦。
一、Linux內(nèi)核發(fā)行版
Linux內(nèi)核的發(fā)展過程中,我們還不得不提一下各種Linux發(fā)行版的作用,因?yàn)檎撬鼈兺苿?dòng)了Linux的應(yīng)用,從而也讓更多的人開始關(guān)注Linux。一些組織或廠家,將Linux系統(tǒng)的內(nèi)核與外圍實(shí)用程序(Utilities)軟件和文檔包裝起來,并提供一些系統(tǒng)安裝界面和系統(tǒng)配置、設(shè)定與管理工具,就構(gòu)成了一種發(fā)行版本(distribution),Linux的發(fā)行版本其實(shí)就是Linux核心再加上外圍的實(shí)用程序組成的一個(gè)大軟件包而已。相對(duì)于Linux操作系統(tǒng)內(nèi)核版本,發(fā)行版本的版本號(hào)隨發(fā)布者的不同而不同,與Linux系統(tǒng)內(nèi)核的版本號(hào)是相對(duì)獨(dú)立的。因此把SUSE、RedHat、Ubuntu、Slackware等直接說成是Linux是不確切的,它們是Linux的發(fā)行版本,更確切地說,應(yīng)該叫做“以Linux為核心的操作系統(tǒng)軟件包”。根據(jù)GPL準(zhǔn)則,這些發(fā)行版本雖然都源自一個(gè)內(nèi)核,并且都有自己各自的貢獻(xiàn),但都沒有自己的版權(quán)。Linux的各個(gè)發(fā)行版本(distribution),都是使用Linus主導(dǎo)開發(fā)并發(fā)布的同一個(gè)Linux內(nèi)核,因此在內(nèi)核層不存在什么兼容性問題。每個(gè)版本都不一樣的感覺,只是在發(fā)行版本的最外層才有所體現(xiàn),而絕不是Linux本身特別是內(nèi)核不統(tǒng)一或是不兼容。
90年代初期Linux開始出現(xiàn)的時(shí)候,僅僅是以源代碼形式出現(xiàn),用戶需要在其他操作系統(tǒng)下進(jìn)行編譯才能使用。后來出現(xiàn)了一些正式版本。最流行的幾個(gè)正式版本有:SUSE、RedHat、Fedora、Debian、Ubuntu、CentOS、Gentoo,等等。用戶可根據(jù)自己的經(jīng)驗(yàn)和喜好選用合適的Linux發(fā)行版。
原先Linus Torvalds將Linux置于一個(gè)禁止任何商業(yè)行為的條例之下,但之后改用GNU通用公共許可證第二版。該協(xié)議允許任何人對(duì)軟件進(jìn)行修改或發(fā)行,包括商業(yè)行為,只要其遵守該協(xié)議,所有基于Linux的軟件也必須以該協(xié)議的形式發(fā)表,并提供源代碼。
Linus Torvalds曾經(jīng)公開聲稱將Linux置于GNU通用公共許可證之下是他一生中所做的“最好的決定”。
二、Android系統(tǒng)與Linux內(nèi)核的關(guān)系
通過上面的介紹,想必大家對(duì)Linux內(nèi)核的發(fā)行版已經(jīng)具備了清晰的認(rèn)識(shí)。在這部分,我們主要來了解下Android系統(tǒng)和Linux內(nèi)核之間的關(guān)系。
對(duì)Android感興趣的朋友都知道,Android系統(tǒng)是建立在Linux內(nèi)核之上的。那么Linux內(nèi)核和Android什么關(guān)系?
Android雖然建立在Linux內(nèi)核之上,但是他對(duì)內(nèi)核進(jìn)行了一些擴(kuò)展,增加了一些驅(qū)動(dòng)。比如Binder,loger等等驅(qū)動(dòng)。可以拿Android內(nèi)核代碼和其Baseline版本進(jìn)行對(duì)比??梢钥吹紸ndroid對(duì)Linux內(nèi)核的所有擴(kuò)展。
熟悉Linux啟動(dòng)的朋友知道,首先Linux引導(dǎo)完成之后,會(huì)啟動(dòng)用戶態(tài)的init進(jìn)程(pid為0),這個(gè)進(jìn)程在整個(gè)系統(tǒng)運(yùn)行過程中起著非常重要的作用,如果你對(duì)init進(jìn)程不了解請(qǐng)查相關(guān)資料。init完成系統(tǒng)的初始化工作,然后進(jìn)入shell,接收用戶的輸入。
Android啟動(dòng)也沒有什么神秘的,就是用自己的init進(jìn)程替換了Linux內(nèi)核的init進(jìn)程,完成自己初始化工作(設(shè)備,文件系統(tǒng)等等初始化)。然后啟動(dòng)自己的虛擬機(jī),程序等等的東西。Android的init進(jìn)程的代碼位于system/core/init/init.c下面,可以去查看其源碼,來了解Android啟動(dòng)詳細(xì)流程。Android啟動(dòng)流程的資料網(wǎng)上已經(jīng)比較多,這里就不贅述了。
可以看到移植Android過程中,調(diào)試init非常重要。因?yàn)樗泻陀布脚_(tái)相關(guān)的東西都這里初始化,所以init進(jìn)程有可能需要移植或者配置。其他的進(jìn)程都是和硬件無關(guān)的,理論上不需要修改就應(yīng)該能夠運(yùn)行起來。
經(jīng)過上面的描述可以看出,Android的init進(jìn)程起著一個(gè)承上啟下的作用。承上——自動(dòng)由Linux內(nèi)核調(diào)用;啟下——初始化Android各種設(shè)備和資源,然后啟動(dòng)Android相關(guān)的進(jìn)程,直到引導(dǎo)起整個(gè)Android系統(tǒng)。
以上便是此次小編帶來的Linux內(nèi)核相關(guān)內(nèi)容,通過本文,希望大家對(duì)Linux內(nèi)核發(fā)行版以及Android系統(tǒng)和Linux內(nèi)核的關(guān)系具備一定的了解。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,小編將于后期帶來更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!