IMX6怎么移植最新Android,[IMX6Q][Android5.1]移植筆記 --- 無法掛載system文件系統

platform: imx6q

os: Android5.1

branch: l5.1.1_2.1.0-ga

編譯好system image之后開機提示如下log,注意紅色部分:

Freeing unused kernel memory: 432K (c0be3000 - c0c4f000)

usb 1-1: USB disconnect, device number 2

Console: switching to colour dummy device 80x30

EXT4-fs (mmcblk2p5): VFS: Can't find ext4 filesystem

fs_mgr: __mount(source=/dev/block/mmcblk2p5,target=/system,type=ext4)=-1

fs_mgr: Failed to mount an un-encryptable or wiped partition on/dev/block/mmcblk2p5 at /system options: barrier=1 error: Invalid argument

fs_mgr: __mount(source=/dev/block/mmcblk2p4,target=/data,type=ext4)=-1

fs_mgr: fs_mgr_mount_all(): possibly an encryptable blkdev /dev/block/mmcblk2p4 for mount /data type ext4 )

fs_mgr: __mount(source=/dev/block/mmcblk2p6,target=/cache,type=ext4)=-1

fs_mgr: Failed to mount an un-encryptable or wiped partition on/dev/block/mmcblk2p6 at /cache options: nomblk_io_submit error: Read-only file system

EXT4-fs (mmcblk2p7): INFO: recovery required on readonly filesystem

EXT4-fs (mmcblk2p7): write access unavailable, cannot proceed

fs_mgr: __mount(source=/dev/block/mmcblk2p7,target=/device,type=ext4)=-1

fs_mgr: Failed to mount an un-encryptable or wiped partition on/dev/block/mmcblk2p7 at /device options: (null) error: Invalid argument

init: fs_mgr_mount_all returned an error

init: fs_mgr_mount_all returned unexpected error 255

Unable to find swap-space signature

fs_mgr: swapon failed for /dev/block/zram0

......

android_usb gadget: high-speed config #1: android

android_work: sent uevent USB_STATE=CONFIGURED

binder: 153:153 transaction failed 29189, size 0-0

binder: 153:153 transaction failed 29189, size 0-0

嘗試在本地上掛載system.img也失敗,而之前的imx6dl平台是可以的,所以對比兩者system.img格式:

go

cff922881e0c70cbf816aa11dbe36967.png

發現imx6q的是data格式,這種格式也叫sparse image,是Android為了解決system image越來越大而引進的,有如下說明:

33501ff1367a8ae0bc0a8fcb534759de.png

因此我將sparse image轉換成了raw image.

[kris@ecovacs:~/myandroid/out/target/product/sabresd_6dq]$ ./../../../../out/host/linux-x86/bin/simg2img  system.img  system_raw.img

download system_raw.img后確實可以正常開機了,所以應該是freescale對sparse image還沒有完全支持。

來看看系統流程是如何編譯為sparse image的:

build/core/Makefile:

go

f346b8788282af029837d2f174b128ec.png

c3a9c6ab0b4122a48356a02fa591e1e0.png

go

b59f1ea55e5b9ac696b2df39ace854af.png

go

build/tools/releasetools/build_image.py:

go

f8a34d4ff8d254784209d3a9716cf824.png

關注其中extfs_sparse_flag來源:

go

83d3ce6bcbcdea1b3639e8676d21d69b.png

build/core/Makefile:

go

aea312575619fcf327b43d222adb5d39.png

因此最終由TARGET_USERIMAGES_SPARSE_EXT_DISABLED來控制來決定make_ext4fs是否需要帶-s參數,

它的意義是用來控制生成的是否是sparse image,然而系統定義TARGET_USERIMAGES_SPARSE_EXT_DISABLED為false,

也就是使用了-s,可以從build log中看到:

go

0bb2d19b02e2d3b05d18a4873de946fa.png

解決方法:

定義TARGET_USERIMAGES_SPARSE_EXT_DISABLED為true, 讓系統默認編譯為system raw image.

參考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值