2013-10-19 33 views
3

在我的教育期間,我一直在開發Android iOS應用程序和網站將近18個月。現在,作爲我最後一年的項目,我正在研究Linux源代碼,目標是在移動設備上啓動它 - 如Android。我已經成功地將它作爲一個Debian軟件包在Internet上進行了教程。我目前正在使用Ubuntu。在移動設備上修改並引導Linux內核

我有一個策略,但不知道我是否在正確的軌道上。這是因爲如下:

答:

  1. 下載Linux的源代碼。刪除多餘的驅動程序,編譯並在當前運行的Ubuntu上安裝它並使用它。

  2. 進一步自定義代碼並將其作爲我自己的發行版啓動。對於 ,我遵循LFS

  3. 指定一個特定的目標移動,修改它的代碼,寫 司機,如果我需要什麼,不知道哪一個(這就是爲什麼我在這裏:)), 並引導它的內核。

我不知道我的策略是否正確。我會很感激,如果有人可以告訴我:

B:

  1. 我在正確的軌道上?如果不是,那麼可能是正確的?

  2. 是否需要指定移動設備並自定義該 的內核代碼?

  3. 除了驅動程序之外,我還需要在內核中更改哪些內容?

  4. 最後但並非最不重要的,當我在移動設備上啓動內核;我會在那裏有任何 接口或終端?

對不起,如果我的問題沒有意義。我是一名學生,仍然在努力解決問題。如果有人能夠提供關於在互聯網上搜索哪些主題的提示,我將非常感激。

更新:我想要的是確認我的策略是否正確。如果沒有,那麼請列出我應該遵循的步驟。

回答

2

SoC和其周圍的設備的驅動程序是封閉的源並不罕見。 據我所知,Exynos SoC的驅動程序(三星在他們的許多設備中使用的東西)是(partly) closed source

所以一般來說你必須爲所有人和每個人編寫驅動程序。 特別是實際的無線電連接是棘手的,因爲沒有需要專有的固件blob的設備(儘管其餘驅動程序可能是開源的)。

的另一個問題是在許多設備上,它不會輕易讓你安裝 自定義內核(存儲在引導加載程序哈希和,不願啓動如果內核哈希值不匹配 )引導加載程序。

因此,假設您正在爲Android已經支持的設備進行開發,那麼我個人 將從您設備的相應設備樹開始,並開始修改它。 您可以在CyanogenMod's github page上設置很多設備樹。

優點:

  • 您可以用工作狀態
  • 開始如果東西壞了,你知道這是你

另外,還可以在其他項目中偷看像Ubuntu Touch。 他們能夠通過使用Hybris來利用現有的Android內核。 如果你想有一個基於Debian/Ubuntu的發行版,我會推薦使用 嘗試Ubuntu Touch並修改它。

+0

感謝您的回答,這是有幫助的。但是,你是否仍然認爲我的策略是正確的,接近我在移動設備上啓動內核的目標? – Sikander

+0

玩弄硬件,你知道的總是一個好主意,並通過修改x86 Ubuntu的內核,像一個很好的計劃,適應黑客攻擊Linux。虛擬機也有很大的幫助:qemu有專門用於測試Linux內核的'-kernel'標誌。 – nemo