摘自:http://hi.baidu.com/supertreeman/blog/item/f96ea8119ff3b64ff919b847.html
android有时会遇到把自己制作的initlogo.rle放入 根目录下,第一次启动能够看到图片,第2次启动就有看不了,提示没有 initlogo.rle?
- [ 30.288271] init: cannot open '/initlogo.rle'
[ 31.272972] enabling adb
[ 31.273105] Enabled => usb_mass_storage
[ 31.273141] Enabled => adb
[ 31.293419] adb_open
/ # [ 33.201290] PVR_K:(Warning): SysFinalise: Version string: SGX540 S5PC110]
[ 36.211978] s3c-nand: 1 bit error detected at byte 197, correcting from 0x66K
[ 36.554264] s3c_idma_preallocate_buffer: VA-e0940000 PA-C0000000 163840bys
[ 36.554818] asoc: WM8960 <-> s5pc1xx-i2s mapping ok
[ 37.391157] Compat-wireless backport release: compat-wireless-2011-06-28-2-FA
[ 37.391225] Backport based on linux-next.git next-20110707
[ 37.516713] cfg80211: Calling CRDA to update world regulatory domain
[ 37.605989] libertas_sdio: Libertas SDIO driver
[ 37.606037] libertas_sdio: Copyright Pierre Ossman
[ 67.960213] warning: `zygote' uses 32-bit capabilities (legacy support in us)
[ 132.503258] request_suspend_state: wakeup (3->0) at 131967833628 (2011-01-05)
[ 132.506383] init: untracked pid 57 exited
[ 132.506456] init: untracked pid 63 exited
查看代码可发现,在system/core/init/init.c [load_565rle_image] --> logo.c中 ,显示完毕initlogo.rle之后作了 unlink 操作。该操作对于android 默认的只读型system.img 是没问题,, 但对于自定义的yaffs 或者 ubi形式的可读写型的system.img时就有问题了。会造成将initlogo.rle删除,下次启动时读取不到该文件。可以通过注释掉 logo.c的load_565rle_image()中的unlink(fn)语句来规避该问题。