當前位置:首頁 » 安卓系統 » android內核移植

android內核移植

發布時間: 2022-05-18 19:27:06

Ⅰ 安卓智能手機的基於ARM架構的處理器,為什麼能夠支持基於linux內核的操作系統

Android是基於Linux內核的操作系統。

提到Linux內核的時候,應該把它從概念上和「Linux操作系統」分割看來,內核只包括最基本的抽象,內存模型、進程調度、中斷處理等等。而操作系統是一個更廣的概念,不光包括內核,還包括了設備驅動、應用程序框架以及一些關鍵的能夠讓這個操作系統能為人所用的軟體。所以Ubuntu, Fedora等等這些桌面發行版可以看做是包裝了Linux內核的、不同的Linux操作系統。

Android 開發之初fork了Linux kernel,在其基礎上進行了以下改進:
1. 添加新的的設備驅動
2. 重寫了c lib(Bionic)
3. 實現了基於java的應用程序框架
4. 對內核的小修改
大部分的修改都是在內核之上的,也就是說android內核和其他桌面Linux內核是非常接近的(在Linux kernel 3.3 之後,Android分支的內核代碼開始merge回原Linux內核repo),內核所完成的抽象,如內存模型、進程調度等,是一致的。

Android不是Linux
看到這個標題大家可能會有些迷惑,前面不是一直說Android是基於Linux內核的嗎,怎麼現在又不是Linux了?迷惑也是正常的,請先看下面幾個要點,然後我們將對每一個要點進行分析,看完後你就會覺得Android不是Linux了。
1.它沒有本地窗口系統
什麼是本地窗口系統呢?本地窗口系統是指GNU/Linux上的X窗口系統,或者Mac OX X的Quartz等。不同的操作系統的窗口系統可能不一樣,Android並沒有使用(也不需要使用)Linux的X窗口系統,這是Android不是Linux的一個基本原因。
2.它沒有glibc支持
由於Android最初用於一些便攜的移動設備上,所以,可能出於效率等方面的考慮,Android並沒有採用glibc作為C庫,而是Google自己開發了一套Bionic Libc來代替glibc。
3.它並不包括一整套標準的Linux使用程序
Android並沒有完全照搬Liunx系統的內核,除了修正部分Liunx的Bug之外,還增加了不少內容,比如:它基於ARM構架增加的Gold-Fish平台,以及yaffs2 FLASH文件系統等。
4.Android專有的驅動程序
除了上面這些不同點之外,Android還對Linux設備驅動進行了增強。

上面這些要點足以說明Android不是Linux。本書的主要內容將圍繞Android的這些特有的部分展開,我們的講解會盡量通俗易懂,但還是建議大家先復習一下Linux內核的基本知識。在具體學習之前,我們還是先來總體瀏覽一下Android對Linux內核進行了哪些改動,在移植時就需要對這些改動加以調整。

Ⅱ Linux內核怎樣啟動Android

那麼Linux內核和Android什麼關系?Linux內核是怎樣引導起Android呢?本文進行簡單的描述。 Android雖然建立在Linux內核之上,但是他對內核進行了一些擴展,增加了一些驅動。比如Binder,loger等等驅動。可以拿Android內核代碼和其Baseline版本進行對比。可以看到Android對Linux內核的所有擴展。 熟悉Linux啟動的朋友知道,首先Linux引導完成之後,會啟動用戶態的init進程(pid為0),這個進程在整個系統運行過程中起著非常重要的作用,如果你對init進程不了解請查相關資料。init完成系統的初始化工作,然後進入shell,接收用戶的輸入。 Android啟動也沒有什麼神秘的,就是用自己的init進程替換了Linux內核的init進程,完成自己初始化工作(設備,文件系統等等初始化)。然後啟動自己的虛擬機,程序等等的東西。Android的init進程的代碼位於system/core/init/init.c下面,可以去查看其源碼,來了解Android啟動詳細流程。Android啟動流程的資料網上已經比較多,這里就不贅述了。 可以看到移植Android過程中,調試init非常重要。因為所有和硬體平台相關的東西都這里初始化,所以init進程有可能需要移植或者配置。其他的進程都是和硬體無關的,理論上不需要修改就應該能夠運行起來。 經過上面的描述可以看出,Android的init進程起著一個承上啟下的作用。

Ⅲ 剛剛在linux下編譯好了ogre 3D渲染引擎,怎樣將它移植到Android中啊。

目前為止,Ogre 1.7.3暫時不支持Android,雖然Android是以Linux為底層內核,但是Android NDK編譯Ogre 1.7是不可能的。但是可以檢查Ogre的最新代碼 1.8版本(https://bitbucket.org/sinbad/ogre/src/)在OgreMain/src文件夾下面可以看到Android文件夾,說明Ogre 1.8是支持Android的,但是Ogre 1.8沒有最終release。不過Google Code上有個Gamekit(http://code.google.com/p/gamekit/),集成了Ogre 1.8和物理與聲音引擎,由於使用不穩定的Ogre 1.8,可以使用NDK編譯在Android上使用。

Ⅳ Android為什麼要使用Linux做為內核呢。

因為是個系統就需要內核。Android 本質上是一個基於 Linux 內核上面運行的 java 虛擬機。

手機上 WM 系統內核是 WinCE ,Symbian 系統裡面 Symbian 就是內核,Nokia 的 S60 系統這個 S60 就是界面+功能函數庫。索尼愛立信之前的幾款手機也有 Symbian 的內核,但用戶界面是 UIQ 。
Android 不過就是藉助了 Linux 內核作為系統的基礎,配合自己的 Andriod 基礎二進制函數庫和一些開源軟體作為基礎功能支持,跑上自己的 Dalvik 虛擬機,實際看到的 Android 界面,其實是 Dalvik 虛擬機裡面運行的 java 程序。

Android = Linux 內核 + 功能函數庫 + Dalvik 虛擬機 + java 程序

從系統的開發分層和難度來說,既然有了開源的 Linux ,為什麼還要自己去開發內核?就好象大家玩的一些游戲,有 Windows 系統可以直接跑,沒有幾個廠家會去重新開發底層系統。就連游戲機,其實他的操作系統和功能庫也都是現成的,游戲開發者只需要根據系統的功能寫程序就可以了。
這樣很好的減少了開發難度和成本。

Ⅳ 如何件android中的命令移植到linux開發板上,想使用android中的一些命令,方便開發,比如logcat命令

本文用《Android深度探索(卷1):HAL與驅動開發》的隨書源代碼為例詳細說明如何配置Android驅動開發和測試環境,並且如何使用源代碼中的build.sh腳本文件在各種平台(UbuntuLinux、Android模擬器和S3C6410開發板)上編譯、安裝和測試Linux驅動。
建議讀者使用UbuntuLinux12.04或更高版本實驗本文的方法。
最好用root賬號登錄Linux。
一、安裝交叉編譯器
如果只是在UbuntuLinux上測試Linux驅動就不需要安裝交叉編譯器了,但要在Android模擬器或S3C6410開發板上進行測試,就必須安裝交叉編譯器。
首先下載交叉編譯器(分卷壓縮
下載後解壓,會發現有兩個tgz文件,可以將這兩個文件放到/root/compilers目錄中,在Linux終端進入該目錄,執行如下命令安裝交叉編譯器。
[plain]viewplain
#tarzxvfarm-linux-gcc-4.3.2.tgz-C/
#tarjxvfarm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2-C/
二、編譯和測試Linux內核
這里的Linux內核有兩個,一個是goldfish,也就是Android模擬器使用的Linux內核、另外一個是S3C6410開發板使用的Linux內核(Linux2.6.36)。
讀者首先要下載這兩個Linux內核。
Android模擬器用的Linux內核源代碼(分卷壓縮)
用於S3C6410開發板的Linux內核源代碼(分卷壓縮)
分卷1
分卷2
由於隨書代碼中的word_count驅動已經在goldfish和linux2.6.36中分別建立了符號鏈接,以便在編譯linux內核時同時也會編譯word_count驅動,所以linux內核與源代碼目錄應與作者機器上的目錄相同。
也就是兩個linux內核目錄與源代碼目錄如下:
linux內核目錄
/root/kernel/goldfish
/root/kernel/linux_kernel_2.6.36
源代碼目錄
/root/drivers
注意/root/drivers目錄下就直接是每一章的源代碼了,例如/root/drivers/ch
06、/root/drivers/ch07
現在需要將/usr/local/arm/arm-none-linux-gnueabi/bin路徑加到Linux的PATH環境變數中(不會加的上網查,這是Linux的基本功)
最後進入/root/compilers/goldfish目錄,執行make命令編譯linux內核,如果完全編譯,大概20分鍾左右。
編譯完成後,會在/root/kernel/goldfish/arch/arm/boot目錄中生成一個zImage文件,代碼1.7MB,這就是用於Android模擬器的Linux內核文件。
三、編譯Linux驅動
現在來編譯隨書光碟的驅動程序,這里以word_count驅動為例。
在Linux終端進入/root/drivers/ch06/word_count目錄。
先別忙著編譯。
首先要設置打開/root/drivers/common.sh文件,修改第一行UBUNTU_KERNEL_PATH變數值為自己機器上安裝的UbuntuLinux內核路徑,只要執行「ls/usr/src」命令即可查看當前機器可用的linux內核。

Ⅵ 關於安卓界面移植和內核修改的問題

移植還是很麻煩的,不太建議弄,你可以上論壇找找有沒有別人移植好的rom,或者下個類似的主題也行,還有就是如果你是單純覺得他的天氣時鍾好看,應該有單獨的軟體可以下載,你下一個裝上你手機就行了

Ⅶ 安卓4.4怎麼移植內核boot

1、找相近機型的rom,要保證大部分驅動相同

2、移植boot.img
3、修改rom包刷機腳本
4、替換boot.img
5、簽名打包為zip格式去刷
注意:最大的問題就是驅動問題,很可能很多東西用不了,可能連系統都進不去,謹慎為之!

Ⅷ 既然安卓也是Linux內核的,那在Linux上運行的工具,可以移植到手機吧,要怎麼做呢

linux的工具不是完全都可以在安卓上運行的,真要使用你就手機裝busybox,安裝完用終端基本就能實現linux上很多的命令功能

安卓手機內核可以替換嗎

可以的,以Virtuous_S4A-2為例
1、從網上下載Virtuous_S4A-2內核。(註:此內核只是作為例子,並不適用於所有機型。你要替換的內核要對應自己的機型以及版本!)
2、然後解壓Virtuous_S4A-2,得到4個文件夾,分別是data,kernel,meta-inf,
system。
3、在進入廚房選擇0進入高級操作菜單,選擇20,boot.img工具
4、選擇S查看一下內核信息,用筆記錄相關信息以便完成後核對數據。特別是基址。
5、復制完文件後,我們回到廚房工具,選擇b,新建boot.img

6、建完後,查看新的boot.img信息。看基址是否一樣。

7、替換內核後,我們也要選擇23把update-script格式轉換為updater-script格式。然後
和上面一樣,打包!簽名!

熱點內容
易語言gdi源碼 發布:2025-08-18 13:06:05 瀏覽:781
iphone5s軟體緩存 發布:2025-08-18 12:39:37 瀏覽:148
QQ推薦上傳 發布:2025-08-18 12:38:51 瀏覽:860
qq忘記密保怎麼找回密碼 發布:2025-08-18 12:38:18 瀏覽:72
python字元串類型轉換 發布:2025-08-18 12:35:54 瀏覽:399
ofdm信道估計演算法 發布:2025-08-18 12:35:09 瀏覽:733
指數競猜源碼 發布:2025-08-18 12:29:26 瀏覽:698
天龍八部莫愁腳本官網 發布:2025-08-18 12:14:19 瀏覽:862
合資車為什麼配置不高 發布:2025-08-18 12:09:36 瀏覽:76
銀行的六位密碼有多少種組合 發布:2025-08-18 12:06:27 瀏覽:397