QEMUはローカルに構築されたLinuxカーネルを起動できなくなりました。

QEMUはローカルに構築されたLinuxカーネルを起動できなくなりました。

昨日から、qemu私のノートブック(Arch Linuxを実行)にコンパイルされた外部カーネルを使用して起動することはできません。

バニラLinuxカーネル(Linus Torvaldsのgithubリポジトリにあるバージョン4.13)をコンパイルしたら、次のように起動してみますqemu

qemu-system-x86_64 --enable-kvm -boot c -kernel arch/x86/boot/bzImage

これにより、2〜3秒ごとに更新されるSeaBIOS出力を示すディスプレイが起動します。

   Booting from ROM...
   Probing EDD (edd=off to disable)... ok
   early console in extract_kernel
   input_data: 0x0000000002c773b4
   input_len: 0x000000000090c470
   output: 0x0000000001000000
   output_len: 0x000000000173a968
   kernel_total_size: 0x00000000025a7000

   Decompressing Linux... Parsing ELF...

qemuSeaBIOS デバッグ出力を有効にするために次のフラグを追加する場合:

-chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios

繰り返される出力は次のとおりです。https://pastebin.com/mZKeM6r5

興味深いことに、別のコンピュータ(Debianを実行)で同じ設定ファイルを使用して同じカーネルをコンパイルし、それを自分のbzImageコンピュータにコピーすると正常に起動します。だから私のツールチェーンに何が起こっているようです。最近アップデートがありましたが、gcc以前のバージョンのパッケージ(問題がなかったときに使用したバージョン)に戻っても問題は解決しませんでした。

distcc一時的な回避策として、Debian コンピュータでコンパイルのためにファイルを前後にコピーすることを避けることができると思いましたが、問題は引き続き発生するため、問題はコンパイル プロセスの最後のステップ (リンクからリンクまで) にあると推測されます。私のラップトップの上級者でこれが起こるからです)。

追加情報:

  • gcc私のノートブックバージョン(ArchLinux):8.2.0(パッケージバージョン= 8.2.0-2)
  • gcc私のDebianコンピュータのバージョン:6.3.0(パッケージバージョン= 4:6.3.0-4)

編集する: SeaBIOS 出力完了

答え1

私も同じ問題があります。私の場合、binutilsを2.31に更新したため、この問題が発生しました。質問を投稿した日付で判断すると、8月2日からArch Linux binutilsのインストールを2.31に更新したようには思えません。これはかなり良い一致です。

あなたはする必要があります今回提出してください4.16より前のカーネルに適用可能です。

binutils 2.31では、ldリンカ()のデフォルト値を変更してデフォルト値を最大ページサイズ2MiBから4kiBに減った。指定されたコミットが適用されない場合、この変更はx86_64カーネルを中断します。

関連情報