SurfaceFlinger周りを見てたけど、もっと簡単に主張wできそうなboot splashの変更をやってみました。以下は、わすれっぽい自分のための記録。
基本的には、videoドライバ周りのコードでgoogleのsplashを表示している部分を書き換える方法をとる。gitからNexus Sのkernelをダウンロードして展開しておく。
画像作成はGIMPがおすすめ、RGB24フォーマットをCのヘッダとして書き出すことができるので便利、Ubuntuでのビルド環境があるのなら、いっしょにaptで入れておこう。ロゴを変更する方法としてはGalaxy Sでの方法があるのでここからダウンロードしてヘッダまで作成しておく。同じようにできる。
GIMPで480x800の画像を準備 画像をCのヘッダとして書き出す https://github.com/morfic/Samsung-logo.git を展開 makelogo.cppを編集してGMPで書き出したヘッダ形式の画像をincludeするように修正 g++ -o makelogo makelogo.cpp cat start_logo.h > my_logo_rgb24_wvga_portlait.h makelogo >> my_logo_rgb24_wvga_portlait.h cat end_logo.h >> my_logo_rgb24_wvga_portlait.h
drivers/video/samsung/s3cfb.c
--- xxx/s3cfb.c 2011-02-04 01:58:40.124438126 -0800
+++ yyy/s3cfb.c 2011-02-04 01:50:19.397099076 -0800
@@ -38,6 +38,7 @@
#include <linux/suspend.h>
#endif
#include "s3cfb.h"
+#include "my_logo_rgb24_wvga_portrait.h"
struct s3c_platform_fb *to_fb_plat(struct device *dev)
{
@@ -96,8 +97,7 @@
logo_virt_buf = ioremap_nocache(bootloaderfb,
fb->var.yres * fb->fix.line_length);
- memcpy(fb->screen_base, logo_virt_buf,
- fb->var.yres * fb->fix.line_length);
+ memcpy(fb->screen_base, LOGO_RGB24, fb->var.yres * fb->fix.line_length);
iounmap(logo_virt_buf);
}
return 0;
コードを修正したらビルドして、mkbootimgでboot.imgを作成する。fastboot boot newlogoboot.img
などとしてテスト。OKなら書き込む。注意するべきは、codeにtouchしてしまっているのでdirtyフラグが立ってしまう。ここまでcodeにtouchしていなかったのであれば、moduleは今回作成されたものに入れ替えよう。version magicの不一致でロードされないので。
googleのロゴを完全に消すのはよくわからないので今回パスw。
起動ロゴはこんな感じでNintendo風。
1 コメント:
Sorry but it dint work....What should i do...???
コメントを投稿