image 打包命令

2021-06-12 19:16:27 字數 3274 閱讀 2694

小記:

ramdisk.img ramdisk-uboot.img打包

cd out/target/product/***x

../../../host/linux-x86/bin/mkbootfs root/ | ../../../host/linux-x86/bin/minigzip > ramdisk.img

mkimage -a arm -o linux -t ramdisk -c none -a 0x40800000 -n "ramdisk" -d ramdisk.img ramdisk-uboot.img

這樣你可以修改root下面的檔案,然後打包成ramdisk,通過fastboot flash ramdisk ramdisk-uboot.img 燒入裝置。

檢視幫助資訊mkimage -h:

usage: 

./mkimage -l image

-l ==> list image header information 映象頭資訊(0x40個位元組的頭)

./mkimage -a arch -o os -t type -c comp -a addr -e ep -n name -d data_file[:data_file...] image

-a ==> set architecture to 'arch'

指定cpu的體系結構,取值 表示的體系結構:

alpha alpha 

arm a rm 

x86 intel x86

ia64 ia64

mips mips

mips64 mips 64 bit

ppc powerpc

s390 ibm s390

sh superh

sparc sparc

sparc64 sparc 64 bit

m68k mc68000

-o ==> set operating system to 'os'

指定作業系統型別,可以取以下值:

openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、

solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、

u-boot、rtems、artos

-t ==> set image type to 'type'  

指定映象型別,可以取以下值:

standalone、kernel、ramdisk、multi、firmware、script、filesystem

-c ==> set compression type 'comp'  

指定映象壓縮方式,可以取以下值:

none 不壓縮

gzip 用gzip的壓縮方式

bzip2 用bzip2的壓縮方式

-e ==> set entry point to 'ep' (hex)          指定映象執行的入口點位址,就是-a引數指定的值加上0x40

因為前面有個mkimage新增的0x40個位元組的頭

-n ==> set image name to 'name'                

指定映象名

-d ==> use image data from 'datafile'       

指定製作映象的原始檔

-x ==> set xip (execute in place)   

即晶元內執行,指應用程式可以直接在flash快閃儲存器內執行

備註:ramdisk解包

首先在linux終端下使用命令file ramdisk.img,列印出如下字元ramdisk.img: gzip compressed data, from unix,可以看出,它是乙個gzip壓縮的格式,下面對其進行解壓,使用fedora自帶的工具進行解壓,或者使用gunzip進行解壓(可能需要將副檔名改為.gz),可以看到解壓出乙個新的ramdisk.img,這個ramdisk.img是使用cpio壓縮的,可以使用cpio命令對其進行解壓,cpio –i –f ramdisk.img,解壓後可以看到生成了一些資料夾和檔案。看到這些檔案就會明白,它和root目錄下的內容完全一樣。說明了ramdisk.img其實是對root目錄的打包和壓縮。

system.img打包

使用mkyaffs2image或者make_ext4fs 根據build/core/makefile裡面的internal_userimages_use_ext標誌位決定。(其他版本的makefile可能不一樣,標誌位應該也不一樣。)

mkyaffs2image參考網上的:

../../../host/linux-x86/bin/mkyaffs2image  system system.img

如果加入引數  -f fix file stat for devices,理論上用於修改檔案狀態而已,無法用於新增檔案。

make_ext4fs,製作ext4 檔案系統:

在build/core/makefile裡面,找到build-systemimage-target,加入個echo 「***************」用於定位,然後

全編譯一遍,根據輸出的**********====你就可以知道系統打包system.img所用的引數了,當然如果整個系統都是你負責,那引數你肯定知道啦。

我這邊是

make_ext4fs -s -l 314572800 -a system out/target/product/mid_c1002/obj/packaging/systemimage_intermediates/system.img out/target/product/mid_c1002/system

-l 是len ,應該是分割槽的大小

-a 是android的掛載點

如果使用make_ext4fs -h可以看到:

make_ext4fs [ -l ] [ -j ] [ -b ] [ -g ] [ -i ] [ -i ] [ -l ]  [ -f ] [ -a ]

注意make_ext4fs 是在編譯完原始碼後生成的,在out/host/linux-x86/bin/下面。

recovery 打包過程

如果系統是用uboot啟動,則打包是跟打包ramdisk一樣,只是位址不同。

$(mkbootfs) $(target_recoveryimage_root_out) | $(minigzip)  > $(recovery_ramdisk)

mkimage -a arm -o linux -t ramdisk -c none -a 0x30800000 -n "ramdisk" -d $(ramdisk_recovery) $(recovery_ramdisk_uboot)

Linux基礎命令 e2image

e2image e2image程式將位於裝置上的ext2 ext3或ext4檔案系統元資料儲存到由影象檔案指定的檔案中。通過對這些程式使用 i選項,image檔案可以由dupe2fs和偵錯程式來檢查。這可以幫助專家恢復嚴重損壞的檔案系統。如果image檔案是 那麼e2image的輸出將被傳送到標準輸...

Jar命令打包

假如目錄結構如下所示,現在需要對classes下的所有包下的檔案打包。manifest.mf reference1.jar reference2.jar classes com sina lis test1.class test2.class jar cvmf test.jar manifest.m...

Linux tar打包命令

範例一 將整個 etc 目錄下的檔案全部打包成為 tmp etc.tar root linux tar cvf tmp etc.tar etc 僅打包,不壓縮!root linux tar zcvf tmp etc.tar.gz etc 打包後,以 gzip 壓縮 root linux tar jc...