異なるアーキテクチャには異なるLinuxカーネルがありますか?

異なるアーキテクチャには異なるLinuxカーネルがありますか?

ARMアーキテクチャ用のカスタムカーネルを構築するには、次のものが必要です。

a) kernel.orgからカーネルをダウンロードし、カーネルを変更し、いくつかのクロスコンパイラ(ソースなど)を使ってビルドします。

b) どこかでARM固有のカーネルを見つけ、いくつかのパッチを探し、いくつかのARM固有のツールを使ってコンパイルしますか?

ARMアーキテクチャ用にカスタムコアを構築できますか?

私は一般的にカーネルについてほとんど知りません。

答え1

Linuxカーネルソースコードtarballとgitリポジトリには、サポートされているすべてのアーキテクチャ(ARMなど)のコードが含まれています。

このサブディレクトリには、Documentation/arm/続行する前に確認する必要がある一部のARM関連ドキュメントが含まれています。

ARM固有のコードはサブディレクトリにありますarch/arm/。一部のARM関連ドライバはdrivers/*/サブディレクトリにある場合があります。

だから、kernel.orgから通常のカーネルタールボールをダウンロードし、Documentation/arm/README次のように読み始めます。

カーネルのコンパイル

ARM Linux用にコンパイルするには、GNU拡張機能を使用してARM ELFコードを生成できるコンパイラが必要です。 GCC 3.3既知...

この記事を読んだ後は、多くの回答を得ることができるようです(そして、もっと質問があるかもしれませんが、躊躇しないでください。)。

答え2

カーネルのソースコードは、すべてのアーキテクチャで同じです。いくつかのアーキテクチャ固有のアセンブリを使用して主にCで書かれています。

ARM用にビルドする最も簡単な方法は、すでにARMで実行することです。その後、通常のコンパイル文書に従うだけです。

別のアーキテクチャでビルドする場合は、これをクロスコンパイルと呼びます。私はこれを自分でやったことはありませんが、これを行うにはクロスコンパイルツールチェーンを設定する必要があることを知っています。

このガイドそれから始めなければなりません。

関連情報