feat: add hot plugging for usb devices
This commit is contained in:
parent
06010bea59
commit
c608ad5ccd
|
@ -4,6 +4,7 @@ set -eu
|
||||||
COMMAND=($@)
|
COMMAND=($@)
|
||||||
LOCKFILE=/var/run/netvm.pid
|
LOCKFILE=/var/run/netvm.pid
|
||||||
QGA_SOCK_PATH=/var/run/netvm_qga.sock
|
QGA_SOCK_PATH=/var/run/netvm_qga.sock
|
||||||
|
QMP_SOCK_PATH=/var/run/netvm_qmp.sock
|
||||||
QGA_SOCK_FDS=false
|
QGA_SOCK_FDS=false
|
||||||
|
|
||||||
qga_connect() {
|
qga_connect() {
|
||||||
|
@ -107,9 +108,10 @@ function cmd_start(){
|
||||||
-net none \
|
-net none \
|
||||||
-cdrom /guest.img \
|
-cdrom /guest.img \
|
||||||
-boot order=d \
|
-boot order=d \
|
||||||
-chardev socket,path=/var/run/netvm_qga.sock,server=on,wait=off,id=qga0 \
|
-chardev socket,path=${QGA_SOCK_PATH},server=on,wait=off,id=qga0 \
|
||||||
|
-qmp unix:${QMP_SOCK_PATH},server,nowait \
|
||||||
$net_args \
|
$net_args \
|
||||||
-device qemu-xhci \
|
-device qemu-xhci,id=usb \
|
||||||
-device virtio-serial \
|
-device virtio-serial \
|
||||||
-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0 \
|
-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0 \
|
||||||
>/dev/null 2>&1 &!
|
>/dev/null 2>&1 &!
|
||||||
|
@ -237,6 +239,20 @@ function cmd_run(){
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cmd_attach() {
|
||||||
|
local id="${COMMAND[1]}"
|
||||||
|
IFS=":" read vendorid_hex productid_hex <<< "$id"
|
||||||
|
|
||||||
|
vendorid=$(printf "%d\n" "0x$vendorid_hex")
|
||||||
|
productid=$(printf "%d\n" "0x$productid_hex")
|
||||||
|
echo $productid
|
||||||
|
echo $vendorid
|
||||||
|
(
|
||||||
|
echo '{"execute":"qmp_capabilities"}'
|
||||||
|
echo '{"execute":"device_add","arguments":{"driver":"usb-host","bus":"usb.0","vendorid":'$vendorid',"productid":'$productid'}}'
|
||||||
|
) | socat - UNIX-CONNECT:/var/run/netvm_qmp.sock
|
||||||
|
}
|
||||||
|
|
||||||
cmd_usage() {
|
cmd_usage() {
|
||||||
cat <<-_EOF
|
cat <<-_EOF
|
||||||
netvm
|
netvm
|
||||||
|
@ -252,6 +268,8 @@ cmd_usage() {
|
||||||
Start interactive network vm in the foreground
|
Start interactive network vm in the foreground
|
||||||
netvm status
|
netvm status
|
||||||
Get hostname and uptime from running network vm
|
Get hostname and uptime from running network vm
|
||||||
|
netvm attach <vendorid:deviceid>
|
||||||
|
Hot-plug a USB device to network VM
|
||||||
netvm push <local-path> <remote-path>
|
netvm push <local-path> <remote-path>
|
||||||
Push a local file to the network VM
|
Push a local file to the network VM
|
||||||
netvm pull <remote-path> <local-path>
|
netvm pull <remote-path> <local-path>
|
||||||
|
|
Loading…
Reference in New Issue