版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游行業(yè)智慧導(dǎo)覽與線路規(guī)劃方案
- 企業(yè)級(jí)人工智能平臺(tái)服務(wù)合同
- 企業(yè)并購(gòu)重組合作框架協(xié)議
- 健身房加盟經(jīng)營(yíng)協(xié)議
- 日化行業(yè)個(gè)人護(hù)理方案
- 三農(nóng)村居民生活成本控制方案
- 初三其期中數(shù)學(xué)試卷
- 教育行業(yè)教育金融服務(wù)方案
- 高科技智能家居安裝合作協(xié)議
- 軟件代碼評(píng)審與測(cè)試作業(yè)指導(dǎo)書(shū)
- 植物園設(shè)計(jì)規(guī)范
- 《儀器分析》課后習(xí)題答案
- 淺層氣浮的工藝原理及操作
- 醫(yī)療器械風(fēng)險(xiǎn)管理計(jì)劃
- 北京保險(xiǎn)中介行業(yè)營(yíng)銷員增員及流動(dòng)自律公約
- 深圳市建設(shè)工程施工圍擋圖集(試行版_下半部分).pdf
- 熱水器3c安全試驗(yàn)報(bào)告及第三方檢測(cè)報(bào)告dsf65mx ts tx ws wx ys yx ms
- 南洋電工GSB1A型16錠高速編織機(jī)使用說(shuō)明書(shū)
- 全國(guó)城市雕塑行業(yè)設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)
- 大管輪見(jiàn)習(xí)記錄簿范本匯總
- 園區(qū)保安隊(duì)長(zhǎng)的工作職責(zé)
評(píng)論
0/150
提交評(píng)論