CLI QEMUが起動時に端末全体の幅を使用しているのにnanoまたはgdbを使用するときは使用しないのはなぜですか?

CLI QEMUが起動時に端末全体の幅を使用しているのにnanoまたはgdbを使用するときは使用しないのはなぜですか?

現在、次のようにRISC-V qemuセッションを開始しています。

/usr/bin/qemu-system-riscv64 -machine virt -m 4G -smp cpus=2 -nographic \
    -bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.bin \
    -kernel /usr/lib/u-boot/qemu-riscv64_smode/u-boot.bin \
    -netdev user,id=net0 \
    -device virtio-net-device,netdev=net0 \
    -drive file=qemu_disk.bin,format=raw,if=virtio \
    -device virtio-rng-pci \
    -vga virtio \
    -no-reboot

特に、-vga virtio次のように起動時に端末の全幅を使用するようにしてください。 ここに画像の説明を入力してください。

ただし、qemu VM内でnanoやgdbなどのアプリケーションを開くと、次のように周辺ターミナルウィンドウの全幅の使用が停止します。 ここに画像の説明を入力してください。

nanoやgdbなどのアプリケーションが起動時にそれを認識できるように、QEMUにさらに多くのスペースがあるように動作するように指示するにはどうすればよいですか?

(注:後で「サイズ調整」ツールをインストールして手動で実行できることを発見しましたが、qemuがそれを自動的に処理する方法があるかどうか疑問に思いました。)

ベストアンサー1

「なぜ」と答えてください:

nanoそしてgdb同じ情報を使うstty一般的にこれで十分なので、マークしてください。

最初のスクリーンショットはターミナル機能を使用しようとしないプログラムの出力のみを示しますが、2番目のスクリーンショットは基本設定情報が不足している試みを示すため、デフォルト値(25x80のように見えます)を取得します。

注意深く見てみると、qemuいいえ私自身コンソールでは良い情報を取得できません。例えば、実際に擬似端末を介して接続することができる。これは他のプログラムでも簡単に見ることができます。私が使用する例は次のとおりです。画面。これスティプログラムは正確なサイズを提供しますが、他のサイズであると仮定できます。これは(反対)サイズ変更機能:端末のエスケープシーケンスを使用して正しいサイズを計算し、使用された設定を更新します。スティ

sttyが無視される例

qemuに組み込まれた回避策がない場合は、次を使用してください。サイズ変更(または同様のもの)が解決策です。

おすすめ記事