読者です 読者をやめる 読者になる 読者になる

GALAXY SII WiMAX ISW11SCに焼く(2) - バックアップとkernel rebuild

Androidパティションのバックアップ

こちら@ISW11SC、IS06使用中を参考にデバイスRAMの内容をバックアップしました。

てっきりrootを取らないと完全バックアップ出来ないと思い込んでいたのですが、CWMリカバリーでバックアップさせれば、パティションをSDカードにコピーしてくれるようです。

f:id:moguriso:20120621020511j:plain

自動で /mnt/sdcard/clockworkmod/backup にデータがバックアップされます。
念の為adbで

[moguris@geozero pool]$ adb pull /mnt/sdcard/clockworkmod

としてデータを吸い上げておきます。吸い上げたデータは

[moguris@geozero 2000-01-01.00.04.15]$ tree ./
./
|-- boot.img
|-- cache.ext4.tar
|-- data.ext4.tar
|-- nandroid.md5
|-- recovery.img
`-- system.ext4.tar

0 directories, 6 files

という形で保存されます。


kernelソースの取得(au向けgalaxy s2)

au向けgalaxy s2*1のソースは、Samsung Open Source Release Centerから入手できます。
画面中断の"search"ウィンドウにISW11SCの型番 SCH-J001 を入れるとSCH-J001_GB_Opensource.zipが引っかかります。AndroidのPlatform部分とKernelを一緒に含むようです。


kernelソースの取得(tizen devphone)

ソースはreview.tizen.orgのココにあります。
RPM作成用のspecファイルを眺めると、configファイルはu1_defconfigになるようです。


defconfigの修正

isw11sc向けのdefconfigファイルは "arch/arm/configs/c1_rev00_jpn_kddi_defconfig" にあります。review.tizen.orgのkernel defconfigと差分を取ると

diff arch/arm/configs/c1_rev00_jpn_kddi_defconfig ~/tizen/src/linux-2.6.36/arch/arm/configs/u1_defconfig

予想以上に大量に差分がありました。。

CPUは共通(Cortex A9 1.2GHz -> Samsung Exynos C210)だと思っていたのですが、デバイスはやっぱり相当別物です。。。orz

取りあえず、kernel boot時のcmdlineだけ違いを比べると

Tizen Dev Phone↓

CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=cramfs init=/linuxrc console=ttySAC2,115200 mem=128M"

isw11sc↓

CONFIG_CMDLINE="console=ttySAC2,115200 consoleblank=0"

なので、取りあえずc1_rev00_jpn_kddi_defconfigc1_tizen_defconfigにコピーして、ココだけあわせて修正します。


kernel rebuild

kernelをrebuildします。

$ make c1_tizen_defconfig

ここでmakeすると、MakefileでgccがCROSS_COMPILEを

CROSS_COMPILE  ?= /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi-

としているので、cross compilerがなくてビルドが進みません。
取ってきてもいいのですが、そもそもココでやったQtと同じようにSBSを使えば、cross build用のgccなのでコレを使います。
まず、Makefileの下記で指定されているCROSS_COMPILEをコメントアウトします。

 191 ARCH        ?= arm
 192 #CROSS_COMPILE  ?= /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi-
 193 CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%)

後は普通にsbsに入ってmakeするだけです。

$ cd /home/user/sbs-install/bin
$ ./sbs -e
$ cd ~/kernel/src
$ make c1_tizen_defconfig
$ make -j4

時刻がずれてますが、一応ビルド出来たようです。

drwxr-xr-x  4 root root    4096 Jun 20 18:07 .
drwxr-xr-x 95 root root    4096 Jan 31 09:07 ..
-rw-r--r--  1 root root     120 Jun 20 18:07 .Image.cmd
-rw-r--r--  1 root root     147 Jun 20 18:07 .zImage.cmd
-rwxr-xr-x  1 root root 8399616 Jun 20 18:07 Image
-rwxr-xr-x  1 root root    3118 Jan 31 09:07 Makefile
drwxr-xr-x  2 root root    4096 Jan 31 09:07 bootp
drwxr-xr-x  2 root root    4096 Jun 20 18:07 compressed
-rwxr-xr-x  1 root root    1274 Jan 31 09:07 install.sh
-rwxr-xr-x  1 root root 3645332 Jun 20 18:07 zImage
[SB2 slp2 sbs-armel_home_moguris_sbs] root@geozero boot # date
Wed Jun 20 18:48:51 UTC 2012

念の為、vmlinux.oをfileしてみると

[SB2 slp2 sbs-armel_home_moguris_sbs] root@geozero kernel # file vmlinux.o  
vmlinux.o: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped

きちんとARMビルドになっているようです。


長くなったので、続きは後日。。。

*1:ISW11SC