2012年10月22日月曜日

Motorola RAZR i XT890のKernelをビルドしてみた


Kernel sourceが公開されたのでビルドして実機で動かしてみた。
sourceはここ
ここに書いてあるとおりにビルドすればOK…だけど面倒くさいので


https://github.com/turl/linux-razr-i
turlさんがgithubにあげてくれてるコレを使う。

作業はUbuntu 11.04 32bitで行った、64bitでは「cast from pointer to integer of different size」が沢山出てきて修正すんの面倒くさいので32bitで…

git clone git://github.com/turl/linux-razr-i.git
とりあえずsourceをローカルに
それとhardware_ti_wlan.tar.gzとvendor_authentec_vpndriver.tar.gzも必要になるのsourceforgeからダウンロードしておく。

toolchainにAndroidのソースのprebuiltに入ってるものを使用するのでそれもrepo syncするなりしておく。

んでビルド
export PATH=/home/meyskld/android/xt890_kernel/prebuilt/linux-x86/toolchain/i686-android-linux-4.4.3/bin:$PATH
export ARCH=i386
export CROSS_COMPILE=i686-android-linux-
export ARCH_BUILD_FLAGS="ANDROID_TOOLCHAIN_FLAGS=-mno-android"

make i386_mfld_moto_defconfig
time make -j4

export INSTALL_MOD_PATH=/home/meyskld/android/xt890_kernel/modules/
make modules_install
Kernelだけのビルドなので数分で終わる。
Kernelは下記ディレクトリにbzImageという名前で保存される。
/arch/x86/boot/

make modules_installを実行するとINSTALL_MOD_PATHで指定したディレクトリにドライバたちが保存される。
WlanとVPNのドライバは下記URLに書かれている手順で別途ビルドする。
http://sourceforge.net/projects/razr-i.motorola/files/razr-i/8.7.1I-110_IFW-31/
Build compat.ko & wl12xx-sdio.ko~ってところ見れば分かると思う。

"apwr3_0.ko","pax.ko","sep3_7.ko"の3つがビルドされないのだがどーすればええねん?

ビルドした.koをramdiskのlib/modulesにコピー
ramdiskのunpack、repackは以前書いたこのエントリ通りに行えばOK
あれ - Motorola RAZR i XT890: rooted

cpio.gz作るところまでやっておく。

bzImageとramdisk.cpio.gzをくっつける作業をする。
mkbootimg的なツールがあれば良いのだが無いのでバイナリエディタで結合させた…とりあえず動けばいいやなノリ

オリジナルのboot.imgをバイナリエディタで開く。
アドレス0x2000までがheaderでその後ろにbzImage(kernel)をくっつける。
bzImage(kernel)の後ろにramdisk.cpio.gzをくっつける。この際、開始位置をオリジナルと同じにしておく。
headerの0x400にramdiskの開始位置とramdiskのサイズが書かれているのでここを書き換えるのでもOK
最後にオリジナルのfooterを張り付けて保存
物凄い無理やり感ありますけど…

あとはfastbootで焼いて起動するのを確認
fastboot flash boot boot_mod.img


さて、オーバークロックして遊ぶかー

2012年10月6日土曜日

Motorola RAZR i XT890: rooted




まだ実機は手に入ってないのですが、xda-developersのmember、mattlgroffさんが実機で試してくれました。
私がやった事、どっから入手したのか分からないXT890 Stock boot.imgのUnpack、default.propのro.secure=0化とRepackです。
unsecured kernel作ったって事です。

そもそもなんでunsecured kernelが使えるのか?というところですが、RAZR i XT890はBootloader Unlockが可能なモデルです。


Unlock手順についてはこちらを



RAZR i XT890 boot.imgのUnpack/Repack方法についてざっくり書きます。

Unpack

  1. バイナリエディタでboot.imgを開く
  2. "1F 8B 08"で検索する。
    数件ヒットするかと思いますがramdiskの部分は"Failed to allocate space for phdrs"と書かれているところの少し下になります。
    "1F 8B 08"はgzipのヘッダー
  3. "1F 8B 08"から後半の"FF"で埋められてるエリアの手前までをコピー
  4. 3.でコピーしたものをramdisk.cpio.gzという名前で保存
    gzipで圧縮されたcpioって事ですね。
  5. ramdisk.cpio.gzを展開する…Windows環境でも7-Zip等で展開出来ます。
Repack

  1. gzip圧縮されたcpioを作る。名前はramdisk_mod.cpio.gzとします
    作業はLinux環境で行う。
    cd ramdisk_mod
    find | cpio -H newc -o | gzip -9 > ramdisk_mod.cpio.gz
    
  2. バイナリエディタでramdisk_mod.cpio.gzを開く
  3. ramdisk_mod.cpio.gzをboot.imgの抜き出した部分に上書きし、保存
    ファイルサイズをオリジナルのboot.imgと同じにしてあげる必要があります。
    "00"で埋めてあげればOKです。
こんな感じです。
Motorolaさん、XT890のkernel sourceはよ!

2012年10月4日木曜日

ついうっかりMotorola RAZR i XT890を発注した

Unlockable BootloaderらしいってのとIntelの石積んでるとか楽しくないですか?って事で。
ディスプレイがPentileだとかBluetoothがv2.1だったりするのはイマイチだけどまぁいいか…な感じです。