วิธีเริ่ม qemu โดยตรงในคอนโซล (* ไม่ * เป็นคำสาปหรือ 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 คอลัมน์หรือไม่
Michael Hampton

ฉันจะได้สาบานว่าจะไม่มีทางที่จะให้การไหลนี้ถูกต้องบางทีฉันจำไม่ได้สิทธินี้ ...
anarcat

1
ฉันสงสัยว่าสิ่งนี้ไม่ควรรวมเข้ากับstackoverflow.com/questions/19565116/ …และ / หรือstackoverflow.com/questions/18098455/…
anarcat

คำตอบ:


18

คำถามเก่า ๆ แต่ก็ยังคงสนใจผู้คน

สั้น anwser:

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

ttyS0ใช้ได้กับพีซีส่วนใหญ่ มันจะเป็นสิ่งที่แตกต่างในระบบ ARM

จากนั้นพอร์ตอนุกรมและ QEMU จะถูกมัลติเพล็กซ์บนเอาต์พุตของคุณ ctrl-A + C + ENTERคุณสามารถสลับระหว่างพวกเขาด้วย

คำตอบยาว: ตรวจสอบบล็อกนี้มันยอดเยี่ยม


1
ดูเหมือนว่าจะทำงานโดยไม่ต้องซีเรียลสำหรับฉัน
Ciro Santilli 21 改造中心法轮功六四事件

ใช่มันดูเหมือนอื่น qemu ล่าสุดก็ยังคงเป็นที่น่าสนใจที่จะเรียนรู้คุณยังสามารถเพื่ออนุกรม multiplex + qemu คอนโซล stdio
เฟร็ด

1
น่าเสียดายที่นี่ไม่ได้เปลี่ยนเส้นทาง BIOS ผลลัพธ์ใด ๆ รวมถึง int 0x10 output ที่ใช้โดยรหัสโหมดจริง คุณจะเริ่มได้รับเอาต์พุตเมื่อลินุกซ์เคอร์เนลบูทพอที่จะเปิดพอร์ตอนุกรม
เดวิดให้

@DavidGiven ผมคิดว่าเป็นเรื่องของสิ่งที่รหัสไบออส (ซึ่งเป็น SeaBIOS ไม่เหมาะสม qemu) จริงไม่กับ "ส่งออก" 0x10
DepaniDaniel

นอกจากนี้คุณยังสามารถเพิ่มconsole=ttyS0การGRUB_CMDLINE_LINUX_DEFAULTใน/etc/grub(ให้แน่ใจว่าจะโทรupdate-grubหลัง) ให้มันเกิดขึ้นโดยอัตโนมัติ
Steve

3

ติดตั้งSGABIOS - ISTR ว่ารุ่น Qemu -nographicที่ผ่านมาใช้งานได้โดยอัตโนมัติเมื่อทำงานกับ


ผิดปกติพอที่ดูเหมือนจะไม่ได้บรรจุในเดเบียนดังนั้นฉันสงสัยว่านี่คือสิ่งที่ฉันใช้ ...
Anarcat

1

คุณสามารถอัปเดต GRUB เพื่อส่งตัวเลือกที่ต้องการไปยังเคอร์เนล ฉันใช้ Ubuntu 18.04 และฉันทำสิ่งต่อไปนี้:

อัพเดตด้วงในเกสต์ OS:

  • 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ซึ่งให้อินเตอร์เฟซที่ดีกว่าเล็กน้อยกว่าคอนโซล

ตัวเลือกคอนโซลจะถูกคัดลอกจากHOWTO แบบอนุกรมระยะไกลของ tldp


คำถามไม่ได้เกี่ยวกับวิธีการกำหนดค่าด้วง แต่มี qemu มากขึ้น แต่ฉันเชื่อว่าคำตอบแรกบอกว่า-nographicถูกต้อง ขอบคุณสำหรับการยืนยันของคุณ! :)
anarcat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.