ฉันต้องเรียกใช้ VM สามเครื่องบน QEMU
สำหรับ VM ใน ctrl-vm src-vm dst-vm
ทำ
กรณี ${VM} ใน
"ctrl-vm")
mac_addr=00:00:00:00:00:01
แตะ = แตะ 0
พอร์ต = 30020
;;
"src-vm")
mac_addr=00:00:00:00:00:02
แตะ=แตะ1
พอร์ต=30021
;;
"dst-vm")
mac_addr=00:00:00:00:00:03
แตะ=tap2
พอร์ต=30022
;;
เอสแซค
DISTRO = "เดเบียนเป้า"
IMAGE_NAME=${VM}
MACHINE_NAME="qemuamd64"
IMAGE_TYPE="wic.img"
ROOTFS="/dev/sda2"
FULL_IMAGE_NAME="${IMAGE_NAME}-${DISTRO}-${MACHINE_NAME}"
ISAR_OUT_DIR="${KAS_WORK_DIR}/build/tmp/deploy/images/${MACHINE_NAME}"
DISK_PATH="${ISAR_OUT_DIR}/${FULL_IMAGE_NAME}"
KERNEL="${DISK_PATH}-vmlinuz"
INITRD="${DISK_PATH}-initrd.img"
ถ้า [ -n "${QEMU_PATH}" ]; แล้ว
QEMU_PATH="${QEMU_PATH}/"
ไฟ
QEMU=qemu-ระบบ-x86_64
QEMU_EXTRA_ARGS=" \
-s \
-โนกราฟิก \
-cpu โฮสต์ -smp 4 \
-เปิดใช้งาน-kvm -เครื่อง q35 \
-device-ide-hd,drive=disk \
-อุปกรณ์ virtio-net-pci,netdev=vnet0,mac=${mac_addr}"
KERNEL_CMDLINE=" \
root=${ROOTFS} console=ttyS0 แก้ปัญหา \
"
${QEMU_PATH}${QEMU} \
-drive file=${DISK_PATH}.${IMAGE_TYPE},discard=unmap,if=none,id=disk,format=raw \
-m 1G \
-netdev tap,id=vnet0,ifname=${tap},script=no,downscript=no \
-ผู้ใช้เน็ต,hostfwd=tcp::30020-:22 \
-เคอร์เนล "${KERNEL}" \
-ต่อท้าย "${KERNEL_CMDLINE}" \
-initrd "${INITRD}" ${QEMU_EXTRA_ARGS} "$@" &
เสร็จแล้ว
ฉันต้องการเรียกใช้ VM ในพื้นหลังและเชื่อมต่อผ่าน ssh (กำหนด IP ไว้ในรูปภาพแล้ว)
แต่เมื่อฉันเรียกใช้สคริปต์ คอนโซล VM จะเริ่มต้นในเทอร์มินัลเดียวกัน และอีก 2 VM ไม่เริ่มทำงาน ฉันเพิ่ม "&" ที่ส่วนท้ายของคำสั่งแล้ว แต่ก็ยังใช้งานไม่ได้