掛載 ubi 鏡像及反向制作_第1頁(yè)
掛載 ubi 鏡像及反向制作_第2頁(yè)
掛載 ubi 鏡像及反向制作_第3頁(yè)
掛載 ubi 鏡像及反向制作_第4頁(yè)
掛載 ubi 鏡像及反向制作_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——掛載ubi鏡像及反向制作geom.pgsz==256){

ns->options|=OPT_PAGE256;}

elseif(ns->geom.pgsz==512){

ns->options|=(OPT_PAGE512|OPT_AUTOINCR);if(ns->busw==8)

ns->options|=OPT_PAGE512_8BIT;}elseif(ns->geom.pgsz==2048){ns->options|=OPT_PAGE2048;}elseif(ns->geom.pgsz==4096){ns->options|=OPT_PAGE4096;}else{

NS_ERR(\return-EIO;}

用關(guān)鍵詞“4kpagesizenandflash“進(jìn)行g(shù)oogle,得到一篇頁(yè)大小為4KB的nandflash芯片的數(shù)據(jù)手冊(cè)。根據(jù)網(wǎng)上的描述,nandsim后面跟的4個(gè)參數(shù)是nandflash芯片的ID。于是重點(diǎn)閱讀ReadID命令,果真有發(fā)現(xiàn),正是第4個(gè)參數(shù)決定了生成的mtd設(shè)備的PEB和頁(yè)大小。

如上圖所示,假使nandsim的第4個(gè)參數(shù)為0xA6,則說(shuō)明PageSize為4KB,PEB為256KB。前三個(gè)參數(shù)不是很重要,依照手冊(cè)上默認(rèn)的即可。

于是使用下面的命令可以模擬出PageSize為4KB,PEB為256KB的mtd:

$sudomodprobenandsimfirst_id_byte=0xecsecond_id_byte=0xd3third_id_byte=0x10fourth_id_byte=0xa6

$sudocat/proc/mtd

dev:sizeerasesizename

mtd0:4000000000040000\

$mtdinfo/dev/mtd0mtd0

Name:NANDsimulatorpartition0Type:nand

Eraseblocksize:262144bytes,256.0KiB

Amountoferaseblocks:4096(1073741824bytes,1024.0MiB)Minimuminput/outputunitsize:4096bytesSubsize:1024bytesOOBsize:128bytesCharacterdevicemajor/minor:90:0Badblocksareallowed:trueDeviceiswritable:true

接下來(lái)的步驟:

將ubi與/dev/mtd0關(guān)聯(lián)$sudomodprobeubimtd=0

格式化前先解綁定

$sudoubidetach/dev/ubi_ctrl-m0

格式化

注意:這里要加上-O4096的選項(xiàng),顯式說(shuō)明UBI_VID_HDR的偏移位置是4KB,而不是默認(rèn)值。從上面mtdinfo/dev/mtd0的輸出結(jié)果中,有一項(xiàng)Subsize的選項(xiàng),假使不用-O顯示指定,默認(rèn)偏移值則是subsize。$sudoubiformat/dev/mtd0-fuserdata.img-O4096綁定

注意:依舊要顯式加上-O4096的選項(xiàng)

$sudoubiattach/dev/ubi_ctrl-m0-O4096

UBIdevicenumber0,total4096LEBs(1040187392bytes,992.0MiB),available0LEBs(0bytes),LEBsize253952bytes(248.0KiB)

輸出結(jié)果中顯示LEBsize為248KB,與我們之前計(jì)算的一致。掛載

$sudomkdir/mnt/ubi

$sudomount-tubifsubi0/mnt/ubi$ls/mnt/p

至此,掛載成功!

三,掛載分析總結(jié)要點(diǎn)

1,使用xxd分析ubi鏡像文件,得到PageSize,PEBSize,UBI_VID_HDR的偏移;2,閱讀相對(duì)應(yīng)的nandflash的數(shù)據(jù)手冊(cè),找到ReadID命令,確定nandsim的4個(gè)參數(shù)的值;

3,在使用ubiformat和ubiattach時(shí)使用-O選項(xiàng)顯示指定UBI_VID_HDR的偏移。

四,反向制作ubi鏡像

在掛載ubi鏡像成功后,我們往里面添加一些自己的文件,再重新制作回和原始鏡像兼容的鏡像。主要使用兩個(gè)命令mkfs.ubifs和unbnize,包含在mtd-utils工具集中。

1,往掛載目錄/mnt/ubi中添加自己的文件

2,mkfs.ubifs

$sudomkfs.ubifs-m4096-e253952-c4096-r/mnt/ubiubifs.img-m-MinimumI/Ounitsize.即頁(yè)大小,由前面得知為4KB。

-e-LogicalEraseBlock(LEB)size.由前面計(jì)算得為248KB,即253952。

-c-MaxLEBcount.(vol_size/LEB).通過(guò)mtdinfo/dev/mtd0輸出結(jié)果中的Amountoferaseblocks可得。-r-Path.

ubifs.img-Temporaryimagefile.

3,ubinize

首先要準(zhǔn)備一個(gè)配置文件,內(nèi)容如下,文件名為ubi.ini:

[ubi_rfs]mode=ubi

image=ubifs.imgvol_id=0

vol_size=6856704//ubifs.img的大小vol_type=dynamic

vol_name=userdata//分區(qū)卷標(biāo)名,可以隨便取,但最好與原來(lái)的鏡像保持一致vol_alignment=1vol_flags=autoresize

這里面最重要的是vol_size和image選項(xiàng),其它保持默認(rèn)即可。

然后使用下面的命令:

$sudoubinize-ouserdata.ubi-p262144-m4096-s1024-O4096ubi.ini-o-Outputfile.

-p-PhysicalEraseBlock(PEB)size.由前面分析得PEB為256KB,即262144。-m-MinimumI/Ounitsize.即頁(yè)大小4KB。

-s-MinimumI/OsizeforUBIheaders,eg.subsize.Subsize,從mtdinfo/dev/mtd0的結(jié)果中可以得知。

-O-VIDheaderoffsetfromstartofPEB.UBI_VID_HDR的偏移,由前面分析得為4KB。ubi.ini-UBIimageconfigurationfile.

至此,鏡像反向制作成功,稍候測(cè)試能否掛載成功。

五,反向制作ubi鏡像要點(diǎn)總結(jié)

1,依舊是要保證PageSize,PEBSize,LEBSize,SubSize,UBI_VID_HDR的偏移這些參數(shù)的正確性。

六,掛載反向制作的ubi鏡像1,umount

$sudoumount/mnt/ubi

2,解綁定

$sudoubidetach/dev/ubi_ctrl-m0

3,重新格式化

$sudoubiformat/dev/mtd0-fuserdata.ubi-O4096

4,綁定

$sudoubiattach/dev/ubi_ctrl-m0-O4096

5,掛載

$sudomount-tubifsubi0/mnt/ubi$ls/mnt/ubi

pself_add_file

驗(yàn)證掛載反向制作的ubi鏡像成功!

七,刪除模擬的mtd$sudoumount/mnt/ubi

$sudoubidetach/dev/ubi_ctrl-m0$sudormmodnandsim$cat/proc/mtd

八,自動(dòng)腳本

為了便利操作,寫(xiě)了以下自動(dòng)化腳本,下面會(huì)詳細(xì)講解如何使用cal_img_para.shload_nandsim.shauto_mount_ubi.shauto_make_ubi.sh

mount_system.shmount_userdata.shmake_system.shmake_userdata.sh

cal_img_para.sh

用于從得到的ubi鏡像文件中解析出關(guān)鍵的參數(shù),譬如UBI_VID_HDR_Offset,PEBSize,LEBSize,volname。例如:

$./cal_img_para.shuserdata.imgvid_hdr_offset:0001000(4KB)data_offset:00002000(8KB)PEB_size:0040000(256KB)LEB_size:3E000(248KB)vol_name:userdata

Pagesize:isnotsure,dependbyvid_hdr_offsetanddata_offset,commonly,itequalvid_hdr_offsetordata_offset

load_nandsim.sh

是mtd-utils里自帶的腳本,但自帶的腳本不能模擬生成pagesize為4KB的mtd,我做了修改。這個(gè)腳本被后面的auto_mount_ubi.sh和auto_make_ubi.sh使用。

auto_mount_ubi.sh

將ubi鏡像掛載到pc上。其內(nèi)部原理是先調(diào)用load_nandsim.sh模擬生成mtd設(shè)備,再依次調(diào)用ubiformat和ubiattach,mount等命令。需要自己提供好多參數(shù)。使用方法如下:

$sudo./auto_mount_ubi.sh

Usage:auto_mount_ubi.sh\\\\Example:

auto_mount_ubi.sh102425640964096userdata.img/mnt/ubi

$sudo./auto_mount_ubi.sh102425640964096userdata.img/mnt/ubi

LoadedNANDsimulator(1024MiB,256KiBeraseblock,4096bytesNANDpage)ubidetach:error!:cannotdetachmtd0error19(Nosuchdevice)

ubiformat:mtd0(nand),size1073741824bytes(1024.0MiB),4096eraseblocksof262144bytes(256.0KiB),min.I/Osize4096bytes

libscan:scanningeraseblock4095--100%completeubiformat:4096eraseblocksaresupposedlyemptyubiformat:flashingeraseblock28--100%completeubiformat:formattingeraseblock4095--100%complete

UBIdevicenumber0,total4096LEBs(1040187392bytes,992.0MiB),available0LEBs(0bytes),LEBsize253952bytes(248.0KiB)mkdir:無(wú)法創(chuàng)立目錄\文件已存在p

為了避免每次都輸這么多的參數(shù),因此又寫(xiě)了以下兩個(gè)腳本mount_system.shmount_userdata.sh

里面各自都只有一條調(diào)用auto_mount_ubi.sh的命令

所以只需執(zhí)行以下命令就可以自動(dòng)掛載system.img和userdata.img了。但是注意,假使你拿到了其它手機(jī)的system.img和userdata.img,是要先用cal_img_para.sh計(jì)算出相應(yīng)的參數(shù),修改這兩個(gè).sh中的參數(shù)后再執(zhí)行。$./mount_system.sh$./mount_userdata.sh

auto_make_ubi.sh

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論