Android電話

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

Amazonのアソシエイトとして、8796.jp管理日誌は適格販売により収入を得ています。
スポンサーリンク

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

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

@chromabox さんの仕業です。

https://github.com/chromabox/initrampicker

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

[bash]
git clone https://github.com/chromabox/initrampicker.git
[/bash]

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

[bash]
make
[/bash]

するだけです。

超簡単。

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

[bash]
./initrampicker zImage output.cpio
[/bash]

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

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

その後、適当に

[bash]
mkdir initramfs_org
[/bash]

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

[bash]
md initramfs_org
cpio -idmv –no-absolute-filenames < ../output.cpio [/bash] とかするとそのディレクトリにずらずらファイルができます。 この initramfs_org を元に init.rc をイジイジしてカーネルに組み込むと色々遊べますよ! カーネルのビルドスクリプトは以前の記事に書いたような

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

[bash]
make c1_rev02_jpn_ntt_defconfig
[/bash]

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

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

CROSS_COMPILEなども重要です。

[bash]
#!/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
[/bash]

これを build_sc02c とかで保存して

[bash]
chmod 755 build_sc02c
[/bash]

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

[bash]
./build_sc02c
[/bash]

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

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

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

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

とかすればいいさ。

タイトルとURLをコピーしました