nexus7 2012 5.02でcifs(カーネル構築編)

スポンサーリンク
スポンサーリンク

さていよいよカーネルのコンパイルを行います。

何度も書きます。

自己責任において行動してください。私は一切責任を持ちません。動かなくなった場合メーカー保障もきかなくなります。またこれら文章を読んでいてわからない言葉があるのなら絶対にお勧めしません。やる前に十分な勉強をするべきです。それをご理解のうえでお進み下さい。

まず必要なファイルを一箇所に集めます。

MediaFire
MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single pla...

から

Patchset-Android-5.0.zip

をダウンロードして下さい。

また

Factory Images for Nexus and Pixel Devices  |  Google Play services  |  Google for Developers

から

nakasi-lrx22g-factory-2291c36b.tgz

をダウンロードしておいて下さい。

次にスクリプトを書いた物をUPしておきますのでこれもダウンロードしておいて下さい。

5_0_2

それらをWinSCPなどで仮想環境のユーザーnexusのホームフォルダに転送しておきます。

その後Puttyなどで仮想環境にログインして作業を進めます。

具体的な手続きは以下の通り

sudo apt-get install build-essential
sudo apt-get install git
sudo apt-get install unzip
sudo apt-get install ncurses-dev
unzip 5_0_2.zip
unzip Patchset-Android-5.0.zip
rm -fr Patchset-Android-5.0.zip
tar xzvf nakasi-lrx22g-factory-2291c36b.tgz
cd nakasi-lrx22g
unzip image-nakasi-lrx22g.zip
mkdir ~/boot
mv boot.img ~/boot
cd ~/
rm -fr nakasi-lrx22g*
git clone https://android.googlesource.com/platform/system/core bootimg-tools
cd bootimg-tools/libmincrypt/
gcc -c *.c -I../include
ar rcs libmincrypt.a *.o
cd ../mkbootimg
gcc mkbootimg.c -o mkbootimg -I../include ../libmincrypt/libmincrypt.a
sudo cp mkbootimg /usr/local/bin/
wget https://raw.github.com/pbatard/bootimg-tools/master/mkbootimg/unmkbootimg.c
gcc -o unmkbootimg unmkbootimg.c
sudo cp unmkbootimg /usr/local/bin/
cd ../cpio
gcc mkbootfs.c -o mkbootfs -I../include
sudo cp mkbootfs /usr/local/bin/
cd ~/boot
unmkbootimg -i boot.img
mkdir ramdisk
cd ramdisk
gunzip -c ../ramdisk.cpio.gz | cpio -iu
patch -p1 < ../../Patchset-Android-5.0/initrc-vorcers.diff
init.rc
cp -R ../../Patchset-Android-5.0/ramdisk/tmp-vorcers .
find . | cpio -o -H newc | gzip > ../myramdisk.cpio.gz
git clone https://android.googlesource.com/platform/prebuilt
git clone https://android.googlesource.com/kernel/tegra.git kernel/grouper
cd ~/kernel/grouper
git checkout android-5.0.2_r0.1
scripts/extract-ikconfig ~/boot/boot.img > arch/arm/configs/n7_defconfig
source ~/buildset
make n7_defconfig
patch -p1 < ../../Patchset-Android-5.0/n7_hardboot.diff
patch -p1 < ../../Patchset-Android-5.0/kernel.diff
patch -p1 < ../../Patchset-Android-5.0/vorcers-config.patch
.config
patch -p1 < ~/setlocalversion.diff
make menuconfig
make -j4
cd ~/boot
cp ~/kernel/grouper/arch/arm/boot/zImage .
mkbootimg --base 0 --pagesize 2048 --kernel_offset 0x10008000 --ramdisk_offset 0x11000000 --second_offset 0x10f00000 --tags_offset 0x10000100 --kernel zImage --ramdisk myramdisk.cpio.gz -o myboot.img

ここで行っていることが理解できないのであれば今すぐ止めてください!

※1(2015/01/20-16:29)
49行目は次投稿で補足を入れました。

うまくいけば~/boot/myboot.imgが作成されます。これをホストに転送してNexusRootToolなどboot.imgを書き換えられる物でカーネルを変更します。

うまく起動できればcifsが使用できる環境になります。

なお5.02ではSELinuxがEnableになっていますので

setenforce 0
getenforce

としてpermissiveと返事が返ってくれば成功です。
これをしないとどんなboot.imgを作ってもSELinuxで拒否されますので通常ユーザーでは接続できません。

私はこれでLinuxSambaの共有及びWindows7の共有を見ることに成功しています。

コメント

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