Android
 Computer >> コンピューター >  >> トラブルシューティング >> Android

Windows10でAndroidカーネルを構築する方法

Appual’sには、Android Open Source ProjectからカスタムROMを構築する方法など、Android開発に関する優れたガイドがいくつかありますが、これらのガイドは通常、純粋なLinuxビルド環境を対象としています。

このガイドでは、Windows 10でAndroidカーネルをビルドする方法を説明します。はい、引き続きLinuxビルド環境を使用しますが、Windows 10内のLinuxサブシステムになります。したがって、Windows10の場合Android向けの開発に関心のあるユーザーは、ガイドに注意深く従ってください。

このガイドでは、ARMおよびMediaTekデバイス用のカーネルを構築する方法、機能の追加、およびGitの使用の基本的な概要について具体的に学習します。

要件

  • Windows 10 x64(Fall Creatorのアップデートあり)

Linux環境のセットアップ

  1. Windows 10では、[設定]>[更新とセキュリティ]>[開発者向け]>[開発者モード]を有効にします。
  2. 次に、[コントロールパネル]>[プログラム]>[Windowsの機能をオンまたはオフにする]>[Linux用のWindowsサブシステムを有効にする]に移動します。
  3. PCを再起動します。
  4. Linuxサブシステムを起動し、ダウンロードプロセスを実行できるようにします。パスワードを設定し、紛失しないようにしてください。
  5. 次に、Windowsアプリストアにアクセスして、Ubuntuをダウンロードします。
  6. Windows 10デスクトップでUbuntuを起動すると、ユーザー名とパスワードが要求されます。
  7. Ubuntuで、ネイティブターミナルを起動し、次のコマンドを入力します:apt-get update
  8. これにより、アプリと依存関係のすべてのリポジトリが更新されます。
  9. 次のターミナルタイプ:sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
  10. すべての依存関係が正しくインストールされているかどうかを確認するには、ターミナルに「gcc」と入力します(引用符は含みません)。
  11. 「gcc」がすでにインストールされている場合は、「gcc:致命的なエラー:入力ファイルがありません」と表示されます。
  12. これで、ターミナルに「make」と入力できます。 「make」がすでにインストールされている場合は、「make:***ターゲットが指定されておらず、makefileが見つかりません」と表示されます。やめなさい。」
  13. 次のタイプは「git」で、「git」がすでにインストールされている場合は、一連の基本的なgitコマンドが表示されます。
  14. ここで、いくつかのツールチェーンが必要です(GCC、Linaro、およびいくつかのカスタムツールを含むいくつかのタイプがあります)。一部のデバイスでは、異なるツールチェーンが必要になる場合があります。たとえば、すべてのデバイスカーネルがGCCで起動またはコンパイルされるわけではありません。

ARMデバイスの場合

これにはGCC4.7を使用します。

  1. Linuxターミナルを開き、次のように入力します:mkdir kernel
  2. 現在のタイプ:cdカーネル
  3. (「カーネル」である必要はありません。これは簡単にするためです。好きな名前を付けることができます。)
  4. 現在のタイプ:git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

ARM64デバイスの場合

ARM 64デバイス用の64ビットカーネルコンパイラ(aarch64など)が必要です。

デバイスのソースファイルの取得

カーネルソースをホストするGitHubリポジトリを見つける必要があるため、これは注意が必要な部分です。もちろん、それを検索する必要があります。ほとんどの場合、XDAフォーラムで見つけることができます。

カーネルソースGitの例を次に示します。

左上に「ブランチ:xxxxで完了」と表示されます。

カーネル/プロジェクトにはさまざまなバージョンがあり、通常は「テスト」、「ベータ」、「最終リリース」などで区切られています。

カーネルフォルダは通常、次のとおりです。

  • / arch / arm / configs :これには、ガバナーなど、デバイスのさまざまな構成ファイルが含まれています。
  • / output / arch / arm / boot / :ここにzimageが保存されます。
  • build.sh :構築プロセスを簡素化するスクリプト。
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 :これは通常、カーネルソースに配置されたツールチェーンであるため、見つけやすくなっています。

カーネルソースをダウンロードする必要があります。

Linuxターミナルを開き、前に作成したカーネルフォルダ(cdカーネル)にいることを確認します。

次に、ターミナルに次のように入力します。「gitclone「githubカーネルのURL」-b「ブランチの名前」

例:「gitclonehttps://github.com/atxoxx/android_ke…amsung_msm8974-bxenomTW」

カーネルの構築

簡単にするために、ファイルエクスプローラーでその場所に移動できます。 / home / user ID / kernel(またはカーネルフォルダに名前を付けたもの)である必要があります。

ツールチェーンとカーネルソース用に、内部に2つのフォルダーが表示されます。カーネルソースフォルダ内に移動します。

ARMデバイスの場合

ターミナルで、次のコマンドを入力します。

#!/bin/bash

export ARCH=arm
export CROSS_COMPILE=

mkdir output

make -C $(pwd) O=output "name of defconfig and variant if needed"
make -j4 -C $(pwd) O=output

これは、将来これを簡単にするために、これらのコマンドが行うことの概要です。

  • #!/ bin / bash: シェルコマンドで実行するようにスクリプトに指示します
  • export ARCH =arm: どのカーネルアーキテクチャタイプであるかを定義する(たとえば、arm64など)
  • export CROSS_COMPILE = :ツールチェーンがどこにあるかを見つけます。正確なパスと一致する必要があり、最後のダッシュは本当に必須です。
  • mkdir出力: これにより、コンパイルされたzimageを保存するためのディレクトリが作成されます
  • make -C $(pwd)O =output :カーネルコンパイルをガイドするためのdefconfigを定義します。
  • make -j4 -C $(pwd)O =output :ビルドプロセスが開始されると、-j#はコンパイルの試行速度を示します。通常、この数値はCPUに応じて設定します。たとえば、バジェットCPUで-j32を設定すると、大規模な不安定性が発生する可能性があります。
  • cp output / arch / arm / boot / Image $(pwd)/ arch / arm / boot / zImage :これは、画像を2番目のパスに移動するためのものです。

別の例:

#!/bin/bash

export ARCH=arm
export CROSS_COMPILE=$(pwd)/arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi-

mkdir output

make -C $(pwd) O=output msm8974_sec_defconfig VARIANT_DEFCONFIG=msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG=selinux_defconfig
make -j4 -C $(pwd) O=output

cp output/arch/arm/boot/Image $(pwd)/arch/arm/boot/zImage

ARM64デバイスの場合

#!/bin/bash

export ARCH=arm64
export CROSS_COMPILE="path to your toolchain" (it have to end by something like "nameofarch-something-")

mkdir output

make -C $(pwd) O=output "name of defconfig and variant if needed" 
make -j4 -C $(pwd) O=output

Mediatek(MTK)デバイスの場合

#!/bin/bash

export CROSS_COMPILE="path to your toolchain" (it have to end by something like "nameofarch-something-")

export ARCH=arm ARCH_MTK_PLATFORM=

make "name of defconfig and variant if needed"

make -j4

カーネルアーキテクチャに必要な手順を完了したら、ターミナルに次のように入力できます:sudo bash build.sh

次に、ユーザーパスワードを入力すると、コンパイルプロセスが開始されます。

しばらく時間がかかる場合がありますが、通常はそれほど長くはありません。カーネルのコンパイルは、AndroidROM全体のコンパイルとは異なります。これは実際にはCPUに依存します。たとえば、8GBのRAMを搭載したAMDPhenom X4 3.4GHzは、最初から最後までコンパイルするのに約10分かかります。

完了すると、「zimageの準備ができました」などのメッセージが表示されます。

ARMおよびARM64デバイス

「/Output/ arch / arm /boot/」に移動してzimageを見つけます。

Mediatekデバイス

「/arch/ arm /boot/」に移動してzimageを見つけます。

すべてのカーネルビルドがZimageファイルになるわけではなく、他のイメージ形式としてビルドできる場合もあります。

重要:再度コンパイルする場合は、コンパイルプロセスを再開する前に、コマンドmakecleanおよびmakemrproperを入力することをお勧めします。

カーネルブートの作成

選択できるオプションは2つあります。

anykernelメソッドを使用できます(このXDAスレッドでXDAユーザー@ osm0sisによって定義されています)。チュートリアル全体を読む必要がありますが、手順の概要は次のとおりです。

  1. zImageをルートに配置します(カスタムデバイスが必要なデバイスの場合は、dtbやdtboもここに配置する必要があります。含まれていない場合は、それぞれが元のデバイスにフォールバックします)
  2. 必要なramdiskファイルを/ramdiskに配置し、modulesを/ modulesに配置します(/ modules / system / lib / modulesのようなフルパスを使用)
  3. 必要なパッチファイル(通常はコマンドに付随する部分ファイル)を/patchに配置します
  4. anykernel.shを変更して、カーネルの名前、ブートパーティションの場所、含まれているramdiskファイルのアクセス許可を追加し、必要なramdisk変更のメソッドを使用します(オプションで、バナーファイルやバージョンファイルをルートに配置して、これらを表示します)フラッシュ中)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .gitREADME.md*プレースホルダー`

利用可能な他の方法は、同じROM(CM、TouchWiz、EMUIなど)と同じAndroidバージョンからboot.imgを解凍することです。次に、Zimageを交換します。繰り返しますが、これは非常に複雑なプロセスであり、正確なチュートリアルを読む必要がありますが、手順の概要は次のとおりです。

  1. 解凍します。
  2. コマンドライン「unpackimg」を使用するか、画像をドラッグアンドドロップします。これにより、イメージが分割され、RAMディスクがサブディレクトリに解凍されます。
  3. RAMディスクを好きなように変更します。
  4. repackimgバッチスクリプトは入力を必要とせず、以前に分割されたzImageを、すべての元の画像情報(これも分割されて保存された)を使用して新しくパックされた変更されたramdiskと単純に再結合します。
  5. クリーンアップバッチスクリプトは、フォルダを初期状態にリセットし、split_img+ramdiskディレクトリと新しいパックされたramdiskまたはイメージファイルを削除します。

カーネルをフラッシュする前に、ストックboot.imgのバックアップを作成してから、カーネルをフラッシュして、Androidシステムを起動できるかどうかを確認する必要があります。

カーネルへの機能の追加

カーネルに機能を追加することは、カーネルにスパイスを加えるための優れた方法です。 CPUガバナー、IOスケジューラー、GPUのオーバークロック、オーディオの機能強化など、微調整できるものはたくさんあります。

ガバナーを追加する例は次のとおりです(このガバナーのコードネームはIntellimmです)。

最初の2つのテキストボックスで、「arch / arm /configs/」の「msm8974_sec_defconfig」と「cm_msm8974_sec_defconfig」が変更されていることがわかります。

このファイルの140行目と141行目の間に、「CONFIG_CPU_FREQ_GOV_INTELLIMM =y」というテキストが追加されています。
(この行は、カーネルのコンパイル時にIntellimmを有効にするためのものです)

同じ手法が他のテキストボックス(追加および削除されたものとその場所)にも適用されます

追加する機能に応じて、ファイルの変更、追加、削除を行うことができます。

要約すると、コミットでは、行われたすべての変更とその他すべてを確認できます!

一般的なヒントとコツ

カーネル名とバージョンを変更する方法:

簡単な方法:

defconfigファイルで次の行を編集します:

"CONFIG_LOCALVERSION="-" after - in your defconfig

例:CONFIG_LOCALVERSION =”-XenomTW-3.2.6”

高度な方法:

カーネルソースのルートフォルダにあるMakefileに移動します。

次の行を追加します:

CONFIG_LOCALVERSION="nameofyourkernel"
LOCALVERSION="versionofyourkernel"

バージョン、パッチレベル、サブレベル、または外向性の行を変更しないでください。

別の方法:

scripts / mkcompile_hに移動し、次の行を追加します。

LINUX_COMPILE_BY="nameofyourchoice"
LINUX_COMPILE_HOST="nameofyourchoice"

PATHの問題の解決:

「パスは正しいですか?」というエラーが発生した場合は、Linuxターミナルでこれを試してください。

"export PATH="pathtotoolchainlocation"/bin:$PATH"

Windows10からUbuntuフォルダーにアクセスする

Ubuntuへのパスは通常次のようになります:

C:\ Users” NAME” \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home

ただし、Windowsから直接ファイルを編集しないでください。通常、ファイルのアクセス許可が失われます。その場合、Linuxターミナル内からアクセス許可をリセットする必要があります。


  1. Windows 10 で Android 通知を取得する方法

    Android は、世界で最も使用されているオペレーティング システムの 1 つであり、多数のユーザーを抱えています。 Android を搭載したスマートフォンの性能が向上したため、Windows 10 で Android の通知を受け取ることができるようになりました。これにより、仕事中や携帯電話が遠くにある場合でも、確認するために取りに行く必要がなくなります。 Windows 10 での通知の取得は組み込み機能の 1 つであるため、微調整が必​​要な設定がいくつかあります。設定を理解する前に、正規の Windows 10 と必要な更新プログラムを使用していることが重要です。 Window

  2. Windows 11 で Android アプリを実行する方法

    Windows 11 PC で Android アプリを実行できるかどうか知りたいですか?さて、私たちの夢がついに実現したようです。サードパーティのソフトウェアやエミュレーターを使用せずに、Windows 11 で Android アプリを簡単に実行できます。 Windows の「Amazon アプリストア」アプリを使用すると、お気に入りのアプリやゲームにアクセスできます。 Microsoft はついに、PC で Amazon アプリストアを使用して、厳選されたカタログから Android アプリを参照およびインストールできるようにする新しい更新プログラムをリリースしました。ただし、ここに問題