まず、設定に関するいくつかの詳細は次のとおりです。
- Linux-3.14.1
- ARM am335xチップ
- U-Bootブートローダ
私が達成したいもの:
- U-Bootはinitramfsを含むカーネルをロードします(このカーネルを1と呼びます)。
- U-Bootはこのカーネルを実行します。
- カーネル1は、組み込みのinitramfsを含まないカーネル2をロードします。 NFS ルートを使用します。
- カーネル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は正常に起動します。