initramfs(ARM)なしでカーネルを起動するとkexecがクラッシュする

initramfs(ARM)なしでカーネルを起動するとkexecがクラッシュする

まず、設定に関するいくつかの詳細は次のとおりです。

  • Linux-3.14.1
  • ARM am335xチップ
  • U-Bootブートローダ

私が達成したいもの:

  1. U-Bootはinitramfsを含むカーネルをロードします(このカーネルを1と呼びます)。
  2. U-Bootはこのカーネルを実行します。
  3. カーネル1は、組み込みのinitramfsを含まないカーネル2をロードします。 NFS ルートを使用します。
  4. カーネル1はカーネル2を実行します。

質問:

カーネル 1 はカーネル 2 を実行できません。これが私が見た最後のものです。

[    8.819174] Starting new kernel [    8.822539] Bye!

コア:

  • initramfs 関連の設定を除いて、コア 1 とコア 2 の両方が同じ構成を持ちます。すべてkexecが有効になっています。
  • カーネル1は、ブートループが成功するように他のカーネル1をkexecできます。
  • カーネル2はU-Bootから直接正常に起動できます。
  • カーネル 1 と 2 は同じデバイスツリーを使用します。

発生する可能性のある問題:

  • 私のNFSルートに誤ったカーネルコマンドラインオプションがあるかもしれませんが、これらのオプションはほとんどU-Boot操作からコピーされました。
  • ルートファイルシステムに問題がある場合は、少なくともコンソールで何かを見ることができると思いました。

追加の考え:

  • おそらく、これはカーネルサイズの大きな違い(k1 = 4523344、k2 = 2859240)に関連している可能性があります。

どんな助けでも大変感謝します。

答え1

問題は、kexecがzlibなしでコンパイルされるため、uImageカーネルを処理できないことです。元の「イメージ」カーネル2は正常に起動します。

関連情報