Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

修复Issue#220;vnc的端口号恢复5900 #243

Merged
merged 6 commits into from
Apr 16, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
添加了qemu使用VNC作为图像输出的选项
HoshuChiu committed Apr 1, 2023
commit 31726d38a7c3c31a3cde1c055f79e5dcd81dab0f
22 changes: 20 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -79,10 +79,16 @@ write_diskimage-uefi:
bash -c "cd tools && bash grub_auto_install.sh && sudo bash $(ROOT_PATH)/tools/write_disk_image.sh --bios=uefi && cd .."
# 不编译,直接启动QEMU
qemu:
sh -c "cd tools && bash run-qemu.sh --bios=legacy && cd .."
sh -c "cd tools && bash run-qemu.sh --bios=legacy --display=window && cd .."
# 不编译,直接启动QEMU(UEFI)
qemu-uefi:
sh -c "cd tools && bash run-qemu.sh --bios=uefi && cd .."
sh -c "cd tools && bash run-qemu.sh --bios=uefi --display=window && cd .."
# 不编译,直接启动QEMU,使用VNC Display作为图像输出
qemu-vnc:
sh -c "cd tools && bash run-qemu.sh --bios=legacy --display=vnc && cd .."
# 不编译,直接启动QEMU(UEFI),使用VNC Display作为图像输出
qemu-uefi-vnc:
sh -c "cd tools && bash run-qemu.sh --bios=uefi --display=vnc && cd .."

# 编译并写入磁盘镜像
build:
@@ -107,6 +113,18 @@ run:
$(MAKE) write_diskimage || exit 1
$(MAKE) qemu

# uefi方式启动,使用VNC Display作为图像输出
run-uefi-vnc:
$(MAKE) all -j $(NPROCS)
$(MAKE) write_diskimage-uefi || exit 1
$(MAKE) qemu-uefi-vnc

# 编译并启动QEMU,使用VNC Display作为图像输出
run-vnc:
$(MAKE) all -j $(NPROCS)
$(MAKE) write_diskimage || exit 1
$(MAKE) qemu-vnc

# 在docker中编译,并启动QEMU
run-docker:
@echo "使用docker构建并运行"
36 changes: 26 additions & 10 deletions tools/run-qemu.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 进行启动前检查
flag_can_run=1
ARGS=`getopt -o p -l bios: -- "$@"`
ARGS=`getopt -o p -l bios:,display: -- "$@"`
eval set -- "${ARGS}"
echo "$@"
allflags=$(qemu-system-x86_64 -cpu help | awk '/flags/ {y=1; getline}; y {print}' | tr ' ' '\n' | grep -Ev "^$" | sed -r 's|^|+|' | tr '\n' ',' | sed -r "s|,$||")
@@ -36,22 +36,38 @@ QEMU_ARGUMENT="-d ${QEMU_DISK_IMAGE} -m ${QEMU_MEMORY} -smp ${QEMU_SMP} -boot or
QEMU_ARGUMENT+="-s -S -cpu ${QEMU_CPU_FEATURES} -rtc ${QEMU_RTC_CLOCK} -serial ${QEMU_SERIAL} -drive ${QEMU_DRIVE} ${QEMU_DEVICES}"

if [ $flag_can_run -eq 1 ]; then
while true;do
case "$1" in
--bios)
case "$2" in
case "$2" in
uefi) #uefi启动新增ovmf.fd固件
if [ ${ARCH} == x86_64 ] ;then
sudo ${QEMU} -bios arch/x86_64/efi/OVMF-pure-efi.fd ${QEMU_ARGUMENT}
elif [ ${ARCH} == i386 ] ;then
sudo ${QEMU} -bios arch/i386/efi/OVMF-pure-efi.fd ${QEMU_ARGUMENT}
fi
BIOS_TYPE=uefi
;;
legacy)
sudo ${QEMU} ${QEMU_ARGUMENT}
BIOS_TYPE=lagacy
;;
esac
esac;shift 2;;
--display)
case "$2" in
vnc)
QEMU_ARGUMENT+=" -display vnc=:00";;
window)
;;
esac;shift 2;;
*) break
esac
done

if [ ${BIOS_TYPE} == uefi ] ;then
if [ ${ARCH} == x86_64 ] ;then
sudo ${QEMU} -bios arch/x86_64/efi/OVMF-pure-efi.fd ${QEMU_ARGUMENT}
elif [ ${ARCH} == i386 ] ;then
sudo ${QEMU} -bios arch/i386/efi/OVMF-pure-efi.fd ${QEMU_ARGUMENT}
fi
else
sudo ${QEMU} ${QEMU_ARGUMENT}
fi

esac
else
echo "不满足运行条件"
fi