重新理清思路:
- 刷了编译出来的super.img之后camera service无法起来
- Camera service 无法起来是因为data目录没有挂载
1). data目录挂载点是/dev/block/sda5
2). 目录挂载读取的是/vendor/etc/fstab文件 - Camera service会被打包成system.img,provider相关修改有以下4个地方:
1). Manifest: /vendor/etc/vintf/manifest.xml
2). Provider binary: /vendor/bin/hw/android.hardware.camera.provider
3). shared library: /vendor/lib64/hw/camera.XXXX.so
4). Init.rc: /system/etc/init/hw/init.rc(可以通过setprop的方式临时修改,重启会失效) - 从以上可以看出,主要修改点在vendor.image
- .经lpunpack解包之后本地编译的super.img和客户提供的super.img不一样
- vendor.img通过挂载的方式,无法修改vendor.img
问题的关键在于第6点,如果能修改vendor.img一切问题就迎刃而解了。在尝试各种挂载命令之后,vendor.img依然无法修改。
思路转变一下,如果把vendor.img以只读的方式挂载之后,拷贝挂在后的目录,在新拷贝的目录下修改,最后重新打包vendor.img和super.img,或许是一种可行的方法,经多次尝试以后,按照以下步骤问题解决:
$ mkdir -p tmp/vendor_mnt
$ simg2img super.img super_raw.img
$ lpunpack super_raw.img tmp
$ cd tmp
$