linux 编译system.img,android生成sysytem.img的命令过程

From

http://xianghuaclm.blog.163.com/blog/static/6668783201110221486240/

使用#file system.img

输出:system.img: Linux rev 0.0 ext2 filesystem data,

UUID=4eb0489c-647d-49d8-9111-94657b5fd342, volume name

"system"。

然而本人使用命令#mkyaffs2image system/ system.img,

再使用#file system.img,却输出:system.img: VMS Alpha executable

前一个system.img文件时可用的,而使用mkyaffs2image命令生成的system.img却不能使用(将ramdisk.img,system.img,install.img等打包成iso文件,用virtualbox运行)。

谁 清楚android编译系统是用什么命令生成system.img的?本人使用#make

systemimage命令,只显示出如下信息: Install system fs image:

out/target/product/eeepc/system.img

out/host/linux-x86/bin/acp -fpt

out/target/product/eeepc/obj/PACKAGING /systemimage_unopt_intermediates/system.img

out/target/product/eeepc/system.img

true

没能查到是哪个脚本生成的system.img

根据这个网址http://blog.csdn.net/liaoshengji

... /03/04/3957749.aspx,

1.执行#make showcommands snod

2.得出android制作system.img命令为:

#!/bin/bash

export PATH="/home/tony/tmp/e2fsprogs-1.41.3/prefix/sbin:$PATH"

num_blocks=`du -sk out/target/product/eeepc/system | tail -n1 |

awk '{print $1;}'`

if [ $num_blocks -lt 20480 ]; then

extra_blocks=3072;

else

extra_blocks=20480;

fi

num_blocks=`expr $num_blocks + $extra_blocks`

num_inodes=`find out/target/product/eeepc/system | wc -l`

num_inodes=`expr $num_inodes + 500`

out/host/linux-x86/bin/genext2fs -a -d

out/target/product/eeepc/system -b $num_blocks -N $num_inodes -m 0

out/target/product/eeepc/system.img

tune2fs -L system out/target/product/eeepc/system.img

tune2fs -C 1 out/target/product/eeepc/system.img

e2fsck -fy out/target/product/eeepc/system.img

一.android2.3系统的generic文件系统生成命令:

out/host/linux-x86/bin/mkyaffs2image -f out/target/product/generic/system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img

chmod a+r

out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img

Install system fs image:

out/target/product/generic/system.img

out/host/linux-x86/bin/acp -fpt

out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img

out/target/product/generic/system.img

true

out/host/linux-x86/bin/mkbootfs

out/target/product/generic/root | out/host/linux-x86/bin/minigzip

> out/target/product/generic/ramdisk.img

out/host/linux-x86/bin/mkyaffs2image -f out/target/product/generic/data

out/target/product/generic/userdata.img

chmod a+r

out/target/product/generic/userdata.imgtrue

二.android2.2系统的MID文件系统生成命令:

file out/target/product/mid/system.img

out/target/product/mid/system.img: u-boot legacy uImage, Android,

Linux/ARM, Filesystem Image (any type) (Not compressed), 143233024

bytes, Tue Nov 22 10:48:07 2011, Load Address: 0x40008000, Entry

Point: 0x40008000, Header CRC: 0x6D462E1C, Data CRC: 0xE1876EFF

file sys.img

sys.img: Linux rev 1.0 ext3 filesystem data,

UUID=2c363e3e-f731-4800-9553-a0613a1264eb, volume name "system

dd if=system.img of=sys.img bs=64 skip=1

sudo mount -t ext3 -o loop sys.img mnt

修改

sudo umount mnt

./rcmkimage sys.img system.img(./mkimage -A arm -O linux -C none

-T filesystem -a 1 -e 1 -n "system.img" -d $1 $2)

make showcommands

Target system fs image:

out/target/product/mid/obj/PACKAGING/systemimage_unopt_intermediates/system.img

Target system fs image: ext2image

out/target/product/mid/system/framework

if [ -f

out/target/product/mid/system/framework/framework-res-TG.apk ];

then mv

out/target/product/mid/system/framework/framework-res-TG.apk

out/target/product/mid/system/framework/framework-res.apk; fi

num_blocks=`du -sk out/target/product/mid/system | tail -n1 | awk

'{print $1;}'`; if [ $num_blocks -lt 20480 ]; then

extra_blocks=3072; else extra_blocks=20480; fi ; num_blocks=`expr

$num_blocks + $extra_blocks` ; num_inodes=`find

out/target/product/mid/system | wc -l` ; num_inodes=`expr

$num_inodes + 500`;

out/host/linux-x86/bin/genext2fs -a

-d out/target/product/mid/system -b $num_blocks -N $num_inodes -m 0

out/target/product/mid/obj/PACKAGING/systemimage_unopt_intermediates/system.img

tune2fs -L system

out/target/product/mid/obj/PACKAGING/systemimage_unopt_intermediates/system.img

tune2fs 1.41.14 (22-Dec-2010)

tune2fs -C 1

out/target/product/mid/obj/PACKAGING/systemimage_unopt_intermediates/system.img

tune2fs 1.41.14 (22-Dec-2010)

Setting current mount count to 1

e2fsck -fy

out/target/product/mid/obj/PACKAGING/systemimage_unopt_intermediates/system.img

; [ $? -lt 4 ]e2fsck 1.41.14

(22-Dec-2010)

文件系统 did not have a UUID; generating one.

第一步: 检查inode,块,和大小

第二步: 检查目录结构

第3步: 检查目录连接性

/lost+found未找到.创建? 是

Pass 4: Checking reference counts

第5步: 检查簇概要信息

system: ***** 文件系统已修改 *****

system: 648/1152 files (1.7% non-contiguous), 119292/139876

blocks

Install system fs image: out/target/product/mid/system.img

out/host/linux-x86/bin/acp -fpt

out/target/product/mid/obj/PACKAGING/systemimage_unopt_intermediates/system.img

out/target/product/mid/system.img

true

Generate system.img for iNAND

mv out/target/product/mid/system.img

out/target/product/mid/system.img.ext3

tune2fs -j

out/target/product/mid/system.img.ext3

tune2fs 1.41.14 (22-Dec-2010)

Creating journal inode: 完成

This filesystem will be automatically checked every 20 mounts

or

0 days, whichever comes first. Use tune2fs -c or

-i to override.

out/host/linux-x86/bin/mkimage -A arm

-O linux -T filesystem -C

none \

-a 40008000 -n "Android" -d out/target/product/mid/system.img.ext3

out/target/product/mid/system.imgImage

Name: Android

Created: Tue Nov 22 11:05:21 2011

Image Type: ARM Linux

Filesystem Image (uncompressed)

Data Size: 143233024 Bytes = 139876.00 kB = 136.60 MB

Load Address: 40008000

Entry Point: 40008000

gzip -9

out/target/product/mid/system.img.ext3

out/host/linux-x86/bin/mkimage -A arm

-O linux -T filesystem -C

none \

-a 40008000 -n "zAndroid" -d

out/target/product/mid/system.img.ext3.gz

out/target/product/mid/zSYS.img

Image Name: zAndroid

Created: Tue Nov 22 11:05:34 2011

Image Type: ARM Linux

Filesystem Image (uncompressed)

Data Size: 80767125 Bytes = 78874.15 kB = 77.03 MB

Load Address: 40008000

Entry Point: 40008000

rm -f out/target/product/mid/system.img.ext3.gz

out/host/linux-x86/bin/mkbootfs out/target/product/mid/root |

out/host/linux-x86/bin/minigzip >

out/target/product/mid/ramdisk.img

mv out/target/product/mid/ramdisk.img

out/target/product/mid/ramdisk.img.ori

out/host/linux-x86/bin/mkimage -A arm -O linux -T ramdisk \

-C none -a 0x41000000 -n "hRamdisk" -d

out/target/product/mid/ramdisk.img.ori

out/target/product/mid/ramdisk.img

Image Name: hRamdisk

Created: Tue Nov 22 11:05:35 2011

Image Type: ARM Linux RAMDisk

Image (uncompressed)

Data Size: 170001 Bytes = 166.02 kB = 0.16 MB

Load Address: 41000000

Entry Point: 41000000

Installed file list:

out/target/product/mid/installed-files.txt

build/tools/fileslist.py out/target/product/mid/system

out/target/product/mid/data >

out/target/product/mid/installed-files.txt

三.相关命令使用说明:

genext2fs:

out/host/linux-x86/bin/genext2fs --help

Usage: out/host/linux-x86/bin/genext2fs [options] image

Create an ext2 filesystem image from directories/files

-x, --starting-image

-d, --root

-D, --devtable

-b, --size-in-blocks

-i, --bytes-per-inode

-N, --number-of-inodes

-m, --reserved-percentage

-g, --block-map

Generate a block map file for this path.

-e, --fill-value

Fill unallocated blocks with

value.

-z,

--allow-holes Allow files with holes.

-f,

--faketime Set filesystem timestamps to 0 (for testing).

-q,

--squash Same as "-U -P".

-U,

--squash-uids Squash owners making all files be owned by root.

-P,

--squash-perms Squash permissions on all files.

-a,

--fix-android-stats Fix-up file stats (user, perms, ...)

-h, --help

-V, --version

-v, --verbose

tune2fs :

tune2fs

tune2fs 1.41.14 (22-Dec-2010)

Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-g

group]

[-i interval[d|m|w]] [-j] [-J journal_options] [-l]

[-m reserved_blocks_percent] [-o [^]mount_options[,...]]

[-r reserved_blocks_count] [-u user] [-C mount_count] [-L

volume_label]

[-M last_mounted_dir] [-O [^]feature[,...]]

[-E extended-option[,...]] [-T last_check_time] [-U UUID]

[ -I new_inode_size ] device

一.简介:

调整/查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。

二.用法:

tune2fs [ -l ] [ -c max-mount-counts ] [ -e errors-behavior ] [

-f ] [ -i interval-between-checks ] [ -j ] [ -J journal-options ] [

-m

reserved-blocks-percentage ] [ -o [^]mount-options[,...] ] [ -r

reserved-blocks-count ] [ -s sparse-super-flag ] [ -u user ] [

-g

group ] [ -C mount-count ] [ -L volume-name ] [ -M

last-mounted-directory ] [ -O [^]feature[,...] ] [ -T

time-last-checked ] [ -U

UUID ] device

常用选项说明:

-l 查看文件系统信息

-c max-mount-counts 设置强制自检的挂载次数,如果开启,每挂载一次mount

conut就会加1,超过次数就会强制自检

-i interval-between-checks[d|m|w] 设置强制自检的时间间隔[d天m月w周]

-m reserved-blocks-percentage 保留块的百分比

-j 将ext2文件系统转换为ext3类型的文件系统

-L volume-label 类似e2label的功能,可以修改文件系统的标签

-r reserved-blocks-count 调整系统保留空间

-o [^]mount-option[,...] Set or clear the indicated default mount

options in the filesystem. 设置或清除默认挂载的文件系统选项

三.示例:

tune2fs -c 30 /dev/hda1 设置强制检查前文件系统可以挂载的次数

tune2fs -c -l /dev/hda1 关闭强制检查挂载次数限制。

tune2fs -i 10 /dev/hda1 10天后检查

tune2fs -i 1d /dev/hda1 1天后检查

tune2fs -i 3w /dev/hda1 3周后检查

tune2fs -i 6m /dev/hda1 半年后检查

tune2fs -i 0 /dev/hda1 禁用时间检查

tune2fs -j /dev/hda1 添加日志功能,将ext2转换成ext3文件系统

tune2fs -r 40000 /dev/hda1 调整/dev/hda1分区的保留空间为40000个磁盘块

tune2fs -o acl,user_xattr /dev/hda1 设置/dev/hda1挂载选项,启用Posix

Access Control Lists和用户指定的扩展属性

e2fsck :

e2fsck

Usage: e2fsck [-panyrcdfvtDFV] [-b superblock] [-B blocksize]

[-I inode_buffer_blocks] [-P process_inode_size]

[-l|-L bad_blocks_file] [-C fd] [-j external_journal]

[-E extended-options] device

Emergency help:

-p Automatic repair (no questions)

-n Make no changes to the filesystem

-y Assume "yes" to all questions

-c Check for bad blocks and add them to the badblock list

-f Force checking even if filesystem is marked clean

-v Be verbose

-b

superblock Use alternative superblock

-B

blocksize Force blocksize when looking for superblock

-j external_journal Set

location of the external journal

-l

bad_blocks_file Add to

badblocks list

-L

bad_blocks_file Set badblocks

list

e2fsck(ext2

file system

check)

功能说明:检查ext2文件系统的正确性。

语法:e2fsck [-acCdfFnprsStvVy][-b

<

href="http://www.linuxso.com/command/su.html">superblock>][-B

][-l ][-L ][设备名称]

补充说明:e2fsck执行后的传回值及代表意义如下。

0 没有任何错误发生。

1 文件系统发生错误,并且已经修正。

2 文件系统发生错误,并且已经修正。

4 文件系统发生错误,但没有修正。

8 运作时发生错误。

16 使用的语法发生错误。

128 共享的函数库发生错误。

参数:

-a 不询问使用者意见,便自动修复文件系统。

-b 指定superblock,而不使用预设的superblock。

-B 指定区块的大小,单位为字节。

-c 一并执行badblocks,以标示损坏的区块。

-C 将检查过程的信息完整记录在file

descriptor中,使得整个检查过程都能完整监控。

-d 显示排错信息。

-f 即使文件系统没有错误迹象,仍强制地检查正确性。

-F 执行前先清除设备的缓冲区。

-l 将文件中指定的区块加到损坏区块列表。

-L 先清除损坏区块列表,再将文件中指定的区块加到损坏区块列表。因此损坏区块列表的区块跟文件中指定的区块是一样的。

-n 以只读模式开启文件系统,并采取非互动方式执行,所有的问题对话均设置以"no"回答。

-p 不询问使用者意见,便自动修复文件系统。

-r 此参数只为了兼容性而存在,并无实际作用。

-s 如果文件系统的字节顺序不适当,就交换字节顺序,否则不做任何动作。

-S 不管文件系统的字节顺序,一律交换字节顺序。

-t 显示时间信息。

-v 执行时显示详细的信息。

-V 显示版本信息。

-y 采取非互动方式执行,所有的问题均设置以"yes"回答。

acp :

out/host/linux-x86/bin/acp -?

out/host/linux-x86/bin/acp: invalid option -- '?'

Unexpected arg -?

Usage: acp [OPTION]... SOURCE DEST

or: acp [OPTION]... SOURCE...

DIRECTORY

Options:

-d never follow (dereference)

symbolic links

-e if source file doesn't

exist, try adding '.exe' [Win32 only]

-f use force, removing

existing file if it's not writeable

-p preserve mode,

ownership

-r recursive copy

-t preserve timestamps

-u update only: don't copy if

dest is newer

-v verbose output (-vv is more

verbose)

mkimage --help

Usage: mkimage -l image

-l ==> list image header information

mkimage [-x] -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'

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

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

-C ==> set compression type 'comp'

-a ==> set load address to 'addr' (hex)

-e ==> set entry point to 'ep' (hex)

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

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

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

mkimage [-D dtc_options] -f fit-image.its fit-image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive的hiveserver2后台开启和关闭

前提&#xff1a;hive/bin配置了环境变量。如果没有配置&#xff0c;cd到 hive目录下的bin里&#xff0c;再执行。 开启命令&#xff1a; nohup hive --service hiveserver2 & 产生的日志&#xff1a; 默认在&#xff1a; 用户文件夹里 [rootmaster ~]# ll total 80 …

记一次,jvm 内存溢出

1、什么是内存泄漏内存泄漏是指&#xff0c;有未被释放的java对象&#xff0c;一直停留在内存中。GCRoot 无法追踪到此对象&#xff0c;导致此对象无法被回收。 2、什么是内存溢出内存溢出是指&#xff0c;java程序创建对象需要内存&#xff0c;但是却没有内存可用了&#xff0…

ebnf范式_使用Scala基于词法单元的解析器定制EBNF范式文法解析

前言近期在做Oracle迁移到Spark平台的项目上遇到了一些平台公式翻译为SparkSQL(on Hive)的需求&#xff0c;而Spark采用亲妈语言Scala进行开发。下面是个意外&#xff0c;被论文查重了,移步至我的Leanote博客查看点我&#xff0c;先乱码一段时间[分后&#xff0c;拟使中的EB式&…

钻石指标和完美的计算

钻石的高度计算公式为&#xff1a;钻石的高度直径的三次方&#xff08;单位毫米&#xff09;0.00366(允许有0.03克拉的误差)例如&#xff0c;0.5克拉的钻石直径是5.01毫米&#xff0c;则它的高为&#xff1a;5.01*5.01*5.01*0.003660.46说明0.5克拉的钻石直径只有0.46克拉钻石的…

linux开机自动ZFS,linux – 为什么重新启动导致我的ZFS镜像的一面成为UNAVAIL?

我最近刚刚将批量数据存储池(ZFS OnLinux 0.6.2,Debian Wheezy)从单设备vdev配置迁移到双向镜像vdev配置.之前的池配置是&#xff1a;NAME STATE READ WRITE CKSUMakita ONLINE 0 0 0ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0在重新启动完成后一切都很好(我在重新启动完成后启动了一…

华为交换机默认vlan都是通的吗_【思唯网络学院】华为交换机常用的三种vlan划分方法...

端口类型在学习划分vlan前&#xff0c;必须要了解华为交换机的端口类型&#xff0c;以及他们的使用方法&#xff0c;因为端口的类型在实际配置中是必须会用到的&#xff0c;因为下面的vlan划分会用到。1、Access类型端口执行命令port default vlan vlan-id&#xff0c;将端口加…

Spark应用日志级别设置

Spark-core包设置默认的日志级别为info&#xff0c;所以我们才看到一大堆日志信息。 开发的时候&#xff0c;把print的日志掩盖了。 方法一&#xff1a; 代码中设置日志级别 JavaSparkContext contextnew JavaSparkContext(conf); context.setLogLevel("warn"); 方…

linux 恢复操作系统,如何恢复Linux操作系统的GRUB引导程?

先使用一张修复盘进入grub&#xff0c;或者利用其他linux恢复盘等等进入linux系统&#xff0c;然后进入grub控制台。总之就是想尽办法进入一个控制台就是了。然后准备引导进入硬盘上的Linux系统。如下&#xff1a;  grub> root (hd0,10)  grub> kernel /boot/vmlinuz…

Centos 7初始化脚本

今天跟大家分享一个我自己写的Linux初始化脚本&#xff0c;自认为写的不是很好。希望看到这篇文章的你&#xff0c;能暂时停留下你的脚步&#xff0c;给些修改意见&#xff0c;或者有什么需要补充的地方都可以提出来&#xff0c;大家共同进步&#xff0c;谢谢&#xff01;此脚本…

Hive-sql与SQL的区别

总体一致&#xff1a; Hive-sql与SQL基本上一样&#xff0c;因为当初的设计目的&#xff0c;就是让会SQL不会编程MapReduce的也能使用Hadoop进行处理数据。 因此&#xff0c;大胆使用SQL的&#xff0c;如果遇到不对的&#xff0c;再查。 区别&#xff1a; Hive没有delete和u…

python闰年多一天_记一个 python datetime 闰年问题

python中datetime是比较常用的&#xff0c;平时用起来也没什么问题&#xff0c;但是今天2020年2月29日服务器却开始报错了&#xff0c;这里有个平时难以注意的坑服务器上跑的是新浪网的爬虫&#xff0c;抓取的页面信息中带有日期 XX月XX日&#xff0c;需要strfptime转化一下&am…

linux find 按类型查找,Linux find查找find命令详解

玩蛇网推荐图文教程&#xff1a;python 列表Linux命令有很多&#xff0c;今天要介绍的是常用的基础命令中的find命令。find是Linux系统管理员所喜爱用的必备工具命令之一&#xff0c;它的作用是可以很轻松地找到你想要的文件&#xff0c;一个命令就可以在众多文件中找到你的目标…

window安装gcc编译器

在使用 GraphLab Create 时&#xff0c;导入包失败&#xff0c;提示libs没有的导入&#xff0c;而这些libs的编译是需要gcc。 1、访问&#xff1a;http://www.mingw.org/ 下载。 2、双击安装 3、安装好后会弹出下面的组件安装界面 3、找到mingw32-gcc-g&#xff08;注意cl…

视频AI,助力体育赛事转播走进智能时代

摘要&#xff1a;2018俄罗斯世界杯经过近20天的激战&#xff0c;已经进入到最关键的阶段。本次赛事除了精彩纷呈的比赛之外&#xff0c;还加入很多高科技的元素&#xff0c;例如门线、VAR技术等等。让本届世界杯成为科技含量最高的一届世界杯。2018俄罗斯世界杯经过近20天的激战…

python求同构数_用c语言求1到1000的同构数_后端开发

python与平台有关吗_后端开发Python与平台无关&#xff0c;因为Python是跨平台的语言&#xff0c;Python作为脚本语言&#xff0c;是解释执行的&#xff0c;所以能跨平台&#xff0c;前提是必须要有一个对应的解释器。具体请看实例&#xff1a;python中count函数的用法详解_后端…

element表格实现树形全选_很实用!word中全选的快捷键介绍及使用方法

全选快捷键可以提高我们在操作word时工作效率&#xff0c;在操作Word2003中怎么对文档中的文字进行全选呢?下面为大家提供几种全选的方法&#xff0c;绝对好用。Word怎样全选?方法一、使用Word全选快捷键“CtrlA”进行全选(也适用于电子表格);方法二、展开菜单栏中的“编辑”…

am3352 linux 内核 编译,am335x uboot, kernel 编译

一、设置环境变量// 写在家目录下面的 .bashrc 里面export KERNEL_PATH~/aplex/kernel3.2.0 // kernel 路径export UBOOT_PATH~/aplex/uboot2011.09 // u-boot 路劲export ROOTFS_PATH~/aplex/filesystemexport TOOLFS_PATH~/aplex/toolsexport ARCHarm // 设置平台类型export …

Docker的应用场景

原文链接&#xff1a;http://blog.csdn.net/dev_csdn/article/details/78424803 ------------------------------------------------------------------- Docker是开发人员和系统管理员构建&#xff0c;发布和运行分布式应用程序的开放平台&#xff0c;可以在笔记本电脑、数据…

cad多段线画圆弧方向_【学员分享】CAD多段线用法

原标题&#xff1a;【学员分享】CAD多段线用法1、执行方法&#xff1a;(1)菜单栏&#xff1a;绘图→多段线(2)绘图功能区&#xff1a;绘图→多段线按钮(3)快捷键&#xff1a;PL2、使用方法(1)多段线与直线的区别&#xff1a;直线每一段都是分开的&#xff0c;图画完后不是一个整…

linux 视频编辑 ffmpeg,ffmpeg转码视频真的好用!(ffmpeg的简单使用方法)

说明转码和编辑视频今天用Android Studio(后面简称AS)里的模拟器给系统录屏&#xff0c;用来展示OpenGL可视化的东西&#xff0c;打算上传B站&#xff0c;后来发现AS只能保存webm格式和GIF格式的视频&#xff0c;并且文件体积巨大&#xff0c;视频图像也是顺时针旋转的。没办法…