mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-12-16 03:52:04 +08:00
Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dbb7a6f9b2 | |||
| 8870ec6764 | |||
| 006b8ae773 | |||
| 3cd38c0032 | |||
| d19453bb22 | |||
| cca44603c2 | |||
| 5eb7bcd358 | |||
| 5818d109b0 | |||
| 01adbc9e20 | |||
| 35246e6046 | |||
| d84191d17e | |||
| 950eca478c | |||
| 1bf5eab4e0 | |||
| 3966cd0b70 | |||
| c4923fa5b9 | |||
| d369503284 | |||
| e26bf4e30f | |||
| bdb53267ee | |||
| dae29fd54e | |||
| 40c52bd1a8 | |||
| 47ebb5ca29 | |||
| e28dc5927e | |||
| 1825136eac | |||
| 9cce5771e5 | |||
| 20c2cc9949 | |||
| c84ca04f96 | |||
| 6f039e7355 | |||
| 44514dfc78 | |||
| 840fb73ba8 | |||
| 4485ff3b74 | |||
| 808cbfd228 | |||
| 4ecd03a520 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@ __pycache__
|
||||
*.deb
|
||||
VM-source/Makefile
|
||||
*.rpm
|
||||
*.pro.user
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
#!/bin/bash
|
||||
echo lat只能在loongarch架构安装
|
||||
sudo apt update
|
||||
sudo apt install lat
|
||||
# 检查是否有 aptss
|
||||
aptPath=apt
|
||||
if [[ -f /usr/bin/aptss ]]; then
|
||||
aptPath=aptss
|
||||
fi
|
||||
# 判断新旧世界
|
||||
if [[ `dpkg --print-architecture` == "loong64" ]]; then
|
||||
# 新世界
|
||||
sudo $aptPath update
|
||||
sudo $aptPath install lat lat-runtime-i386 lat-runtime-amd64
|
||||
echo 按回车键退出
|
||||
read
|
||||
exit
|
||||
fi
|
||||
# 旧世界
|
||||
sudo $aptPath update
|
||||
sudo $aptPath install lat i386-runtime-base i386-runtime-extra
|
||||
echo 按回车键退出
|
||||
read
|
||||
exit
|
||||
1
Makefile
1
Makefile
@@ -121,6 +121,7 @@ package-deb:
|
||||
cp -rv dxvk.7z deb/opt/apps/deepin-wine-runner
|
||||
cp -rv InstallFont.py deb/opt/apps/deepin-wine-runner
|
||||
cp -rv CheckDLL deb/opt/apps/deepin-wine-runner
|
||||
cp -rv InstallLat.sh deb/opt/apps/deepin-wine-runner
|
||||
#cp -rv exagear.7z deb/opt/apps/deepin-wine-runner
|
||||
cp -rv dlls-arm.7z deb/opt/apps/deepin-wine-runner
|
||||
cp -rv deepin.list deb/opt/apps/deepin-wine-runner
|
||||
|
||||
41
README.md
41
README.md
@@ -1,5 +1,5 @@
|
||||
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
|
||||
<h1 align="center">Wine 运行器 3.8.0</h1>
|
||||
<h1 align="center">Wine 运行器 3.9.1</h1>
|
||||
<hr>
|
||||
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark' alt='star'></img></a>
|
||||
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/members'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/fork.svg?theme=dark' alt='fork'></img></a>
|
||||
@@ -7,6 +7,7 @@
|
||||
## 介绍
|
||||
Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序。原版的 Wine 只能使用命令操作,且安装过程较为繁琐,对小白不友好。于是该运行器为了解决该痛点,内置了对Wine图形化的支持、Wine 安装器、微型应用商店、各种Wine工具、自制的Wine程序打包器、运行库安装工具等。
|
||||
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。
|
||||
|
||||
而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。
|
||||
且对于 Deepin23 用户做了特别优化,以便能在缺少 i386 运行库的情况下运行 Wine32。同时也为非 X86 架构用户提供了 Box86/64、Qemu User 的安装方式
|
||||
|
||||
@@ -14,6 +15,9 @@ Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程
|
||||
**在使用运行器时不要随便动 .deepinwine 下的容器,否则会导致安装的 wine 应用无法正常打开**
|
||||
**除非你有把握不会损坏容器**
|
||||
|
||||
|
||||
Wine Runner is a program that allows Linux users to run Windows applications more conveniently. It has built-in support for Wine graphics, various Wine tools, self-made Wine program packager and runtime installation tools. It also has a built-in Windows virtual machine installation tool based on VirtualBox, which is specially used by Xiaobai. You can download the system image and click Install without considering the installation, creation and partitioning of virtual machines.
|
||||
|
||||

|
||||
|
||||
[](https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers)
|
||||
@@ -143,7 +147,30 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
|
||||

|
||||
|
||||
## 更新日志
|
||||
### 3.8.0(2023年04月27日)
|
||||
### 3.9.1(2024/06/07)
|
||||
**※1、修复 Windows 虚拟机安装工具安装程序在 Mips 架构无法正确启动虚拟机的问题**
|
||||
**※2、优化打包器依赖**
|
||||
|
||||
### 3.9.0(2024年06月01日)
|
||||
**※1、UOS Mips64(如 3a4000)用户无需手动降级 Qemu 即可正常开启使用虚拟机**
|
||||
**※2、修复开启部分 exe 提示参数有误的问题**
|
||||
**※3、Qemu 在启动时可以按 ESC 键打开启动菜单**
|
||||
**※4、虚拟机工具 Windows 7 自动安装镜像文件选项内置 Virtio 驱动安装包**
|
||||
**※5、Qemu 虚拟机参数调整若干**
|
||||
**※6、修复虚拟机安装工具系统安装选项会自动跳回第一项的问题**
|
||||
**※7、优化简易打包器包名识别机制**
|
||||
**※8、减少不必要的压缩以减少打包器打包 deb 所需时间**
|
||||
**※9、修复简易打包器生成的 deb 包无法运行的问题**
|
||||
10、优化 lat 安装脚本
|
||||
11、调整星火 Wine 助手路径
|
||||
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
### 3.8.0(2024年04月27日)
|
||||
**※1、修复系统/应用运行库无法下载的问题**
|
||||
**※2、打包器支持指定打包架构为 loong64、loongarch64、armhf 和 amd64**
|
||||
**※3、更新 Geek Uninstaller 版本**
|
||||
@@ -154,6 +181,16 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
|
||||
8、修复问题 https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I9B4L0
|
||||
9、针对 Loongarch ACE 做特别优化
|
||||
|
||||
**※1. Repair system/application library download failed problem**
|
||||
**※2. Support building loong64, loongarch64, armhf and amd64 architecture deb with packager**
|
||||
**※3. Update Geek Uninstaller version**
|
||||
**※4. Enable English translation by default**
|
||||
**※5. Update dxvk version**
|
||||
**※6. Repair virtual machine running problem with newer Qemu**
|
||||
**※7. Support adding space with Qemu virtual disk**
|
||||
8. Fixed an issue related to https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I9B4L0
|
||||
9. Added support for Loongarch ACE
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
50
ShellList/repair-arm-package-problem-to-uos.py
Executable file
50
ShellList/repair-arm-package-problem-to-uos.py
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
|
||||
def Replace(path):
|
||||
"spark-dwine-helper | store.spark-app.spark-dwine-helper"
|
||||
"deepin-wine-helper (>= 5.1.30-1)"
|
||||
"com.wine-helper.deepin"
|
||||
with open(f"{path}/DEBIAN/control", "r") as file:
|
||||
data = file.read()
|
||||
|
||||
isReplace = False
|
||||
isSparkHelper = False
|
||||
# 替换 Wine 包名
|
||||
data = data.replace("deepin-wine6-stable,", "deepin-wine6-stable | com.deepin-wine6-stable.deepin,")
|
||||
data = data.replace("deepin-wine6-stable | deepin-wine6-stable-bcm | deepin-wine6-stable-dcm,", "deepin-wine6-stable | deepin-wine6-stable-bcm | deepin-wine6-stable-dcm | com.deepin-wine6-stable.deepin,")
|
||||
if "spark-dwine-helper | store.spark-app.spark-dwine-helper" in data and not isReplace:
|
||||
isReplace = True
|
||||
isSparkHelper = True
|
||||
data = data.replace("spark-dwine-helper | store.spark-app.spark-dwine-helper", "deepin-wine-helper | com.wine-helper.deepin")
|
||||
|
||||
if "deepin-wine-helper (>= 5.1.30-1)" in data and not isReplace:
|
||||
isReplace = True
|
||||
data = data.replace("deepin-wine-helper (>= 5.1.30-1)", "deepin-wine-helper | com.wine-helper.deepin")
|
||||
with open(f"{path}/DEBIAN/control", "w") as file:
|
||||
file.write(data)
|
||||
if isSparkHelper:
|
||||
ReplaceSparkHelper(path)
|
||||
|
||||
def ReplaceSparkHelper(path):
|
||||
name = os.listdir(f"{path}/opt/apps/")[0]
|
||||
with open(f"{path}/opt/apps/{name}/files/run.sh", "r") as file:
|
||||
data = file.read().replace("/opt/deepinwine/tools/spark_run_v4.sh", "/opt/deepinwine/tools/run_v4.sh")
|
||||
with open(f"{path}/opt/apps/{name}/files/run.sh", "w") as file:
|
||||
file.write(data)
|
||||
|
||||
if len(sys.argv) <= 1:
|
||||
print(f"请加参数,命令示例: {sys.argv[0]} xxx.deb")
|
||||
exit(1)
|
||||
|
||||
tempPath = "/tmp/turn-deb"
|
||||
for i in sys.argv[1:]:
|
||||
os.system(f"rm -rf '{tempPath}'")
|
||||
os.system(f"dpkg -x '{i}' '{tempPath}'")
|
||||
os.system(f"dpkg -e '{i}' '{tempPath}/DEBIAN'")
|
||||
fileName = os.path.splitext(i)[0]
|
||||
# 修改 control 文件
|
||||
Replace(tempPath)
|
||||
|
||||
os.system(f"dpkg-deb -Z xz -z 0 -b '{tempPath}' '{fileName}-new.deb'")
|
||||
26
ShellList/turn-all-to-amd64-arm64-deb.py
Executable file
26
ShellList/turn-all-to-amd64-arm64-deb.py
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
|
||||
def ReadTXT(path):
|
||||
with open(path, "r") as file:
|
||||
thing = file.read()
|
||||
return thing
|
||||
|
||||
def WriteTXT(path, data):
|
||||
with open(path, "w") as file:
|
||||
file.write(data)
|
||||
|
||||
debList = sys.argv[1:]
|
||||
for i in debList:
|
||||
# 解包
|
||||
os.system("rm -rf /tmp/change-old-to-new")
|
||||
os.system(f"dpkg -x '{i}' /tmp/change-old-to-new")
|
||||
os.system(f"dpkg -e '{i}' /tmp/change-old-to-new/DEBIAN")
|
||||
info = ReadTXT("/tmp/change-old-to-new/DEBIAN/control").replace(": all", ": amd64")
|
||||
WriteTXT("/tmp/change-old-to-new/DEBIAN/control", info)
|
||||
os.system(f"dpkg-deb -Z xz -z 0 -b /tmp/change-old-to-new '{os.path.basename(i).replace('_all', '_amd64')}'")
|
||||
info = ReadTXT("/tmp/change-old-to-new/DEBIAN/control").replace(": amd64", ": arm64")
|
||||
WriteTXT("/tmp/change-old-to-new/DEBIAN/control", info)
|
||||
os.system(f"dpkg-deb -Z xz -z 0 -b /tmp/change-old-to-new '{os.path.basename(i).replace('_all', '_arm64')}'")
|
||||
# 检查是否能正常安装
|
||||
23
ShellList/turn-loongarch64-to-loong64-deb.py
Executable file
23
ShellList/turn-loongarch64-to-loong64-deb.py
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
|
||||
def ReadTXT(path):
|
||||
with open(path, "r") as file:
|
||||
thing = file.read()
|
||||
return thing
|
||||
|
||||
def WriteTXT(path, data):
|
||||
with open(path, "w") as file:
|
||||
file.write(data)
|
||||
|
||||
debList = sys.argv[1:]
|
||||
for i in debList:
|
||||
# 解包
|
||||
os.system("rm -rf /tmp/change-old-to-new")
|
||||
os.system(f"dpkg -x '{i}' /tmp/change-old-to-new")
|
||||
os.system(f"dpkg -e '{i}' /tmp/change-old-to-new/DEBIAN")
|
||||
info = ReadTXT("/tmp/change-old-to-new/DEBIAN/control").replace(": loongarch64", ": loong64").replace("Depends: ", "Depends: liblol, ")
|
||||
WriteTXT("/tmp/change-old-to-new/DEBIAN/control", info)
|
||||
os.system(f"dpkg-deb -Z xz -z 9 -b /tmp/change-old-to-new '{os.path.basename(i).replace('_loongarch64', '_loong64')}'")
|
||||
# 检查是否能正常安装
|
||||
26
ShellList/turn-spark-dwine-helper-to-dwine-helper.py
Executable file
26
ShellList/turn-spark-dwine-helper-to-dwine-helper.py
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
|
||||
def ReadTXT(path):
|
||||
with open(path, "r") as file:
|
||||
thing = file.read()
|
||||
return thing
|
||||
|
||||
def WriteTXT(path, data):
|
||||
with open(path, "w") as file:
|
||||
file.write(data)
|
||||
|
||||
debList = sys.argv[1:]
|
||||
for i in debList:
|
||||
# 解包
|
||||
os.system("rm -rf /tmp/change-old-to-new")
|
||||
os.system(f"dpkg -x '{i}' /tmp/change-old-to-new")
|
||||
os.system(f"dpkg -e '{i}' /tmp/change-old-to-new/DEBIAN")
|
||||
info = ReadTXT("/tmp/change-old-to-new/DEBIAN/control").replace("spark-dwine-helper | store.spark-app.spark-dwine-helper", "deepin-wine-helper (>= 5.1.30-1)")
|
||||
WriteTXT("/tmp/change-old-to-new/DEBIAN/control", info)
|
||||
path = os.listdir("/tmp/change-old-to-new/opt/apps")[0]
|
||||
info = ReadTXT(f"/tmp/change-old-to-new/opt/apps/{path}/files/run.sh").replace("/opt/deepinwine/tools/spark_run_v4.sh", "/opt/deepinwine/tools/run_v4.sh")
|
||||
WriteTXT(f"/tmp/change-old-to-new/opt/apps/{path}/files/run.sh", info)
|
||||
os.system(f"dpkg-deb -Z xz -z 0 -b /tmp/change-old-to-new '{os.path.basename(i)}'")
|
||||
# 检查是否能正常安装
|
||||
34
StartVM.sh
34
StartVM.sh
@@ -8,6 +8,7 @@
|
||||
# 基于 Python3 的 tkinter 构建
|
||||
###########################################################################################
|
||||
cd `dirname $0`
|
||||
CURRENT_DIR=$(cd $(dirname $0); pwd)
|
||||
VBoxManage showvminfo Windows
|
||||
if [[ 0 == $? ]]; then
|
||||
# 检测到虚拟机存在,启动虚拟机
|
||||
@@ -49,14 +50,16 @@ if [[ $? == 0 ]] && [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
|
||||
if [[ -f $HOME/.config/deepin-wine-runner/QEMU-EFI ]]; then
|
||||
echo 使用 UEFI 启动
|
||||
if [[ -f /usr/share/qemu/OVMF.fd ]]; then
|
||||
qemuUEFI="--bios /usr/share/qemu/OVMF.fd"
|
||||
qemuUEFI="--bios /usr/share/qemu/OVMF.fd -vga none -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 "
|
||||
else
|
||||
if [[ -f `dirname $0`/VM/OVMF.fd ]]; then
|
||||
qemuUEFI="--bios `dirname $0`/VM/OVMF.fd"
|
||||
qemuUEFI="--bios `dirname $0`/VM/OVMF.fd -vga none -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 "
|
||||
fi
|
||||
fi
|
||||
else
|
||||
qemuUEFI="-vga virtio -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 "
|
||||
fi
|
||||
echo $qemuUEFI
|
||||
fi
|
||||
./VM/kvm-ok
|
||||
if [[ $? == 0 ]] && [[ `arch` == "x86_64" ]]; then
|
||||
echo X86 架构,使用 kvm 加速
|
||||
@@ -64,14 +67,33 @@ if [[ $? == 0 ]] && [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
|
||||
-smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) \
|
||||
-m ${use}G -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI \
|
||||
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
|
||||
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
|
||||
> /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
|
||||
exit
|
||||
fi
|
||||
# 判断系统版本以选择 Qemu
|
||||
isUOS=0
|
||||
qemuPath=qemu-system-x86_64
|
||||
cat /etc/os-version | grep -i uos
|
||||
if [[ $? == 0 ]]; then
|
||||
isUOS=1
|
||||
fi
|
||||
cat /etc/os-version | grep -i unio
|
||||
if [[ $? == 0 ]]; then
|
||||
isUOS=1
|
||||
fi
|
||||
if [[ $isUOS == 1 ]]; then
|
||||
arch=`uname -m`
|
||||
if [[ $arch == "mips64" ]] || [[ $arch == "mips64el" ]]; then
|
||||
qemuPath="bwrap --dev-bind / / --bind ./VM/MipsQemu/usr/lib/mips64el-linux-gnuabi64/qemu/ui-gtk.so /usr/lib/mips64el-linux-gnuabi64/qemu/ui-gtk.so ./VM/MipsQemu/usr/bin/qemu-system-x86_64"
|
||||
fi
|
||||
fi
|
||||
echo 不使用 kvm 加速
|
||||
qemu-system-x86_64 --hda "$HOME/Qemu/Windows/Windows.qcow2" \
|
||||
$qemuPath --hda "$HOME/Qemu/Windows/Windows.qcow2" \
|
||||
-smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) \
|
||||
-m ${use}G -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI \
|
||||
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
|
||||
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
|
||||
> /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
|
||||
exit
|
||||
fi
|
||||
@@ -97,6 +119,7 @@ if [[ $? == 0 ]] && [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
|
||||
-device usb-tablet,id=tablet,bus=xhci.0,port=1 \
|
||||
-device usb-kbd,id=keyboard,bus=xhci.0,port=2 \
|
||||
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
|
||||
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
|
||||
> /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
|
||||
exit
|
||||
fi
|
||||
@@ -108,6 +131,7 @@ if [[ $? == 0 ]] && [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
|
||||
-device usb-tablet,id=tablet,bus=xhci.0,port=1 \
|
||||
-device usb-kbd,id=keyboard,bus=xhci.0,port=2 \
|
||||
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
|
||||
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
|
||||
> /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
|
||||
exit
|
||||
fi
|
||||
@@ -134,6 +158,7 @@ if [[ $? == 0 ]] && [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
|
||||
-device usb-tablet,id=tablet,bus=xhci.0,port=1 \
|
||||
-device usb-kbd,id=keyboard,bus=xhci.0,port=2 \
|
||||
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
|
||||
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
|
||||
> /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
|
||||
exit
|
||||
fi
|
||||
@@ -146,6 +171,7 @@ if [[ $? == 0 ]] && [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
|
||||
-device usb-tablet,id=tablet,bus=xhci.0,port=1 \
|
||||
-device usb-kbd,id=keyboard,bus=xhci.0,port=2 \
|
||||
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
|
||||
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
|
||||
> /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
|
||||
exit
|
||||
fi
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 7.0.1, 2023-11-25T17:10:08. -->
|
||||
<!-- Written by QtCreator 9.0.2, 2024-06-01T15:39:37. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
@@ -8,7 +8,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="int">0</value>
|
||||
<value type="qlonglong">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
@@ -28,7 +28,7 @@
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
@@ -54,6 +54,7 @@
|
||||
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
@@ -92,9 +93,9 @@
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">桌面</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">桌面</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b17c65ba-6912-41bf-b5c1-4c7446f6c967}</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="int" key="EnableQmlDebugging">0</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/build-VirtualMachine-unknown-Debug</value>
|
||||
@@ -110,9 +111,9 @@
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
@@ -121,7 +122,7 @@
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
@@ -149,9 +150,9 @@
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
@@ -160,7 +161,7 @@
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
@@ -190,9 +191,9 @@
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
@@ -201,7 +202,7 @@
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
@@ -217,12 +218,12 @@
|
||||
<value type="int" key="QtQuickCompiler">0</value>
|
||||
<value type="int" key="SeparateDebugInfo">0</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
@@ -230,7 +231,7 @@
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
@@ -247,7 +248,7 @@
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/build-VirtualMachine-unknown-Debug</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
@@ -257,9 +258,9 @@
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.15.6 in PATH (qt5)</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.15.6 in PATH (qt5)</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ab20853c-9d79-473a-820e-8e95c145170e}</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/building/deep-wine-runner/VM-source</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/gfdgd_xi/Desktop/building/deep-wine-runner/VM-source</value>
|
||||
@@ -274,9 +275,9 @@
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
@@ -285,7 +286,7 @@
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
@@ -299,12 +300,12 @@
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
@@ -312,7 +313,7 @@
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
@@ -328,12 +329,12 @@
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="int">2</value>
|
||||
<value type="qlonglong">2</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
BIN
VM-source/boot.jpg
Normal file
BIN
VM-source/boot.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
198
VM-source/boot.svg
Normal file
198
VM-source/boot.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 15 KiB |
@@ -145,7 +145,7 @@ void MainWindow::ShowCPUMessage(){
|
||||
}
|
||||
m_cpuAll = cpuAll;
|
||||
m_cpuFree = cpuFree;
|
||||
ui->retranslateUi(this);
|
||||
//ui->retranslateUi(this);
|
||||
}
|
||||
|
||||
QString MainWindow::GetRunCommand(QString command){
|
||||
|
||||
@@ -245,7 +245,7 @@ hr { height: 1px; border-width: 0; }
|
||||
li.unchecked::marker { content: "\2610"; }
|
||||
li.checked::marker { content: "\2612"; }
|
||||
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans CJK SC'; font-size:11pt;">UOS 3a4000 用户在使用 Qemu 时可能会出现虚拟机无法正常开机的问题,需要安装/降级到以下链接的版本:</span></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans CJK SC'; font-size:11pt;">UOS 3a4000 用户在使用 Qemu 时可能会出现虚拟机无法正常开机的问题,如果出现上述问题需要安装/降级到以下链接的版本:</span></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans CJK SC'; font-size:11pt;">蓝奏云:</span><a href="https://gfdgdxi.lanzoue.com/b01rk9wza"><span style=" font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;">https://gfdgdxi.lanzoue.com/b01rk9wza</span></a><span style=" font-family:'Noto Sans CJK SC'; font-size:11pt;"> 密码:6wvf</span></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans CJK SC'; font-size:11pt;">诚通网盘:</span><a href="http://ctfile.gfdgdxi.top/d/31540479-58662214-c46520?p=2061"><span style=" font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;">http://ctfile.gfdgdxi.top/d/31540479-58662214-c46520?p=2061</span></a><span style=" font-family:'Noto Sans CJK SC'; font-size:11pt;"> (访问密码: 2061)</span></p>
|
||||
<hr />
|
||||
|
||||
@@ -109,32 +109,60 @@ int qemu::StartArmhf()
|
||||
{
|
||||
qDebug() << commandOption;
|
||||
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "aarch64" && !system((QCoreApplication::applicationDirPath() + "/kvm-ok").toUtf8())){
|
||||
return system(("qemu-system-arm -display vnc=:5 -display gtk --enable-kvm -cpu host -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
return system(("qemu-system-arm --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk --enable-kvm -cpu host -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
}
|
||||
return system(("qemu-system-arm --boot d -display vnc=:5 -display gtk -cpu max -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
return system(("qemu-system-arm --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk -cpu max -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
}
|
||||
|
||||
int qemu::StartAarch64()
|
||||
{
|
||||
QString bootScreenLogo = "";
|
||||
// 判断 boot 文件是否存在
|
||||
if(QFile::exists(QCoreApplication::applicationDirPath() + "/boot.jpg")) {
|
||||
bootScreenLogo = QCoreApplication::applicationDirPath() + "/boot.jpg";
|
||||
}
|
||||
else {
|
||||
// 写入 logo
|
||||
QFile::copy(":/boot.jpg", "/tmp/deep-wine-runner-boot.jpg");
|
||||
bootScreenLogo = "/tmp/deep-wine-runner-boot.jpg";
|
||||
}
|
||||
qDebug() << commandOption;
|
||||
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "aarch64" && !system((QCoreApplication::applicationDirPath() + "/kvm-ok").toUtf8())){
|
||||
return system(("qemu-system-aarch64 --boot d -display vnc=:5 -display gtk --enable-kvm -cpu host -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
return system(("qemu-system-aarch64 --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk --enable-kvm -cpu host -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
}
|
||||
return system(("qemu-system-aarch64 --boot d -display vnc=:5 -display gtk -cpu max -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
return system(("qemu-system-aarch64 --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk -cpu max -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
}
|
||||
|
||||
int qemu::StartLoong64()
|
||||
{
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int qemu::Start(bool unShown)
|
||||
{
|
||||
QString newCommandOption = commandOption;
|
||||
QString qemuPath = "qemu-system-x86_64";
|
||||
qDebug() << GetBootLogoPath();
|
||||
if(isUEFI) {
|
||||
newCommandOption += " -vga none -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 ";
|
||||
}
|
||||
else {
|
||||
newCommandOption += " -vga virtio -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 ";
|
||||
}
|
||||
// UOS 3a4000 使用程序自带的 qemu
|
||||
QString info = SystemInfo().toLower();
|
||||
if(info.contains("uos") || info.contains("unio")) {
|
||||
// 判断架构
|
||||
QString arch = GetArch();
|
||||
if(arch == "mips64" || arch == "mipsel64") {
|
||||
qemuPath = "bwrap --dev-bind / / --bind '" + QCoreApplication::applicationDirPath() + "/MipsQemu/usr/lib/mips64el-linux-gnuabi64/qemu/ui-gtk.so' /usr/lib/mips64el-linux-gnuabi64/qemu/ui-gtk.so '" + QCoreApplication::applicationDirPath() + "/MipsQemu/usr/bin/qemu-system-x86_64' ";
|
||||
}
|
||||
}
|
||||
qDebug() << commandOption;
|
||||
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "x86_64" && !system((QCoreApplication::applicationDirPath() + "/kvm-ok").toUtf8())){
|
||||
return system(("qemu-system-x86_64 --boot d -display vnc=:5 -display gtk --enable-kvm -cpu host " + commandOption + " > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
return system((qemuPath + " --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk --enable-kvm -cpu host " + newCommandOption + " > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
}
|
||||
return system(("qemu-system-x86_64 --boot d -display vnc=:5 -display gtk -nic model=rtl8139 " + commandOption + " > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
return system((qemuPath + " --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk -nic model=rtl8139 " + newCommandOption + " > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||
}
|
||||
int qemu::Stop()
|
||||
{
|
||||
@@ -239,6 +267,7 @@ int qemu::UseOtherEFI(QString fdFilePath)
|
||||
|
||||
int qemu::EnabledUEFI(bool status)
|
||||
{
|
||||
isUEFI = status;
|
||||
if(!status){
|
||||
return 0;
|
||||
}
|
||||
@@ -268,3 +297,41 @@ int qemu::AddDiskSpace(QString path, double data)
|
||||
{
|
||||
return system(("qemu-img resize '" + path + "' +" + QString::number(data) + "G").toUtf8());
|
||||
}
|
||||
|
||||
QString qemu::GetBootLogoPath()
|
||||
{
|
||||
QString bootScreenLogo = "";
|
||||
// 判断 boot 文件是否存在
|
||||
if(QFile::exists(QCoreApplication::applicationDirPath() + "/boot.jpg")) {
|
||||
bootScreenLogo = QCoreApplication::applicationDirPath() + "/boot.jpg";
|
||||
}
|
||||
else {
|
||||
// 写入 logo
|
||||
if(QFile::exists("/tmp/deep-wine-runner-boot.jpg")) {
|
||||
QFile::remove("/tmp/deep-wine-runner-boot.jpg");
|
||||
}
|
||||
QFile::copy(":/boot.jpg", "/tmp/deep-wine-runner-boot.jpg");
|
||||
bootScreenLogo = "/tmp/deep-wine-runner-boot.jpg";
|
||||
}
|
||||
return bootScreenLogo;
|
||||
}
|
||||
|
||||
QString qemu::SystemInfo()
|
||||
{
|
||||
QFile file("/etc/os-version");
|
||||
file.open(QFile::ReadOnly);
|
||||
QString data = file.readAll();
|
||||
file.close();
|
||||
return data;
|
||||
}
|
||||
|
||||
QString qemu::GetArch()
|
||||
{
|
||||
QProcess process;
|
||||
process.start("uname", QStringList() << "-m");
|
||||
process.waitForStarted();
|
||||
process.waitForFinished();
|
||||
QString data = process.readAllStandardOutput();
|
||||
process.close();
|
||||
return data.replace("\n", "").replace(" ", "");
|
||||
}
|
||||
|
||||
@@ -52,6 +52,10 @@ public:
|
||||
int AddDiskSpace(QString path, double data);
|
||||
private:
|
||||
QString commandOption = "";
|
||||
bool isUEFI = false;
|
||||
QString GetBootLogoPath();
|
||||
QString SystemInfo();
|
||||
QString GetArch();
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
<file>LANG/virtualmachine-en_US.qm</file>
|
||||
<file>LANG/virtualmachine-en_US.ts</file>
|
||||
<file>application-vnd.oasis.opendocument.text.svg</file>
|
||||
<file>boot.jpg</file>
|
||||
<file>boot.svg</file>
|
||||
</qresource>
|
||||
<qresource prefix="/picture">
|
||||
<file>截图_VirtualBox Machine_20220712142929.png</file>
|
||||
|
||||
131
VM/MipsQemu/etc/init.d/qemu-guest-agent
Executable file
131
VM/MipsQemu/etc/init.d/qemu-guest-agent
Executable file
@@ -0,0 +1,131 @@
|
||||
#! /bin/sh
|
||||
### BEGIN INIT INFO
|
||||
# Provides: qemu-guest-agent
|
||||
# Required-Start: $remote_fs $syslog
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: QEMU Guest Agent startup script
|
||||
# Description: Start the QEMU Guest Agent if we're running
|
||||
# in a QEMU virtual machine
|
||||
### END INIT INFO
|
||||
|
||||
# Author: Michael Tokarev <mjt@tls.msk.ru>
|
||||
|
||||
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
||||
DESC="QEMU Guest Agent"
|
||||
NAME=qemu-ga
|
||||
DAEMON=/usr/sbin/$NAME
|
||||
PIDFILE=/var/run/$NAME.pid
|
||||
|
||||
# config
|
||||
DAEMON_ARGS=""
|
||||
# default transport
|
||||
TRANSPORT=virtio-serial:/dev/virtio-ports/org.qemu.guest_agent.0
|
||||
|
||||
# Exit if the package is not installed
|
||||
[ -x "$DAEMON" ] || exit 0
|
||||
|
||||
# Read configuration variable file if it is present
|
||||
[ -r /etc/default/qemu-guest-agent ] && . /etc/default/qemu-guest-agent
|
||||
|
||||
# Load the VERBOSE setting and other rcS variables
|
||||
. /lib/init/vars.sh
|
||||
|
||||
# Define LSB log_* functions.
|
||||
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
|
||||
# and status_of_proc is working.
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
#
|
||||
# Function that checks whenever system has necessary environment
|
||||
# It also splits $TRANSPORT into $method and $path
|
||||
#
|
||||
do_check_transport() {
|
||||
method=${TRANSPORT%%:*}; path=${TRANSPORT#*:}
|
||||
case "$method" in
|
||||
virtio-serial | isa-serial)
|
||||
if [ ! -e "$path" ]; then
|
||||
log_warning_msg "$NAME: transport endpoint not found, not starting"
|
||||
return 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
#
|
||||
# Function that starts the daemon/service
|
||||
#
|
||||
do_start()
|
||||
{
|
||||
# Return
|
||||
# 0 if daemon has been started
|
||||
# 1 if daemon was already running
|
||||
# 2 if daemon could not be started
|
||||
start-stop-daemon -Sq -p $PIDFILE -x $DAEMON --test > /dev/null \
|
||||
|| return 1
|
||||
start-stop-daemon -Sq -p $PIDFILE -x $DAEMON -- --daemonize \
|
||||
$DAEMON_ARGS -m "$method" -p "$path" \
|
||||
|| return 2
|
||||
}
|
||||
|
||||
#
|
||||
# Function that stops the daemon/service
|
||||
#
|
||||
do_stop()
|
||||
{
|
||||
# Return
|
||||
# 0 if daemon has been stopped
|
||||
# 1 if daemon was already stopped
|
||||
# 2 if daemon could not be stopped
|
||||
# other if a failure occurred
|
||||
start-stop-daemon -Kq --retry=TERM/30/KILL/5 -p $PIDFILE --name $NAME
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
do_check_transport || exit 0
|
||||
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" $NAME
|
||||
do_start
|
||||
case "$?" in
|
||||
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
||||
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
|
||||
esac
|
||||
;;
|
||||
stop)
|
||||
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" $NAME
|
||||
do_stop
|
||||
case "$?" in
|
||||
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
||||
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
|
||||
esac
|
||||
;;
|
||||
status)
|
||||
status_of_proc "$DAEMON" $NAME && exit 0 || exit $?
|
||||
;;
|
||||
restart|force-reload) # we do not support reload
|
||||
do_check_transport || exit 0
|
||||
log_daemon_msg "Restarting $DESC" $NAME
|
||||
do_stop
|
||||
case "$?" in
|
||||
0|1)
|
||||
do_start
|
||||
case "$?" in
|
||||
0) log_end_msg 0 ;;
|
||||
1) log_end_msg 1 ;; # Old process is still running
|
||||
*) log_end_msg 1 ;; # Failed to start
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
# Failed to stop
|
||||
log_end_msg 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
echo "Usage: /etc/init.d/qemu-guest-agent {start|stop|status|restart|force-reload}" >&2
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
|
||||
:
|
||||
6
VM/MipsQemu/etc/qemu-ifdown
Executable file
6
VM/MipsQemu/etc/qemu-ifdown
Executable file
@@ -0,0 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Script to shut down a network (tap) device for qemu.
|
||||
# Initially this script is empty, but you can configure,
|
||||
# for example, accounting info here.
|
||||
|
||||
:
|
||||
42
VM/MipsQemu/etc/qemu-ifup
Executable file
42
VM/MipsQemu/etc/qemu-ifup
Executable file
@@ -0,0 +1,42 @@
|
||||
#! /bin/sh
|
||||
# Script to bring a network (tap) device for qemu up.
|
||||
# The idea is to add the tap device to the same bridge
|
||||
# as we have default routing to.
|
||||
|
||||
# in order to be able to find brctl
|
||||
PATH=$PATH:/sbin:/usr/sbin
|
||||
ip=$(which ip)
|
||||
|
||||
if [ -n "$ip" ]; then
|
||||
ip link set "$1" up
|
||||
else
|
||||
brctl=$(which brctl)
|
||||
if [ ! "$ip" -o ! "$brctl" ]; then
|
||||
echo "W: $0: not doing any bridge processing: neither ip nor brctl utility not found" >&2
|
||||
exit 0
|
||||
fi
|
||||
ifconfig "$1" 0.0.0.0 up
|
||||
fi
|
||||
|
||||
switch=$(ip route ls | \
|
||||
awk '/^default / {
|
||||
for(i=0;i<NF;i++) { if ($i == "dev") { print $(i+1); next; } }
|
||||
}'
|
||||
)
|
||||
|
||||
# only add the interface to default-route bridge if we
|
||||
# have such interface (with default route) and if that
|
||||
# interface is actually a bridge.
|
||||
# It is possible to have several default routes too
|
||||
for br in $switch; do
|
||||
if [ -d /sys/class/net/$br/bridge/. ]; then
|
||||
if [ -n "$ip" ]; then
|
||||
ip link set "$1" master "$br"
|
||||
else
|
||||
brctl addif $br "$1"
|
||||
fi
|
||||
exit # exit with status of the previous command
|
||||
fi
|
||||
done
|
||||
|
||||
echo "W: $0: no bridge for guest interface found" >&2
|
||||
33
VM/MipsQemu/etc/qemu/fsfreeze-hook
Executable file
33
VM/MipsQemu/etc/qemu/fsfreeze-hook
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This script is executed when a guest agent receives fsfreeze-freeze and
|
||||
# fsfreeze-thaw command, if it is specified in --fsfreeze-hook (-F)
|
||||
# option of qemu-ga or placed in default path (/etc/qemu/fsfreeze-hook).
|
||||
# When the agent receives fsfreeze-freeze request, this script is issued with
|
||||
# "freeze" argument before the filesystem is frozen. And for fsfreeze-thaw
|
||||
# request, it is issued with "thaw" argument after filesystem is thawed.
|
||||
|
||||
LOGFILE=/var/log/qga-fsfreeze-hook.log
|
||||
FSFREEZE_D=$(dirname -- "$0")/fsfreeze-hook.d
|
||||
|
||||
# Check whether file $1 is a backup or rpm-generated file and should be ignored
|
||||
is_ignored_file() {
|
||||
case "$1" in
|
||||
*~ | *.bak | *.orig | *.rpmnew | *.rpmorig | *.rpmsave | *.sample | *.dpkg-old | *.dpkg-new | *.dpkg-tmp | *.dpkg-dist | *.dpkg-bak | *.dpkg-backup | *.dpkg-remove)
|
||||
return 0 ;;
|
||||
esac
|
||||
return 1
|
||||
}
|
||||
|
||||
# Iterate executables in directory "fsfreeze-hook.d" with the specified args
|
||||
[ ! -d "$FSFREEZE_D" ] && exit 0
|
||||
for file in "$FSFREEZE_D"/* ; do
|
||||
is_ignored_file "$file" && continue
|
||||
[ -x "$file" ] || continue
|
||||
printf "$(date): execute $file $@\n" >>$LOGFILE
|
||||
"$file" "$@" >>$LOGFILE 2>&1
|
||||
STATUS=$?
|
||||
printf "$(date): $file finished with status=$STATUS\n" >>$LOGFILE
|
||||
done
|
||||
|
||||
exit 0
|
||||
11
VM/MipsQemu/lib/systemd/system/qemu-guest-agent.service
Normal file
11
VM/MipsQemu/lib/systemd/system/qemu-guest-agent.service
Normal file
@@ -0,0 +1,11 @@
|
||||
[Unit]
|
||||
Description=QEMU Guest Agent
|
||||
BindsTo=dev-virtio\x2dports-org.qemu.guest_agent.0.device
|
||||
After=dev-virtio\x2dports-org.qemu.guest_agent.0.device
|
||||
|
||||
[Service]
|
||||
ExecStart=-/usr/sbin/qemu-ga
|
||||
Restart=always
|
||||
RestartSec=0
|
||||
|
||||
[Install]
|
||||
2
VM/MipsQemu/lib/udev/rules.d/60-qemu-guest-agent.rules
Normal file
2
VM/MipsQemu/lib/udev/rules.d/60-qemu-guest-agent.rules
Normal file
@@ -0,0 +1,2 @@
|
||||
SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", \
|
||||
TAG+="systemd" ENV{SYSTEMD_WANTS}="qemu-guest-agent.service"
|
||||
BIN
VM/MipsQemu/usr/bin/ivshmem-client
Executable file
BIN
VM/MipsQemu/usr/bin/ivshmem-client
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/bin/ivshmem-server
Executable file
BIN
VM/MipsQemu/usr/bin/ivshmem-server
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/bin/qemu-img
Executable file
BIN
VM/MipsQemu/usr/bin/qemu-img
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/bin/qemu-io
Executable file
BIN
VM/MipsQemu/usr/bin/qemu-io
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/bin/qemu-nbd
Executable file
BIN
VM/MipsQemu/usr/bin/qemu-nbd
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/bin/qemu-pr-helper
Executable file
BIN
VM/MipsQemu/usr/bin/qemu-pr-helper
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/bin/qemu-system-aarch64
Executable file
BIN
VM/MipsQemu/usr/bin/qemu-system-aarch64
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/bin/qemu-system-arm
Executable file
BIN
VM/MipsQemu/usr/bin/qemu-system-arm
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/bin/qemu-system-i386
Executable file
BIN
VM/MipsQemu/usr/bin/qemu-system-i386
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/bin/qemu-system-x86_64
Executable file
BIN
VM/MipsQemu/usr/bin/qemu-system-x86_64
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/bin/virtfs-proxy-helper
Executable file
BIN
VM/MipsQemu/usr/bin/virtfs-proxy-helper
Executable file
Binary file not shown.
1
VM/MipsQemu/usr/lib/ipxe/82540em.rom
Symbolic link
1
VM/MipsQemu/usr/lib/ipxe/82540em.rom
Symbolic link
@@ -0,0 +1 @@
|
||||
qemu/pxe-e1000.rom
|
||||
1
VM/MipsQemu/usr/lib/ipxe/e1000_82540.rom
Symbolic link
1
VM/MipsQemu/usr/lib/ipxe/e1000_82540.rom
Symbolic link
@@ -0,0 +1 @@
|
||||
qemu/pxe-e1000.rom
|
||||
1
VM/MipsQemu/usr/lib/ipxe/eepro100.rom
Symbolic link
1
VM/MipsQemu/usr/lib/ipxe/eepro100.rom
Symbolic link
@@ -0,0 +1 @@
|
||||
qemu/pxe-eepro100.rom
|
||||
1
VM/MipsQemu/usr/lib/ipxe/ns8390.rom
Symbolic link
1
VM/MipsQemu/usr/lib/ipxe/ns8390.rom
Symbolic link
@@ -0,0 +1 @@
|
||||
qemu/pxe-ne2k_pci.rom
|
||||
1
VM/MipsQemu/usr/lib/ipxe/pcnet32.rom
Symbolic link
1
VM/MipsQemu/usr/lib/ipxe/pcnet32.rom
Symbolic link
@@ -0,0 +1 @@
|
||||
qemu/pxe-pcnet.rom
|
||||
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-e1000.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-e1000.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-e1000e.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-e1000e.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-eepro100.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-eepro100.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-ne2k_pci.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-ne2k_pci.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-pcnet.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-pcnet.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-rtl8139.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-rtl8139.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-virtio.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-virtio.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-vmxnet3.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/efi-vmxnet3.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-e1000.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-e1000.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-e1000e.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-e1000e.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-eepro100.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-eepro100.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-ne2k_pci.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-ne2k_pci.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-pcnet.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-pcnet.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-rtl8139.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-rtl8139.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-virtio.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-virtio.rom
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-vmxnet3.rom
Normal file
BIN
VM/MipsQemu/usr/lib/ipxe/qemu/pxe-vmxnet3.rom
Normal file
Binary file not shown.
1
VM/MipsQemu/usr/lib/ipxe/rtl8139.rom
Symbolic link
1
VM/MipsQemu/usr/lib/ipxe/rtl8139.rom
Symbolic link
@@ -0,0 +1 @@
|
||||
qemu/pxe-rtl8139.rom
|
||||
1
VM/MipsQemu/usr/lib/ipxe/virtio-net.rom
Symbolic link
1
VM/MipsQemu/usr/lib/ipxe/virtio-net.rom
Symbolic link
@@ -0,0 +1 @@
|
||||
qemu/pxe-virtio.rom
|
||||
BIN
VM/MipsQemu/usr/lib/mips64el-linux-gnuabi64/qemu/audio-pa.so
Normal file
BIN
VM/MipsQemu/usr/lib/mips64el-linux-gnuabi64/qemu/audio-pa.so
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/mips64el-linux-gnuabi64/qemu/ui-gtk.so
Normal file
BIN
VM/MipsQemu/usr/lib/mips64el-linux-gnuabi64/qemu/ui-gtk.so
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/lib/qemu/qemu-bridge-helper
Executable file
BIN
VM/MipsQemu/usr/lib/qemu/qemu-bridge-helper
Executable file
Binary file not shown.
BIN
VM/MipsQemu/usr/sbin/qemu-ga
Executable file
BIN
VM/MipsQemu/usr/sbin/qemu-ga
Executable file
Binary file not shown.
141
VM/MipsQemu/usr/sbin/qemu-make-debian-root
Executable file
141
VM/MipsQemu/usr/sbin/qemu-make-debian-root
Executable file
@@ -0,0 +1,141 @@
|
||||
#! /bin/sh -e
|
||||
#
|
||||
# $Id: qemu-make-debian-root 353 2008-10-16 20:28:22Z aurel32 $
|
||||
#
|
||||
# Script to make a debian root image.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
which debootstrap >/dev/null || {
|
||||
echo "error: missing debootstrap package" >&2
|
||||
exit 1
|
||||
}
|
||||
which sfdisk >/dev/null || {
|
||||
echo "error: missing fdisk package" >&2
|
||||
exit 1
|
||||
}
|
||||
which mke2fs >/dev/null || {
|
||||
echo "error: missing e2fsprogs package" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
KEEPFS=0
|
||||
SPARSE=0
|
||||
|
||||
while :; do
|
||||
case "$1" in
|
||||
-k)
|
||||
KEEPFS=1
|
||||
;;
|
||||
-s)
|
||||
SPARSE=1
|
||||
;;
|
||||
-ks|-sk)
|
||||
KEEPFS=1
|
||||
SPARSE=1
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ $# -lt 4 ]; then
|
||||
echo Usage: "$0 [-ks] size-in-MB distrib deburl image [files_to_copy_in_/root]" >&2
|
||||
echo "eg $0 150 sid http://proxy:10000/debian qemu" >&2
|
||||
echo "-k keep file system -s sparse image" >&2
|
||||
echo "$0 is normally run as root." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SIZE=$1 # In Mib
|
||||
DISTRO=$2
|
||||
URL=$3
|
||||
IMAGE=$4
|
||||
shift 4
|
||||
|
||||
# now files to copy are in "$@". We don't put them in a variable
|
||||
# because that would coufuse spaces-in-filenames with
|
||||
# whitespace-separation.
|
||||
|
||||
|
||||
if [ $SIZE -lt 130 ]; then
|
||||
echo 'Size must be at least 130 megabytes (Debian unstable takes 100)' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cleanup()
|
||||
{
|
||||
echo Cleaning up... >&2
|
||||
umount -d $TMP_DIR || true
|
||||
losetup -d $LOOP || true
|
||||
rm -f $IMAGE
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
# Create a filesystem: one track for partition table.
|
||||
if [ "$SPARSE" = "1" ]; then
|
||||
truncate -s ${SIZE}M "$IMAGE"
|
||||
else
|
||||
dd bs=1M count=$SIZE if=/dev/zero of=$IMAGE
|
||||
fi
|
||||
|
||||
SECT=63 # first sector of a partition
|
||||
|
||||
# Partition so one partition covers entire disk.
|
||||
echo "$SECT," | sfdisk -uS -L $IMAGE
|
||||
|
||||
# Find an unused loop device and set it up.
|
||||
LOOP=`losetup -f`
|
||||
losetup -o $(($SECT*512)) $LOOP $IMAGE
|
||||
|
||||
# Create filesystem.
|
||||
mke2fs -q -m1 $LOOP
|
||||
|
||||
TMP_DIR="$(mktemp -d /tmp/mount.XXXXXX)" || \
|
||||
{ echo >&2 "Failed to create temporary directory"; exit 1; }
|
||||
|
||||
# Mount it.
|
||||
mount $LOOP $TMP_DIR
|
||||
|
||||
# Do debian install on it.
|
||||
debootstrap --variant=minbase $DISTRO $TMP_DIR $URL
|
||||
|
||||
# Final configuration.
|
||||
cat > $TMP_DIR/etc/fstab <<EOF
|
||||
/dev/hda1 / ext2 errors=remount-ro 0 1
|
||||
proc /proc proc defaults 0 0
|
||||
EOF
|
||||
|
||||
# Console on ttyS0, not tty1, and no other gettys.
|
||||
sed 's,1:2345:respawn:/sbin/getty 38400 tty1,1:2345:respawn:/sbin/getty 38400 ttyS0,' < $TMP_DIR/etc/inittab | sed 's,^.:23:respawn.*,,' > $TMP_DIR/etc/inittab.new
|
||||
mv $TMP_DIR/etc/inittab.new $TMP_DIR/etc/inittab
|
||||
|
||||
# Set hostname to base of image name.
|
||||
basename $IMAGE > $TMP_DIR/etc/hostname
|
||||
|
||||
# Create /etc/shadow
|
||||
chroot $TMP_DIR pwconv
|
||||
|
||||
# Set root password to "root"
|
||||
sed 's/^root:[^:]*/root:$1$aybpiIGf$cB7iFDNZvViQtQjEZ5HFQ0/' < $TMP_DIR/etc/shadow > $TMP_DIR/etc/shadow.new
|
||||
mv $TMP_DIR/etc/shadow.new $TMP_DIR/etc/shadow
|
||||
|
||||
# Remove packages we don't need
|
||||
chroot $TMP_DIR /usr/bin/dpkg --remove console-common console-tools console-data base-config man-db manpages
|
||||
# Try to remove all libraries: some won't be removable.
|
||||
chroot $TMP_DIR dpkg --remove `chroot $TMP_DIR dpkg --get-selections | sed -n 's/^\(lib[^ \t]*\)[\t ]*install/\1/p'` 2>/dev/null || true
|
||||
|
||||
|
||||
# Copy wanted files to /root if asked to
|
||||
if [ $# -gt 0 ]; then
|
||||
cp -a "$@" $TMP_DIR/root/
|
||||
fi
|
||||
umount -d $TMP_DIR
|
||||
|
||||
trap "" EXIT
|
||||
|
||||
echo Done.
|
||||
BIN
VM/MipsQemu/usr/share/locale/bg/LC_MESSAGES/qemu.mo
Normal file
BIN
VM/MipsQemu/usr/share/locale/bg/LC_MESSAGES/qemu.mo
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/locale/de_DE/LC_MESSAGES/qemu.mo
Normal file
BIN
VM/MipsQemu/usr/share/locale/de_DE/LC_MESSAGES/qemu.mo
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/locale/fr_FR/LC_MESSAGES/qemu.mo
Normal file
BIN
VM/MipsQemu/usr/share/locale/fr_FR/LC_MESSAGES/qemu.mo
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/locale/hu/LC_MESSAGES/qemu.mo
Normal file
BIN
VM/MipsQemu/usr/share/locale/hu/LC_MESSAGES/qemu.mo
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/locale/it/LC_MESSAGES/qemu.mo
Normal file
BIN
VM/MipsQemu/usr/share/locale/it/LC_MESSAGES/qemu.mo
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/locale/tr/LC_MESSAGES/qemu.mo
Normal file
BIN
VM/MipsQemu/usr/share/locale/tr/LC_MESSAGES/qemu.mo
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/locale/zh_CN/LC_MESSAGES/qemu.mo
Normal file
BIN
VM/MipsQemu/usr/share/locale/zh_CN/LC_MESSAGES/qemu.mo
Normal file
Binary file not shown.
4003
VM/MipsQemu/usr/share/qemu/trace-events-all
Normal file
4003
VM/MipsQemu/usr/share/qemu/trace-events-all
Normal file
File diff suppressed because it is too large
Load Diff
BIN
VM/MipsQemu/usr/share/seabios/acpi-dsdt.aml
Normal file
BIN
VM/MipsQemu/usr/share/seabios/acpi-dsdt.aml
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/bios-256k.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/bios-256k.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/bios.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/bios.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/extboot.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/extboot.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/kvmvapic.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/kvmvapic.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/linuxboot.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/linuxboot.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/linuxboot_dma.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/linuxboot_dma.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/multiboot.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/multiboot.bin
Normal file
Binary file not shown.
1
VM/MipsQemu/usr/share/seabios/optionrom/extboot.bin
Symbolic link
1
VM/MipsQemu/usr/share/seabios/optionrom/extboot.bin
Symbolic link
@@ -0,0 +1 @@
|
||||
../extboot.bin
|
||||
1
VM/MipsQemu/usr/share/seabios/optionrom/kvmvapic.bin
Symbolic link
1
VM/MipsQemu/usr/share/seabios/optionrom/kvmvapic.bin
Symbolic link
@@ -0,0 +1 @@
|
||||
../kvmvapic.bin
|
||||
1
VM/MipsQemu/usr/share/seabios/optionrom/linuxboot.bin
Symbolic link
1
VM/MipsQemu/usr/share/seabios/optionrom/linuxboot.bin
Symbolic link
@@ -0,0 +1 @@
|
||||
../linuxboot.bin
|
||||
1
VM/MipsQemu/usr/share/seabios/optionrom/multiboot.bin
Symbolic link
1
VM/MipsQemu/usr/share/seabios/optionrom/multiboot.bin
Symbolic link
@@ -0,0 +1 @@
|
||||
../multiboot.bin
|
||||
1
VM/MipsQemu/usr/share/seabios/optionrom/vapic.bin
Symbolic link
1
VM/MipsQemu/usr/share/seabios/optionrom/vapic.bin
Symbolic link
@@ -0,0 +1 @@
|
||||
../vapic.bin
|
||||
BIN
VM/MipsQemu/usr/share/seabios/q35-acpi-dsdt.aml
Normal file
BIN
VM/MipsQemu/usr/share/seabios/q35-acpi-dsdt.aml
Normal file
Binary file not shown.
1
VM/MipsQemu/usr/share/seabios/vapic.bin
Symbolic link
1
VM/MipsQemu/usr/share/seabios/vapic.bin
Symbolic link
@@ -0,0 +1 @@
|
||||
kvmvapic.bin
|
||||
BIN
VM/MipsQemu/usr/share/seabios/vgabios-cirrus.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/vgabios-cirrus.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/vgabios-isavga.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/vgabios-isavga.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/vgabios-qxl.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/vgabios-qxl.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/vgabios-stdvga.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/vgabios-stdvga.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/vgabios-virtio.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/vgabios-virtio.bin
Normal file
Binary file not shown.
BIN
VM/MipsQemu/usr/share/seabios/vgabios-vmware.bin
Normal file
BIN
VM/MipsQemu/usr/share/seabios/vgabios-vmware.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
VM/VirtualMachine-loongarch64
Normal file → Executable file
BIN
VM/VirtualMachine-loongarch64
Normal file → Executable file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user