kernel.imgファイル
Linuxカーネルを使用する場合、kernel.imgファイルは単に名前が変更されlinux/arch/arm/boot/Imageます。このファイルの圧縮バージョンを使用することも可能です(または、少なくとも前回チェックしたときに可能だったはずです)zImage。統合initramfs(ramdisk)を含めることができますが、必須ではありません。たとえば、在庫kernel.imgファイルにはinitramfswhile kernel_emergency.imgが含まれていません。
注:eLinux wikiの公式カーネルコンパイルガイドでは、imagetool-uncompressed.pyツールを使用してkernel.imgファイルを準備することを推奨しています。RaspberyPiの初期には必要でしたが、現在ではブートローダーは通常のファイルImageとzImageファイルを処理できます。
カーネルソースの問題
非常に重要なのは、RaspberryPiのカーネルを構築するときに、どのバージョンも使用できないことです。RaspberryPiに移植された特別なバージョンのみが機能します。残念ながら、現在のアップストリームバージョン(kernel.orgサイトにあります)はRaspberryPiと互換性がありません。また、versatil_configRaspberryPiには適していません。bcmrpi_defconfig代わりに使用する必要があります(RaspberryPi互換のカーネルソースにあります)またはbcmrpi_emergency_defconfigbuildinを使用する予定がある場合initramfs。
カーネル構築手順
RaspberryPiのカーネルソースを取得するのに最適な場所は、財団のgithubです。また、公式のRasbperryPi wikiで、入手方法とコンパイル方法に関する有用な説明を見つけることができます。ここに含まれる手順の私の少し単純化されたバージョンです(注:カーネルをクロスコンパイルすることを前提としています。はるかに高速で同じ結果を作成するはずですが、RaspberryPiでネイティブにカーネルを構築することも可能です)。
独自の公式ツールチェーンをダウンロードして作成してください。ちょっと、私はそれがにインストールされていると仮定し/usr/bin/arm-linux-gnueabi-*ます。他の場所にある場合はCROSS_COMPILE、すべてのmakeコマンドでオプションを変更する必要があります。
 
https://github.com/raspberrypi/linuxサイトにアクセスして、公式のRapsberryPiカーネルソースを見つけてください。次の2つの方法でコードをダウンロードできます。
 
財団が提供するデフォルトの設定を使用します。
cp arch/arm/configs/bcmrpi_defconfig .config
 
make oldconfigいくつかの質問を実行して回答します(デフォルトの回答を残して、各質問でEnterキーを押しても問題ありません)。
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfig
 
カーネルをコンパイルします。
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-
 
カーネルモジュールを/tmp/modules以下にコピーします。
make ARCH=arm modules_install INSTALL_MOD_PATH=/tmp/modules
 
Imageファイルとして使用kernel.img
 
すべてのモジュールを/tmp/modules/lib/modules/コンピューターのfromから/lib/modules/RaspberryPi rootfsのディレクトリにアップロードします。
 
initramfsを追加する
initramfsただし、これは作成方法に関する指示を提供しません。これは非常に広範なトピックであるため(基本的に、作業用のLinuxユーザースペース環境を作成する必要があり、複雑さの制限はありません)、ここでは説明しません。initramfs独立したファイルと、カーネルイメージファイルと統合されるビルドイン(スタンドアロンの場合)の2つの異なる形式で使用できることにのみ注意しますkernel_emergency.img。2番目のオプションはRaspberryPiブートローダーでサポートされているはずですが、現在のファームウェアバージョンでは壊れているという噂があるため、おそらくビルドインバージョンを使用する必要があります。
開始する最良の方法は、動作中のinitramfsコンテンツ(kernel_emergency.imgに使用されている)を別の基盤githubリポジトリからダウンロードして使用することですiniramfs。このイメージを使用してカーネルを起動できるようになってから、独自のビルドを試してください。これに必要なのは、ダウンロードされたディレクトリuing CONFIG_INITRAMFS_SOURCEカーネル構成オプションを指すことだけです。
最終ノート
したがって、3つの手順でこれを行う必要があります。
initramfsファイルなしでカーネルを構築して起動してみてください。 
- 準備の整った
initramfsコンテンツをカーネルに追加してみてください。 
initramfsニーズに合わせてこのコンテンツを変更します。