コンソールで直接qemuを起動する方法(* cursesまたはSDLではありません)


18

グラフィックウィンドウを無効にして、ターミナルエミュレータ出力のみでqemuを起動できたことを思い出すようです。そして、ここでは、ncursesインターフェースを使用するという意味ではありませんが、それは素晴らしいのですが、出力を直接端末に流して、カットアンドペーストを容易にします。

私が試してみました:

qemu -nographic binary.img # simply no display
qemu -curses binary.img # nice text output, but not directly flowing in the terminal
qemu -noframe -curses binary.img # same as above
qemu -nographic -curses binary.img

許容できる回避策は、使用している端末に合わせてcursesコンソールのサイズを変更できることです。今のところ、端末のサイズに合わないので迷惑です...

qemu -curses  binary.img



           SeaBIOS (version 1.7.0-20120603_194846-gandalf)



           iPXE (http://ipxe.org) 00:03.0 C900 PCI2.10 PnP PMM+07FC86A0+07F886A0 C900


           Booting from Hard Disk...
           [...]

ディスプレイが12スペース分インデントされていることに注目してください。うるさい。:)


80桁のターミナルを使用しますか?
マイケルハンプトン

私がしている可能性が宣誓が...多分私はこの権利を覚えていない、適切にこれを流すための方法だった
anarcat


回答:


18

古い質問ですが、それでも人々に興味があるかもしれません。

短いアンカー:

qemu -nographic -serial mon:stdio -append 'console=ttyS0' binary.img

ttyS0ほとんどのPCで有効です。ARMシステムでは異なるものになります。

次に、シリアルポートとQEMUが出力に多重化されます。で切り替えることができctrl-A + C + ENTERます。

長い答え:このブログをチェックしてください、それは素晴らしいです。


1
私にとってはシリアルなしで動作するようです。
Ciro Santilli新疆改造中心法轮功六四事件

はい、最新のqemuでは、stdioでシリアル+ qemuコンソールを多重化できることを学ぶのはまだ興味深いようです
フレッド

1
残念ながら、これはリアルモードコードで使用されるint 0x10出力を含むBIOS出力をリダイレクトしません。Linuxカーネルが起動してシリアルポートを開くことができたら、出力の取得のみを開始します。
デビッド

私はそれがBIOSの(SeaBIOSではなく、QEMU適切な)コードが実際に何の問題だと仮定し@DavidGiven 0x10の「出力」と。
DepressedDaniel

またconsole=ttyS0GRUB_CMDLINE_LINUX_DEFAULTinに追加して/etc/grubupdate-grub後で呼び出すようにしてください)、自動的に実行されるようにすることもできます。
スティーブ

3

SGABIOSをインストールします。最新のQemuバージョンで実行するとISTRが自動的に使用されます-nographic


奇妙なことに、これはDebianにパッケージ化されていないようですので、これが私が使用していたものではないかと思います
...-anarcat

1

GRUBを更新して、必要なオプションをカーネルに渡すことができます。Ubuntu 18.04を使用していますが、次のことを行いました。

ゲストOSでgrubを更新します。

  • sudoedit /etc/default/grub
  • 変更GRUB_CMDLINE_LINUX=""GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
  • 走る sudo update-grub

次を使用してゲストOSを再起動します。

qemu-system-x86_64 \
  -drive file=ubuntu-18.04-live-server-amd64.img.qcow2,format=qcow2 \
  -nographic \
  -m 4G \
;

-nic user,hostfwd=tcp:127.0.0.1:2222-:22オプションとして追加または同様のものを追加することをお勧めします。これにより、ssh接続が有効にssh -p 2222 localhostなり、コンソールよりわずかに優れたインターフェイスが提供されます。

コンソールオプションはtldpのリモートシリアルHOWTOからコピーされます


質問は実際にはgrubの設定方法ではなく、もっとqemuでした。しかし、最初の答えが言うように、それ-nographicは正しいと思います。ご協力ありがとうございます!:)
anarcat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.