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
- Warning: unable to open an initial console.
- init: cannot open '/initlogo.rle'
- sh: can't access tty; job control turned off
- # warning: `rild' uses 32-bit capabilities (legacy support in use)
- request_suspend_state: wakeup (3->0) at 37524223497 (2010-10-21 05:11:00.258831729 UTC)
查看代码可发现,在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)语句来规避该问题。