將文件編譯進安卓系統內核
① 安卓手機內核怎麼刷入
刷手機內核步驟准備:
1、首先要做好准備工作,確保手機已經安裝好驅動,將所有需要的東西都放好位置;
2、將手機關機,按住音量上鍵不放同時還要將手機連接到電腦上,等待藍燈常亮(新安裝驅動第一次會運行系統會先安裝驅動,在插一遍),放手,藍燈不可以滅或者手機是充電模式,然後檢查驅動;
刷手機內核
1、手機藍燈連接好以後回到電腦上win7系統(XP系統直接右擊滑鼠進DOS命令)安住鍵盤shift鍵不放,滑鼠移動到fastboo文件夾上右擊滑鼠,移動到在此處打開命令窗口,點擊進CMD命令
2、在出現的命令窗口中輸入刷內核命令:fastboot flash boot ics8.elf,然後按回車鍵,這時會有一個進程;
3、到這里大家回到fastboot就OK了,拔掉USB線開機,當指示燈亮並震動時按住住音量上鍵不放可以進Recovery模式。
Recovery主界面中英文:
1、reboot system now 重啟手機(刷機完畢選擇此項就能重新啟動系統);
2、install zip from SDcard 從SDcard上安裝zip升級包(可以執行任意名稱的zip(ROM)包,不限制ROM包名稱);
3、wipe data/factory reset 清除用戶數據並恢復出廠設置(刷機前必須執行的選項);
4、wipe cache partition 清除系統緩存(刷機前執行)(系統出問題也可嘗試此選項,一般能夠解決);
5、backup and restore 備份和還原系統(目前不支持);
6、mounts and storage 掛載和存儲選項(目前支持USB掛載)。
② 如何添加iptables/netfilter模塊到安卓內核
所以要實現netfilter(iptables)就要從兩方面來著手:1)內核支持netfilter;2)用戶層的iptables配置命令。
1、編譯內核,支持netfilter
在宿主機上進入linux內核目錄,配置所需的內核模塊:cd/usr/SRC/linuxmakemenuconfig
選中如下內核選項:
Generalsetup---
[*]Sysctlsupport(在ROMFS文件系統中/proc/syS/Net/ipv4/出現ip_forward)
Networkingoptions---[*]NetworkPACketfiltering(replaceSIPchains)IP:NetfilterConfiguration---(全部選擇即可)
這樣在內核中就選擇支持了netfilter。接下來只需編譯並生成內核映像文件並燒寫到嵌入式系統即可。如果燒寫後重起成功進入Linux,則說明新的支持netfiter的內核已經正常運行。(注意,這里的內核選項只是一些支持netfilter/iptables的選項。這里假設原有內核已支持嵌入式系統的相關硬體,並能在嵌入式平台上運行)。
2、編譯生成iptables命令
iptables工具包可以免費從網上獲得。下載iptables工具包後,進入下載目錄,進行編譯生成可執行文件,編譯方法具體可以參考iptables目錄下的INSTALL文件:
cd/root/iptables
makeKERNEL_DIR=/usr/src/linux(指定內核目錄)
makeNO。SHARED_LIBS=1(靜態鏈接編譯生成可執行文件)
把生成的iptables可執行文件到ramdisk再下載到嵌入式系統中就可以運行。
③ 如何把應用程序app編譯進android系統
把安卓應用軟體安裝到安卓系統文件,即把安卓應用軟體放到系統根目錄system/app下 操作方法 :
准備工作:
一、開啟ROOT許可權。
ROOT方法:下載一鍵ROOT之類的軟體,根據操作步驟進行,就可以獲取ROOT許可權了。
二、安裝RE文件管理器。
清理系統自帶應用
(一)、用RE打開系統根目錄下的system/app,進行精簡系統自帶應用,注意,要對照一些總結可刪減程序的文件,以免刪錯了導致系統故障。
(二)、根目錄:preload目錄下,可能會有系統的預裝應用,不用的也可以全部刪掉。
移動APK到system/app 目錄:
一、移動apk:用RE管理器把要安裝的apk軟體移動到/system/app 目錄下。
在操作前,將/system/app 目錄掛載為可讀寫;
注意軟體名不要有中文 、空格及其他特殊字元等;
如果無法移動,顯示空間不足時,可以先移動到data/app/下,再移動到/system/app;
二、修改apk許可權: 對移動進來的apk軟體更改許可權,即改為:用戶許可權為 讀+寫,分組許可權為 讀,其他許可權為 讀。
三、提取 .so文件:用RE提取apk軟體中/lib/目錄下的所有 .so文件,將其移動到/system/lib中。
點擊apk軟體,用RE查看文件內容,即可找到 ,so文件。
四、修改 .so文件許可權:方法同上。
五、重啟手機。在此過程中,可能載入的時間稍長點,請耐心等待即可。
④ 怎樣編譯安卓內核
把ROM解壓出來,然後有很多文件夾,然後再進行編輯就可以了,可以根據自己的要求自己定製ROM
⑤ 為了能從sd卡啟動android系統,內核應該怎麼編譯
本人使用mini6410開發了一個sqlite資料庫的程序,在mini6410的linux系統下已經能夠成功運行了。因為Android使用的也是linux內核,所以我想當然的認為按照同樣的方法將程序移植到mini6410的android系統中也可以成功運行,但是當我運行程序的時候卻提示我不能找到可執行文件(xlisten-arm是交叉編譯出來的可執行文件):
/ # ./xlisten-arm
/system/bin/sh: ./xlisten-arm: not found
1.探索:
在網上搜索起初認為可能是庫文件的不全導致的,於是在查看可執行文件xlisten-arm所需要的動態鏈接庫:
執行語句:
# arm-linux-readelf -a ./xlisten-arm | grep "Shared"
0x00000001 (NEEDED) Shared library: [libsqlite3.so.0]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libcrypt.so.1]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [libdl.so.2]
0x00000001 (NEEDED) Shared library: [libc.so.6]
知道所需的動態鏈接庫後,到android文件系統中去照著寫庫文件,在目錄/system/lib 中,果然缺少相應的庫文件,於是認為找到了我問題的根源所在,在復制相應庫文件的時候為了保留原來的屬性,還特意用了
#cp -a filename dir
誰知將這些庫都添加進去以後,仍然無濟於事!
看來不僅僅事庫文件缺失的問題了,而且一般來說,如果真的是因為缺少庫文件而導致的問題,終端會提示我們鏈接某庫文件時沒有找到該庫文件。
2.正確的解決方法:
將程序編譯的時候選擇靜態編譯,即使用選項 -static
我是對Makefile文件中的CFLAG變數進行修改
CFLAGS = -Wall
改為;
CFLAGS = -Wall -static
然而此時又出現問題了:
undefined reference to `pthread_mutex_*'
undefined reference to `dl*'
提示沒有定義這些函數,於是在包含的庫文件中添加了這兩個庫文件
在Makefile中,修改LIBS變數;
LIBS = -lsqlite3 -lm -lcrypt
改為:
LIBS = -lsqlite3 -lm -lcrypt -lpthread -ldl
然後進行交叉編譯,成功了!
編譯出來的可執行文件比較大,因為事靜態編譯的,我的有2M多,
拷貝到開發板的andriod系統中,
修改許可權:
#chmod 777 xlisten-arm
執行:
/ # ./xlisten-arm
OK!能夠正確的執行了!
⑥ andriod 源碼編譯時,如何添加一個可執行文件到文件系統中
是這樣的
1.進入你的android系統源碼的build/target/board/generic目錄下
2.把你的abc拷貝到 這個目錄下
3.編輯這個目錄下的vi AndroidBoard.mk這個文件
4.添加 PRODUCT_COPY_FILES += $(LOCAL_PATH)/abc:system/bin/abc
這樣在make源碼的時候,就可以自動進行這次拷貝了
⑦ 安卓編譯內核生成的是o文件嗎,然後再打包進boot.img
.o是中間文件,.ko是內核模塊
kernel是一個可執行的bzImage,簡單來講就是由.o鏈接生成的目標文件,不是像你說的那樣n多.o
.ko可以編譯進內核,也可以不編譯進內核,作為插件的形式存在
安裝內核的意思就是把內核到啟動分區,然後安裝內核模塊,以及一些其他的東西。。
每次開機直接把內核裝載到內存裡面去不就行了嗎,這也得先安裝才行不是。
⑧ 如何把ecryptfs編譯到內核中
下載內核源代碼: git clone http://android.googlesource.com/kernel/goldfish.git
git branch -a 顯示所有分支
選擇分支:
git checkout -b android-goldfish3.4
git checkout remotes/origin/android-goldfish3.4
配置交叉編譯環境:
工具包在 android源代碼目錄的 ./prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin,把它加進環境變數:
export PATH=$PATH:/xxxxxxx/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin
修改內核 主Makefile 文件:
ARCH ?= $(SUBARCH) 改為 ARCH ?= arm
下面的相應的改成 CROSS_COMPILE ?= arm-eabi-
make gold_armv7_defconfig 選擇配置文件
[這里可以使用make menuconfig 配置內核, 如果缺少包需要
sudo apt-get install libncurses5-dev
對於配置eCryptfs,需要
security options --> Enable accesskey retention support
--> ENCRYPTED KEYS
filesystem --> Miscellaneous filesystem --> eCryptfs ...layer
]
最後 make
