[電話] initramfsを簡便に切り分けるinitrampicker

2011年6月27日 by
カテゴリ: Android, 電話 

以下はすべてメーカー保証外の行為ですので自己責任でよろしくどうぞ。

信用できない他人のビルドしたカーネルをほいほい焼くのはやめようキャンペーン実施中です。

@chromabox さんの仕業です。

https://github.com/chromabox/initrampicker

簡単に使うための準備を。

git clone https://github.com/chromabox/initrampicker.git

してそのディレクトリに移動して

make

するだけです。

超簡単。

使い方も超簡単(lzopのパッケージはインストールしておいてね!)

./initrampicker zImage output.cpio

みたいな。自分のいる場所の実行ファイルを実行するときには ./ 重要

LZOで圧縮されているらしい SC-02C のカーネルでも正しく切り分けしてくれるので大変ラクチンです。バイナリエディタで検索しながら手動で切り出してたのが馬鹿みたい。わたしってほんと以下略

その後、適当に

mkdir initramfs_org

とかディレクトリを作って

md initramfs_org
cpio -idmv --no-absolute-filenames < ../output.cpio
&#91;/bash&#93;

とかするとそのディレクトリにずらずらファイルができます。

この initramfs_org を元に init.rc をイジイジしてカーネルに組み込むと色々遊べますよ!

カーネルのビルドスクリプトは<a href="http://blog.8796.jp/8796kanri/2011/05/%e9%9b%bb%e8%a9%b1-galaxy-sii-gt-i9100%e3%81%ae%e3%82%ab%e3%83%bc%e3%83%8d%e3%83%ab%e3%82%92%e6%89%8b%e6%97%a9%e3%81%8f%e3%83%93%e3%83%ab%e3%83%89%e3%81%99%e3%82%8b.html" target="_blank">以前の記事</a>に書いたような

SC-02Cの場合はカーネルソースのあるディレクトリで↓をするのを忘れずに。


make c1_rev02_jpn_ntt_defconfig

以下の出力先とか~の場所とか書いてある部分を自分の環境にあうように書き換えましょう。

INITRAMFS_SOURCEはさっき作ったディレクトリを指定します。

CROSS_COMPILEなども重要です。

#!/bin/sh

TAR_NAME=/(出力先)/Kernel.tar

INITRAMFS_SOURCE=`readlink -f (initramfsの場所)/galaxysii-initramfs-modified`
INITRAMFS_TMP="/tmp/initramfs-source"


rm -rf $INITRAMFS_TMP
cp -ax $INITRAMFS_SOURCE $INITRAMFS_TMP
find $INITRAMFS_TMP -name .git -exec rm -rf {} \;

export ARCH=arm
export CROSS_COMPILE=/opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi-
export LOCALVERSION="-rooted"
export KBUILD_BUILD_VERSION="hogehoge"

cd (カーネルソースのある場所)samsung-kernel-galaxysii/
nice -n 10 make -j8 modules || exit 1
find -name '*.ko' -exec cp -av {} $INITRAMFS_TMP/lib/modules/ \;

cd $INITRAMFS_TMP
find | fakeroot cpio -H newc -o > $INITRAMFS_TMP.cpio 2>/dev/null
ls -lh $INITRAMFS_TMP.cpio
cd -

nice -n 10 make -j8 zImage CONFIG_INITRAMFS_SOURCE="$INITRAMFS_TMP.cpio" || exit 1
cd arch/arm/boot
tar cf $TAR_NAME zImage && ls -lh $TAR_NAME

これを build_sc02c とかで保存して

chmod 755 build_sc02c

で、実行権限を忘れずに付与して

./build_sc02c

とすれば、勝手にビルドしてモジュールを差し替えて Kernel.tar が指定した場所にできます。

あとは好きにOdin3で焼けばいいさ。

もしくはすでに su が入ってるなら zImage 取り出して

adb push zImage /sdcard/zImage
adb shell
su
dd if=/sdcard/zImage of=/dev/block/mmcblk0p5

とかすればいいさ。

コメント

Comments are closed.