基於android2.3.5系統:Linux如何啟動Andriod的守護進程init

來源:互聯網
上載者:User

***************************************************************************************************************************
作者:EasyWave                                                                                 時間:2013.07.28

類別:Android系統源碼分析                                                              聲明:轉載,請保留連結

注意:如有錯誤,歡迎指正。這些是我學習的日誌文章......

***************************************************************************************************************************

一):Linux是如何Andriod的呢

    我們都知道在Linux系統開機檔案系統的時候,一般會在Linux核心中指定command line,如下所示:

從圖片中我們可以看到,在linux核心的配置中,有個Boot options的選項,進入之後,我們可以看到有這樣的一行命令:

console=ttySAC0 root=/dev/mtdblock2 rootfstype=cramfs init=/linuxrc

這行非常重要,要想成功的啟動Andriod系統,最需要關注的是init=/linuxrc,這個在後面詳細的講解,現在我們來看看核心啟動之後,都會幹些什麼事情呢,具體的情參考我的另一篇博文:MACHINE_START and MACHINE_END
Macro define  
 這裡面詳細的介紹了Linux是如何啟動的,這裡我們只關注這個函數:static noinline int init_post(void)如下所示:

我們可以看到,核心啟動後,會自動的去找前面指定的init=/linuxrc,如果找不到的話,那麼他就會去找下面的/sbin/init、/etc/init等等。而在andriod的檔案系統中正好是在根目錄下有個linuxrc檔案,如何看到呢,我們可以通過命令解壓ramdisk.img,步驟如下[以OK6410的Andriod系統為例]:

在命令列輸入命令: cp ramdisk.img ramdisk.img.gz

之後建立一個檔案夾,如:mkdir test,然後複製ramdisk.img.gz到建立的test檔案中,之後採用命令:gunzip ramdisk.img.gz進行解壓,最後才採用如下的命令:

cpio -i -F ramdisk.img 就將檔案系統解壓出來了,如下所示:

我們可以在test檔案夾中看到一個linuxrc的檔案,如下所示:

最後,我們開啟linuxrc檔案看看裡面的內容,如下所示:

看到最後一行/init的嗎,不錯,Linux核心是通過command line來載入linuxrc,進而linuxrc中載入了/init的Andriod的守護進程init。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.