日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何使用 QEMU 中的虚拟串口

發布時間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用 QEMU 中的虚拟串口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何使用?QEMU?中的虛擬串口[轉]_yanglin_新浪博客如何使用?QEMU?中的虛擬串口[轉]_yanglin_新浪博客,yanglin,http://blog.sina.com.cn/s/blog_a1e6528101019xmm.html

QEMU 具有模擬?串口?和?并口?的能力, 在 QEMU 的命令行接口, 提供了 -serial 參數供用戶設置把虛擬的串口重定向到哪里.

本文檔主要介紹如何使用這個虛擬串口, 接下來會從代碼方面描述 QEMU 如何模擬 一個串口.

不使用串口

$ qemu-kvm ArchLinux.img?-serial?none

不管是 Linxu 還是 Window, 在 QEMU 里面禁用了串口, 但是用一些硬件檢測 工具還是能檢測到串口的存在. 用一段簡單的代碼來檢測是否串口可以使用

#!/usr/bin/python?import?serial?try: s = serial.Serial('/dev/ttyS0')?print?"Find serial port on /dev/ttyS0"?except:?print?"Cant found serial port on /dev/ttyS0"

重定向到虛擬控制臺

$ qemu-kvm ArchLinux.img?-serial?vc:800x600?# 或者 vc:80Cx24C

實際上, 默認 啟動 QEMU 的時候如果不加參數的話, 會自動創建四個控制臺, 分別用 Ctrl + Alt + number 來切換, number 為 1, 2 或 3, 4 其中 1 是 QEMU 的圖形終端, 2 是 QEMU 的 Monitor 終端(QEMU 的 Monitor 稍候會介紹), 3 是 Serial 終端, 4 是并口終端.

重定向到一個偽終端

$ qemu-kvm ArchLinux.img?-serial?pty

然后會發生什么呢? QEMU 會自動創建一個偽終端設備(/dev/pts/3) 之類的, 然后 用 screen 之類的工具就可以操縱這個終端了.

PS. 這東西 Linux only 喲

重定向到 null

$ qemu-kvm ArchLinux.img?-serial?null

這和重定向到 none 有什么區別呢? 區別就是 -> none QEMU 不會虛擬串口設備, 但是 -> null 會虛擬一個串口設備, 丟棄所有的輸出: 如以下的代碼. 至于輸入? 需要輸入嗎?

static?int?null_chr_write(CharDriverState?*chr,?const?uint8_t?*buf,?int?len)?{?return?len;?}

重定向要真實串口設備

$ qemu-kvm ArchLinux.img?-serial?/dev/ttyS0

但是虛擬串口的硬件參數需要和真實串口符合

PS. Linux only 喲

重定向到并口

$ qemu-kvm ArchLinux.img?-serial?/dev/parportN

重定向到第 N 個并口

PS. Linux only 喲

重定向到一個文件

$ qemu-kvm ArchLinux.img?-serial?file:/tmp/serial.out

不過從打開文件的方式看來, QEMU 只是把串口的輸出寫入文件, 而并不支持串口的 輸入.

TFR(fd_out?=?qemu_open(qemu_opt_get(opts,?"path"),?O_WRONLY?|?O_TRUNC?|?O_CREAT?|?O_BINARY,?0666));

重定向到 stdio

$ qemu-kvm ArchLinux.img?-serial?stdio

把串口重定向到標準輸入輸出, 這給調試 Guest OS(其實我說的是 Linux OS, 你要調試 Window OS? 你吃飽了撐的?)提供了方便.

重定向到管道

$ qemu-kvm ArchLinux.img?-serial?pipe:/tmp/serial:

不過這玩意還比上面的復雜, 根據 QEMU 打開這類設備的代碼, 需要手動創建 /tmp/serial.in 和 /tmp/serial.out 兩個管道文件

snprintf(filename_in,?256,?"%s.in",?filename);?snprintf(filename_out,?256,?"%s.out",?filename);?TFR(fd_in?=?qemu_open(filename_in,?O_RDWR?|?O_BINARY));?TFR(fd_out?=?qemu_open(filename_out,?O_RDWR?|?O_BINARY)); $?mkdir?fifo?/tmp/serial.in $?mkdir?fifo?/tmp/serial.out

怎么使用呢? cat /tmp/serial.out 會看到 Linux 登錄的一堆信息, 最后停在?virt-debian login:?這里等待輸入, 用

$?echo?your_username?>>?/tmp/serial.in $?echo?your_password?>>?/tmp/serial.in

再打開 cat /tmp/serial.p.out 就可以看到內容已經變成?root@virt-debian:~#?這樣的東西了.

所以這玩意對我用處不大

重定向到 udp 端口

$ qemu-kvm ArchLinux.img?-serial?udp::3333

將 QEMU 的串口重定向到 3333 端口, 使用 nc 訪問這個端口 (當然可以自己編寫 socket 訪問). 這對遠程管理很有幫助

$ nc?-u?-l?-p?3333

重定向到 tcp 端口

$ qemu-kvm ArchLinux.img?-serial?tcp::3333,server,nowait

可以使用 telnet 來訪問該端口

$ telnet localhost?3333

重定向到 telnet

幾乎 TCP 是一樣的

$ qemu-kvm ArchLinux.img?-serial?telnet::3333,server,nowait

重定向到 Unix socket

$ qemu-kvm ArchLinux.img?-serial?unix:/tmp/serial.sock,server,nowait

用 socat 連接

$ socat?/tmp/serial.sock STDIO

同時定向到串口和 mon 控制臺

$ qemu-kvm ArchLinux.img?-serial?mon:telnet::3333,server,nowait

這將同時定向串口到 TCP 3333 端口的同時, 可以使用 Ctrl + a 然后按 c 訪問 Monitor 終端

定向到 braille

這個太強大了, 相關 google braille

msmouse

重來沒有使用過

總結

以上是生活随笔為你收集整理的如何使用 QEMU 中的虚拟串口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。