观察者
deepin
2025-01-21 17:14 命令行用ai优化了下,改参数就行。
先新建虚拟盘 :
qemu-img create -f qcow2 deepin25.qcow2 100G
然后的ai优化的bash脚本如下bost启动的没uefi,安装完成后cdrom里的iso地址可清空,iso删除都不影响。
#!/usr/bin/env bash
# 虚拟机名称,用于标识虚拟机进程
VM_NAME="deepin"
# 虚拟机镜像文件路径
VM_IMAGE="deepin25.qcow2"
# 虚拟机内存大小,单位为 MB
VM_MEMORY="2048M"
# 虚拟机 CPU 核心数
VM_CPUS="1"
# 每个 CPU 核心的线程数
VM_THREADS="2"
# 虚拟机显示模式,可选 "sdl" 或 "none"
DISPLAY_MODE="sdl"
# OpenGL 支持,默认为打开(如果系统不支持 OpenGL,设置为 off)
OPENGL_SUPPORT="on"
# SPICE 远程桌面端口号
SPICE_PORT="5931"
# SPICE 远程桌面监听地址
SPICE_ADDR="127.0.0.1"
# 虚拟机主机名
NET_HOSTNAME="$VM_NAME"
# 主机端口,用于转发到虚拟机的 SSH 端口(22)
NET_FWD_PORT="22221"
# 网络设备 ID
NET_ID="nic"
# 音频后端类型(spice 或 none)
AUDIO_BACKEND="spice"
# 音频设备 ID
AUDIO_ID="audio0"
# 随机数生成器设备
RNG_DEVICE="virtio-rng-pci"
# 随机数生成器后端
RNG_BACKEND="rng-random"
# 随机数生成器文件路径
RNG_FILE="/dev/urandom"
# USB 重定向设备数量
USB_REDIRECT_NUM=3
# ISO 镜像文件路径(用于安装系统)
CDROM_IMAGE="/home/debian/镜像文件/deepin-desktop-community-25-preview-amd64.iso"
# 美化输出
function log_info() {
echo -e "\033[32m[INFO]\033[0m $1"
}
function log_error() {
echo -e "\033[31m[ERROR]\033[0m $1" >&2
}
# 检查镜像文件是否存在
if [[ ! -f "$VM_IMAGE" ]]; then
log_error "虚拟机镜像文件 $VM_IMAGE 不存在!"
exit 1
fi
# 启动QEMU虚拟机
log_info "启动 $VM_NAME 虚拟机..."
/usr/bin/qemu-system-x86_64 \
-name "$VM_NAME,process=$VM_NAME" \
-enable-kvm \
-machine q35,vmport=off \
-cpu host,kvm=on \
-smp cores=$VM_CPUS,threads=$VM_THREADS,sockets=1 \
-m $VM_MEMORY \
-device virtio-balloon \
-vga none \
-display $DISPLAY_MODE,gl=$OPENGL_SUPPORT \
-device qxl-vga,ram_size=65536,vram_size=65536,vgamem_mb=64 \
-audiodev $AUDIO_BACKEND,id=$AUDIO_ID \
-device intel-hda \
-device hda-duplex,audiodev=$AUDIO_ID \
-rtc base=localtime,clock=host,driftfix=slew \
-spice disable-ticketing=on,port=$SPICE_PORT,addr=$SPICE_ADDR \
-device $RNG_DEVICE,rng=$RNG_BACKEND \
-object $RNG_BACKEND,id=$RNG_BACKEND,filename=$RNG_FILE \
-device qemu-xhci,id=spicepass \
$(for i in $(seq 1 $USB_REDIRECT_NUM); do
echo "-chardev spicevmc,id=usbredirchardev$i,name=usbredir"
echo "-device usb-redir,chardev=usbredirchardev$i,id=usbredirdev$i"
done) \
-device pci-ohci,id=smartpass \
-device usb-ccid \
-chardev spicevmc,id=ccid,name=smartcard \
-device ccid-card-passthru,chardev=ccid \
-device usb-ehci,id=input \
-device usb-kbd,bus=input.0 \
-k en-us \
-device usb-tablet,bus=input.0 \
-device virtio-net,netdev=$NET_ID \
-netdev user,hostname=$NET_HOSTNAME,hostfwd=tcp::$NET_FWD_PORT-:22,id=$NET_ID \
-device virtio-scsi-pci,id=scsi0 \
-drive id=SystemDisk,format=qcow2,file=$VM_IMAGE,if=virtio \
-display none > qemu.log 2>&1 &
# 获取 QEMU 进程的 PID
QEMU_PID=$!
# 等待 QEMU 进程启动
sleep 2
# 检查 QEMU 进程是否在运行
if ps -p $QEMU_PID > /dev/null; then
log_info "$VM_NAME 虚拟机已成功启动。"
else
log_error "$VM_NAME 虚拟机启动失败!"
exit 1
fi
# 等待 QEMU 进程退出
wait $QEMU_PID
QEMU_EXIT_STATUS=$?
# 检查 QEMU 退出状态
if [[ $QEMU_EXIT_STATUS -eq 0 ]]; then
log_info "$VM_NAME 虚拟机已正常退出。"
else
log_error "$VM_NAME 虚拟机异常退出,状态码: $QEMU_EXIT_STATUS"
exit 1
fi
Reply Like 0 View the author
各位大佬,为什么在KVM虚拟机安装完成系统后,删除安装系统的ISO文件就会无法启动系统?因为安装光盘ISO文件都是动辄几个G的大件,比较费空间,总想删除它,在VBOX和VMWARE都可以删除的安装光盘映像,为什么在KVM中就不行呢?