Android-system.img格式ROM的定製教程

來源:互聯網
上載者:User

準備工作
1,在PC上 安裝linux 或Ubuntu作業系統【個人推薦Ubuntu】

2,系統安裝好後最好用ROOT使用者定製ROM
以下是開啟ROOT 使用者的方法;
執行:sudo passwd root 接著輸入密碼和root密碼,重複密碼。再重新啟動就可以用root登陸
以上搞定了 ,我們可以開始定製ROM了
先給上 分解 與合成工具
分解工具

合成工具

把以上這2個工具放到linux 下面
現在開始做ROM
1、例如 我 在ROOT 檔案裡面建立一個檔案夾 命名為 AND 把 unyaffs 和mkyaffs2image 、system.img 放到裡面
接著又在 AND 檔案夾下面建立一個 system 【這檔案夾 用來放 分解得到的檔案】
分解方法
分解前先給 unyaffs 賦予777許可權
輸入如下命令 sudo chmod
777
unyaffs(賦予unyaffs
執行許可權)
開始分解
把終端定位到所要解壓到的目錄 cd /root/and然後打命令/root/and/unyaffs system.img
分解得到的所有檔案 放到剛剛建立的 system檔案下面 【除 unyaffs 和mkyaffs2image、system.img外】
分解出來後,你就可以開始XXOO它了【跟你把MM 的衣服脫掉,然後XXOO擦不多】
XXOO玩後總得把人家衣服穿上去把
下面執行合成 命令
/root/and/mkyaffs2image -f /root/and/system Newsystem.img
開始打包 (如果ROM中存在zImage,intrd.gz不需要-f)
最後合成得到 Newsystem.img 這就新ROM了
有些ROM裡面 沒有 APP和framework 檔案夾
因為被 壓縮到 squashed.sqsh裡面去了
以下是 squashed.sqsh 的分解 與合成命令
分解
unsquashfs squashed.sqsh
合成
mksquashfs squashed squashed.sqsh

ROM製作基礎教程:如何建立一個刷機包
目前有好幾種方法來安裝軟體或是庫檔案到你的Android手機上。你可以使用市場程式來尋找並安裝軟體,也可以使用adb命令列工具來安裝或是傳送檔案到你的Android檔案系統中。這些方法對於操作單個檔案來說都挺方便的,但是如果你需要一次性安裝多個軟體或是庫檔案時,那麼最為方便的方法大概就是使用update.zip(也就是刷機包)檔案了。Android系統使用恢複工具(recovery)來安裝這個update.zip檔案中的軟體或庫檔案到Android檔案系統中。而一個ROM或是主題開發人員通常都是使用這個方式來發布他們的作品(刷機包)。
建立一個update.zip檔案是很簡單的事情,你所需要做的就是將檔案放置到與Android檔案系統中相對應的檔案夾中,然後編寫一個用來複製這些檔案到手機對應位置的update-script檔案。作為舉例,本文會安裝Calculator.apk到system/app檔案夾,複製libsec-ril.so檔案到system/lib檔案夾:
建立一個空檔案夾(本文例:C:\goapk)

建立用來放置Calculator.apk的檔案夾C:\goapk\system\app以及用來放置libsec-ril.so的檔案夾C:\goapk\system\lib。

建立用來放置update-script檔案的檔案夾C:\goapk\META-INF\com\google\android。

建立一個名為update-script的檔案,其內容如下(高亮部分):

1 show_progress 0.1 0
2
3 copy_dir PACKAGE:system SYSTEM:
4
5 show_progress 0.1 10
6

行1和行5:顯示進度條
行3:複製刷機包中的system檔案夾到Android的/system
注意:你應該在檔案的最末尾多添加一個空行(也就是行6)

將C:\goapk壓縮中的所有內容壓縮為zip包(千萬記住:是壓縮goapk這個檔案夾中的內容,不是goapk檔案夾本身)

為goapk.zip簽名
簽名命令:java -jar signapk.jar certificate.pem key.pk8 goapk.zip update.zip
注意:你可以在這個文章中找到為刷機包簽名的教程和工具

將update.zip檔案複製到SD卡中,然後手機進入recovery介面來刷入這個刷機包

進階學習:(以下僅作參考,因實際情況不同,可能會有一定的出入。但是極度推薦學習本部分)
update-script 文法參考(在Android源碼的recovery.c檔案中定義):

copy_dir
文法:copy_dir <來源目錄> <目標目錄> [<時間戳記>]
描述:複製<來源目錄>中的內容到<目標目錄>中。如果<來源目錄>中沒有同名檔案進行覆蓋,那麼<目標目錄>中的原始內容會仍然存在不變。
樣本:copy_dir PACKAGE:system SYSTEM:,這個命令會把刷機包中的system檔案夾複製到手機的/system檔案夾中

format
文法:format <根目錄>
描述:格式化一個分區。
樣本:format SYSTEM:,這個命令會格式化整個/system。注意:格式化時所進行的資料刪除操作是無法復原轉的。

delete
文法:delete <檔案1> [... <檔案N>]
描述:刪除檔案。
樣本:delete SYSTEM:app/Calculator.apk,這個命令會刪除手機system/app檔案夾中的Calculator.apk檔案。

delete_recursive
文法:delete_recursive <檔案或目錄1> [... <檔案或目錄N>]
描述:刪除一個檔案或遞迴刪除某個檔案夾(也就是包括該檔案夾中的所有內容)
樣本:delete_recursive DATA:dalvik-cache,這個命令會刪除/data/dalvik-cache檔案夾以及該檔案夾中的所有內容。

run_program
文法:run_program <執行程式> [<參數> ...]
描述:運行一個刷機包中的外部程式。
樣本:run_program PACKAGE:install_busybox.sh,這個命令會執行刷機包中的install_busybox.sh指令碼(命令列)。

set_perm(本命令中涉及的數值,如有疑惑,請自行Google。uid=user id,gid=group id)
文法:set_perm <uid> <gid> <屬性> <路徑> [... <路徑N>]
描述:設定某個檔案或是指定的整個分類樹的所有者和許可權,就像是一個‘chmod’、‘chown’、以及‘chgrp’命令的集合體。
樣本:set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh,這個命令會設定手機上system分區中etc/init.goldfish.sh檔案的使用者組為:shell;使用者為:root;許可權為:所有者以及所屬使用者群組成員可以進行讀取和執行操作,其他使用者無操作許可權。

set_perm_recursive(本命令中涉及的數值,如有疑惑,請自行Google。uid=user id,gid=group id)
文法:set_perm_recursive <uid> <gid> <檔案夾屬性> <檔案屬性> <路徑> [... <路徑N>]
描述:遞迴設定某個檔案夾中所有內容的所有者和許可權
樣本:set_perm_recursive 0 0 0755 0644 SYSTEM:app,這個命令會遞迴設定手機上system/app檔案夾以及其所有內容的使用者組為:root;使用者為:root;app檔案夾的許可權為:所有者可以進行讀、寫、執行操作,其他使用者可以進行讀取和執行操作;app檔案夾下的所有檔案的許可權為:所有者可以進行讀寫操作,其他使用者可以進行讀取操作。

show_progress
文法:show_progress <小數> <期間>
描述:為下一個操作在螢幕上顯示一個進度條,自動的根據<期間>指定的秒數來遞增進度條狀態(如果實際上進度條的推進是可以確定的,那就會更加迅速)。
樣本:show_progress 0.1 0,這個命令是指,操作完成後,進度條前進0.1(10%)

symlink
文法:symlink <連結目標> <連結所在路徑>
描述:建立一個符合連結(就像是 ‘ln-s’)。<連結所在路徑>的格式類似於這樣:根目錄:路徑, 但是<連結目標>則是指目標檔案(而且位置可能是相對與連結所在路徑的)
樣本:symlink /system/bin/su SYSTEM:xbin/su,這個命令會為/system/bin/su在手機system分區的xbin檔案夾下建立一個符號連結,名為su

對於根目錄以及分區的定義(在Android原始碼的root.c檔案中定義)
根目錄: Linux 塊裝置 /掛載點/ 檔案系統 大小 描述
BOOT: /dev/mtdblock[?] / (RAM) Raw 核心、記憶體盤和引導配置。
DATA: /dev/mtdblock5 /data/ yaffs2 91904kb 使用者、系統配置,軟體配置以及軟體(沒有a2sd的話)
CACHE: /dev/mtdblock4 /cache/ yaffs2 30720kb OTA緩衝,recovery/更新配置及臨時檔案夾
MISC: /dev/mtdblock[?] N/A Raw,[?]kb (等待添加)
PACKAGE: (相對於刷機包) N/A 刷機包的偽檔案系統。
RECOVERY: /dev/mtdblock[?] / (RAM) Raw,[?]kb recovery和更新環境的核心和記憶體盤。類似於BOOT:。
SDCARD: /dev/mmcblk0(p1) /sdcard/ fat32 32MB-32GB TF卡。通常刷機包就放在這裡。
SYSTEM: /dev/mtdblock3 /system/ yaffs2 92160kb 系統磁碟分割,靜態且是唯讀。
TMP: /tmp/ (RAM) 標準的Linux臨時檔案夾 在關機/重啟時清空。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.