Android Recovery 程式碼分析

來源:互聯網
上載者:User

關於recovery的程式碼分析,見另一篇

Android
Recoveryの程式碼分析


做個升級程式,支援SD卡、隨身碟、Flash三種路徑升級

該升級應用程式要和/recovery/sbin/下的recovery配套使用,

韌體共有boot.img,recovery.img,system.img,

其中system.img是空的,system.img打包格式要和recovery.img匹配

使用此程式:

先把librecovery.so是添加到rootfs檔案系統庫中,

再把應用程式recovery_sample添加到某目錄下,

然後執行recovery_sample就可以實現update功能

文檔包括四部分:

l update庫和應用檔案

l update使用及命令

l 輸入命令格式例子

l update/recovery介面


1、Update庫和應用檔案

檔案一:Recovery

是存在於/gingerbread/bootable/,用於產生recovery可執行檔,產生完將其拷貝到UpdateRecoveryfs/recoveryfs/sbin/目錄下

檔案二:UpdateLibSample

用於產生update應用的庫檔案librecovery.so和可執行檔recovery_sample

檔案三:UpdateRecoveryfs

用於產生recovery.img,有ramdisk和cramfs兩種格式

檔案四:UpdateRootfs

用於產生boot.img,有ramdisk和cramfs兩種格式

ramdisk 格式:
./mkbootfs recoveryfs | ./minigzip > ramdisk-recovery.img && \

./mkkrnlimg ramdisk-recovery.img recovery.img

rm ramdisk-recovery.img

Cramfs 格式:
./mkfs.cramfs -n v1.01 recoveryfs recovery.img

Boot.img和recovery.img打包格式要一致,統一為ramdisk或者cramfs

流程圖

兩種打包格式

ramdisk格式:

./mkbootfs recoveryfs | ./minigzip > ramdisk-recovery.img && \

./mkkrnlimg ramdisk-recovery.img recovery.img

rm ramdisk-recovery.img

Cramfs格式:

./mkfs.cramfs -n v1.01 recoveryfs recovery.img

2、update使用及命令

輸入 ./recovery_sample可以查看協助

==============================================================

捷徑  等效命令

2 --wipe_cache格式化cache

3 --wipe_userdata格式化使用者資料

4 --wipe_udisk格式化隨身碟資料

6 --recover_image=BACKUP:update.img恢復出廠預設值,從backup還原所有韌體

7 --update_image=SDCARD:update.img預設路徑,從SD卡根目錄下韌體update.img升級

9 --update_kernel單獨升級kernel,從SD卡update.img中取得kernel韌體

10 --update_boot單獨升級boot,從SD卡update.img中取得boot韌體

11 --update_system單獨升級system,從SD卡update.img中取得system韌體

12 --update_recovery單獨升級recovery,從SD卡update.img中取得recovery韌體

13 --update_backup單獨升級backup分區,拷貝SD卡的update.img到backup

14 --update_parameter單獨升級parameter,從SD卡update.img中取得parameter

15 --update_loader單獨升級loader,從SD卡update.img中取得loader

16 (user define path name) 手動輸入升級韌體路徑及韌體名

==============================================================

l 2-4三個功能實現單獨或者同時擦除cache userdata udisk內容

l 6 功能recover_image=BACKUP:update.img是從BACKUP分區擷取update.img,然後取出recovery-script指令碼命令並執行,還原韌體

l 9-15七個功能分別實現升級kernel、boot、system、recovery、backup、parameter和loader,如果沒有指定升級韌體路徑和名稱,預設是SDCARD:update.img。

l 16 功能是自訂升級韌體的路徑和名稱

3、輸入命令格式例子

Ø 格式化cache

./recovery_sample 2

Ø 從backup還原所有韌體

./recovery_sample 6

Ø 格式化和升級混合,用空格隔開

./recovery_sample 2 3 4 12

Ø 手動輸入升級命令,自訂升級韌體路徑和名稱

./recovery_sample --update_image=BACKUP:update.img
./recovery_sample --update_image=SDCARD:/rockchip/rkdroid.img 9
./recovery_sample --update_image=CACHE:/cache/update.img 9 14 

./recovery_sample --update_image=uDisk:update.img 11

注意,在從mtd分區升級之前需要把分區mount到某個檔案,然後把韌體拷貝到這個檔案目錄下

10個MTD分區對應名字和資訊如下:

#cat proc/mtd

dev:    size   erasesize  name

mtd0: 00400000 00001000 "misc"

mtd1: 00800000 00001000 "kernel"

mtd2: 00400000 00001000 "boot"

mtd3: 00800000 00001000 "recovery"

mtd4: 10000000 00001000 "system"

mtd5: 10400000 00001000 "backup"

mtd6: 07400000 00001000 "cache"

mtd7: 10000000 00001000 "userdata"

mtd8: 00400000 00001000 "kpanic"

mtd9: 3dd00000 00001000 "user"

例如從cache升級,需要把cache掛接到/dev/mtdblock6,就可以從cache升級了。

4、recovery介面說明

Reset以後按住home+power按鍵組合,可直接進入recovery/update介面。

在log中如果看到

RECOVERY key is pressed

COMBINATION key is pressed

說明將要進入recovery模式

按鍵:

說明:

vol+ 

向下,支援菜單迴圈選擇

vol - 

向上,支援菜單迴圈選擇

Play 

確認當前選擇

按鍵可以自己定義,修改gingerbread/bootable/recovery/etc/int.rc

菜單說明:

Options

名稱

Description

Reboot system now

重啟系統

立即重啟系統

Factory reset

恢復出廠預設值

1. 從backup分區擷取update.img 

2. 還原除了backup以外所有分區韌體
3. 格式化USERDATA 
4. 格式化CACHE

Update from SDCard

從SD卡升級

1. 從“update-script”擷取升級命令 

2. 從SD卡根目錄擷取升級韌體update.im
3. 升級所有韌體,除了BACKUP分區
4. 不擦除使用者資料

Update from uDisk

從隨身碟升級

1. 從“update-script”擷取升級命令 

2. 從uDisk根目錄擷取升級固update.img
3. 升級所有韌體,除了BACKUP分區
4. 不擦除使用者資料

相關文章

聯繫我們

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