現在時刻 - 2017年10月24日(火) 07:46


【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

カーネルやカスタムROMに関する話題・質問はこちらへ

モデレータ: Samsungモデレータ

  • 作成者
  • メッセージ

HomuHomu

  • 記事: 211
  • 登録日時: 2013年5月30日(木) 21:31

【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

投稿記事2014年3月09日(日) 20:00

一撃用のkernel作成方法を書いたことなかったなぁと思い、チラ裏程度に書いておきます。
SC03Dを前提に書いておきます(SC06Dではサウンド関係の都合上snd_soc_msmも替えないといけませんがやることはほぼ同じなので、応用して作ってください)

HomuHomu

  • 記事: 211
  • 登録日時: 2013年5月30日(木) 21:31

Re: 【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

投稿記事2014年3月09日(日) 20:07

local_manifestに
コード: 全て選択
<project name="kbc-developers/sc03d_boot_ramdisk" path="kernel/samsung/sc03d_boot_ramdisk" remote="github" revision="kk-aosp" />

を追加します。フルビルドには何も関係ないものです。
SC03Dだけの場合、local_manifest.xmlは
コード: 全て選択
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="cm-11.0" />
<project name="kbc-developers/android_device_samsung_qcom-common" path="device/samsung/qcom-common" remote="github" revision="cm-11.0" />
<project name="kbc-developers/android_device_samsung_celox-common" path="device/samsung/celox-common" remote="github" revision="cm-11.0" />
<project name="kbc-developers/android_device_samsung_msm8660-common" path="device/samsung/msm8660-common" remote="github" revision="cm-11.0" />
<project name="kbc-developers/android_device_samsung_celoxdcm" path="device/samsung/celoxdcm" remote="github" revision="cm-11.0" />
<project name="kbc-developers/android_kernel_samsung_msm8660" path="kernel/samsung/msm8660-dcm" remote="github" revision="cm-11.0" />
<project name="kbc-developers/sc03d_boot_ramdisk" path="kernel/samsung/sc03d_boot_ramdisk" remote="github" revision="kk-aosp" />
<project name="kbc-developers/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-11.0" />
</manifest>

この様な姿になります。

HomuHomu

  • 記事: 211
  • 登録日時: 2013年5月30日(木) 21:31

Re: 【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

投稿記事2014年3月09日(日) 20:21

その後repo syncし
kbc-developersから引っ張ってきたものだけを改めてCyanogenModからFetchして引っ張りmergeします。
コード: 全て選択
cd device/samsung/qcom-common
git fetch git@github.com:CyanogenMod/android_device_samsung_qcom-common.git cm-11.0
git merge FETCH_HEAD
cd ../msm8660-common
git fetch git@github.com:CyanogenMod/android_device_samsung_msm8660-common.git cm-11.0
git merge FETCH_HEAD
cd ../celox-common
git fetch git@github.com:CyanogenMod/android_device_samsung_celox-common.git cm-11.0
git merge FETCH_HEAD
cd ../celoxdcm
git fetch git@github.com:CyanogenMod/android_device_samsung_hercules.git cm-11.0
git merge FETCH_HEAD
cd ../../../kernel/samsung/msm8660-dcm
git fetch git@github.com:CyanogenMod/android_kernel_samsung_msm8660-common.git cm-11.0
git merge FETCH_HEAD
cd ../../../vendor/samsung
git fetch git@github.com:TheMuppets/proprietary_vendor_samsung.git cm-11.0
git merge FETCH_HEAD

msm8660の場合、もうほとんどコンフリクトは発生しないと思います。
merge用のスクリプトを自作してもいいかもしれませんね。(というか、その方が早い)
発生した場合は、git diffしてコンフリクト箇所を適時geditかなにかで修正してください。
不明な場合でもCyanogenMod側で何を修正したのか見れば、おおよそ見当がつくと思います。

HomuHomu

  • 記事: 211
  • 登録日時: 2013年5月30日(木) 21:31

Re: 【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

投稿記事2014年3月09日(日) 20:31

その後
コード: 全て選択
. build/envsetup.sh
brunch cm_celoxdcm-userdebug

って、ここまでまんまROMビルドの方法ですが
更新されたRAMDISKを得るためにはこれしか方法がないので(笑)
んで、テレビでも見ながらしばし待つ。
ビルドでコケたら泣いた後、ダメダメだった所を見て、直せそうなとこなら直す。
-------------------------------
追記:173210さんからのツッコミで
あぁRamdisk欲しいだけなら
コード: 全て選択
. build/envsetup.sh
lunch cm_celoxdcm-userdebug
make -j16 booimage

でいいよなぁと今更ながら...orz
いつもbrunchでROM焼いてみてから動作確認して、その副産物で一撃作ってたので…
同じようにrecovery ramdiskを欲しいなら
コード: 全て選択
. build/envsetup.sh
lunch cm_celoxdcm-userdebug
make -j16 recoveryimage

で ////

HomuHomu

  • 記事: 211
  • 登録日時: 2013年5月30日(木) 21:31

Re: 【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

投稿記事2014年3月09日(日) 20:37

さて無事にフルビルド完了しました。
ただROMを焼くだけならこれで出来たzipを焼くだけでいいんですが
今回は一撃用kernelの作成方法なので、ここからが本題です。
out/target/product/celoxdcm
以下に
/rootディレクトリが出来ているのが解るでしょうか?
これがbuildした際に新たに出来たRamdiskです。
これをkernel/samsung/sc03d_ramdiskにmergeする作業に入ります。

HomuHomu

  • 記事: 211
  • 登録日時: 2013年5月30日(木) 21:31

Re: 【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

投稿記事2014年3月09日(日) 20:49

コード: 全て選択
out/target/product/celoxdcm/root

以下にある空のディレクトリ(サブディレクトリも含む)に
.gitignore
という名前の空のドキュメント(ファイル)を作ってください。
コード: 全て選択
touch .gitignore

とかするより
ぶっちゃけ、GUI操作の方が楽だし確実です個人的にw
オプションから隠しファイルを表示するにチェックでも入れてやっちゃいます。
次に
コード: 全て選択
cd out/target/product/celoxdcm/root
chmod 755 *.rc
chmod 755 *.sh

そう、init時に走るファイルに実行権限がついてないんですよね…ビルド完了時につけてくれればいいのに
(たまに自分も忘れて、「おい、起動しねぇぞゴラ!」とかやっちゃいます。)

HomuHomu

  • 記事: 211
  • 登録日時: 2013年5月30日(木) 21:31

Re: 【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

投稿記事2014年3月09日(日) 20:56

次に、
/kernel/samsung/sc03d_boot_ramdisk
の中にある、libディレクトリを
out//target/product/celoxdcm/root
直下に持ってきます。
ここ(lib/modules)に、本来/system/lib/modulesに入るであろう
kernelのみビルドしたモジュール(.ko)が収められる形になります。
ただし、これだけでは、ただ入っただけだよてことで、Symlinkしなければなりません。
なぜこの様な事をしなければならないかという理由は、先のトピック(SC03Dのkernel source merge)にて既に書いています。

HomuHomu

  • 記事: 211
  • 登録日時: 2013年5月30日(木) 21:31

Re: 【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

投稿記事2014年3月09日(日) 21:08

SC03Dの場合は、init.rarget.rcに仕込んでいます。
https://github.com/kbc-developers/sc03d ... get.rc#L35
違うデバイスで、どこに仕込んでいるか解らない場合は、
mount tmpfs tmpfs /system/lib/modules
でgrepすればいいです
同じ箇所に、
コード: 全て選択
mount tmpfs tmpfs /system/lib/modules
    symlink /lib/modules/scsi_wait_scan.ko /system/lib/modules/scsi_wait_scan.ko
    symlink /lib/modules/vibrator.ko /system/lib/modules/vibrator.ko
    symlink /lib/modules/msm_tsif.ko /system/lib/modules/msm_tsif.ko
    symlink /lib/modules/tsif_chrdev.ko /system/lib/modules/tsif_chrdev.ko
    symlink /lib/modules/mmc_test.ko /system/lib/modules/mmc_test.ko
    symlink /lib/modules/qcrypto.ko /system/lib/modules/qcrypto.ko
    symlink /lib/modules/qce.ko /system/lib/modules/qce.ko
    symlink /lib/modules/qcedev.ko /system/lib/modules/qcedev.ko
    symlink /lib/modules/evbug.ko /system/lib/modules/evbug.ko
    symlink /lib/modules/spidev.ko /system/lib/modules/spidev.ko
    symlink /lib/modules/lcd.ko /system/lib/modules/lcd.ko
    symlink /lib/modules/gspca_main.ko /system/lib/modules/gspca_main.ko
    symlink /lib/modules/dhd.ko /system/lib/modules/dhd.ko
    symlink /lib/modules/ansi_cprng.ko /system/lib/modules/ansi_cprng.ko
    symlink /lib/modules/ksapi.ko /system/lib/modules/ksapi.ko
    symlink /lib/modules/dma_test.ko /system/lib/modules/dma_test.ko
    symlink /lib/modules/dal_remotetest.ko /system/lib/modules/dal_remotetest.ko
    symlink /lib/modules/msm-buspm-dev.ko /system/lib/modules/msm-buspm-dev.ko
    symlink /lib/modules/cls_flow.ko /system/lib/modules/cls_flow.ko
    symlink /lib/modules/sch_dsmark.ko /system/lib/modules/sch_dsmark.ko

と入れてください。
もし新たにmoduleが発生した場合はそれも追加するのをお忘れなく

173210

  • 記事: 45
  • 登録日時: 2013年5月27日(月) 19:19
  • お住まい: 茨城

Re: 【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

投稿記事2014年3月09日(日) 21:13

HomuHomu さんが書きました:その後
コード: 全て選択
. build/envsetup.sh
brunch cm_celoxdcm-userdebug

って、ここまでまんまROMビルドの方法ですが
更新されたRAMDISKを得るためにはこれしか方法がないので(笑)
んで、テレビでも見ながらしばし待つ。
ビルドでコケたら泣いた後、ダメダメだった所を見て、直せそうなとこなら直す。

コード: 全て選択
. build/envsetup.sh
lunch cm_celoxdcm-userdebug
make ramdisk-nodeps

これでどうでしょう?

HomuHomu

  • 記事: 211
  • 登録日時: 2013年5月30日(木) 21:31

Re: 【Ramdisk更新】一撃用kernel作成法(各デバイス共通)

投稿記事2014年3月09日(日) 21:21

次に
sc03d_boot_ramdisk内にあるドキュメントを全て削除!
ただし、git管理ファイルがある場所(/.gitディレクトリ)は残してください。
そして、out/target/product/celoxdcm/root/
以下にあるドキュメントを全て
sc03d_boot_ramdiskにコピー
git diffし
変更点を確認してください。
これでRamdiskの更新は完了
後は、kernel/samsung/msm8660-dcmディレクトリで
コード: 全て選択
./build-sc03d_aosp.sh

しビルド完了すれば
kernel/samsung/msm8660-dcm/SC03D/AOSP/bin
以下に
boot.img とxxxx-signed.zipとodinで焼く用のxxx-tar.md5が出来上がっている事でしょう。
この中にはフルビルドで出来上がったboot.imgとは違い、Moduleが入っているためWifi繋がんネーゾゴラァ!ってことにはならないかと
(dhd.ko以外に別な変更点が入っていなければ・・・)
次へ

Return to 開発全般

cron