├── VNC-4.0-x86_CN.exe ├── README.md └── w.sh /VNC-4.0-x86_CN.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dylanbai8/Onekey_OpenVZ_Install_Windows/HEAD/VNC-4.0-x86_CN.exe -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## OpenVZ虚拟化(架构)VPS 一键安装 Windows 系统 2 | 3 | 测试环境为 Debian7 (理论上支持 Debian Ubuntu 系列的大部分系统) 4 | 5 | ``` 6 | wget -N --no-check-certificate git.io/w.sh && chmod +x w.sh && bash w.sh 7 | ``` 8 | 9 | --- 10 | --- 11 | 12 | ### 为 Debian/Ubuntu 安装远程桌面 13 | ``` 14 | 依次执行 1、4 15 | 16 | 如果需要使用浏览器 依次执行 1、2、4 17 | ``` 18 | 19 | ### 为 Dbian/Ubuntu 安装 WindowsXP 20 | ``` 21 | 依次执行 3、4 22 | 23 | 默认启动内存为 512M 如果需要修改启动内存 依次执行 3、6、4 24 | ``` 25 | 26 | ### 安装自定义 Windows 系统 (iOS 镜像) 27 | ``` 28 | 执行 7 按提示操作 29 | ``` 30 | 31 | --- 32 | --- 33 | 34 | ### 注意事项 35 | ``` 36 | 1.如果安装完后 VNC桌面空白,查看是否有 Sub-process /usr/bin/dpkg returned an error code (1) 报错 37 | 38 | 解决办法1: 39 | 执行 rm /var/lib/dpkg/info/$nomdupaquet* -f 后重新安装 40 | 41 | 解决办法2: 42 | 更换源 或者更换系统 43 | 44 | 2.关于OpenVZ 45 | 在OpenVZ构架的VPS内安装Windows系统 CPU很容易100%运行 46 | 长期CPU、内存爆满 一般主机商不允许这样做 可能被判定为滥用而停封(短暂测试几小时或者一半天是没有问题的) 47 | 48 | 脚本的实现原理为在Debian/Ubuntu系统内使用qemu虚拟化工具安装运行了一个Windows虚拟机 49 | 因此,你为Windows系统分配的硬件资源应尽量的小于vps实际配置 50 | 举例:假如你的vps为2核CPU、2G内存,那么你分配给Windows的硬件资源应为1核CUP、1G内存,或者更少。这样以防止资源爆满 51 | 52 | 如果测试中你的vps不幸被停封了,发工单解释情况(随便编个理由),一般都是可以解封的 53 | 如果你需要长期运行Windows,一定要尽量使用少的资源,推荐不超过vps实际硬件资源的50% 54 | ``` 55 | 56 | --- 57 | --- 58 | 59 | ### 开机自启动 Windows 虚拟机 60 | ``` 61 | 编辑 /etc/rc.local 62 | 在 exit 0 前新增加一行 粘贴以下代码(具体配置可以自行修改) 63 | 64 | qemu-system-x86_64 -hda /root/IMG/win.img -m 512M -smp 1 -daemonize -vnc :2 -net nic,model=virtio -net user -redir tcp:3389::3389 65 | 66 | 【修改端口映射】 67 | 默认主机仅将远程桌面3389端口转发至Windows系统 如果是用来运行程序(如建站)可能需要转发如80、443、22等端口 68 | 只需修改末尾 添加多个端口即可 如:-redir tcp:3389::3389 -redir tcp:443::443 -redir tcp:80::80 69 | 具体格式为 -redir [tcp|udp]:host-port::guest-port 70 | 71 | 查看端口是否正常映射: 72 | lsof -i:"3389" 73 | 有返回内容即为映射正常 74 | 75 | 【修改其它配置】 76 | -m 512M 表示内存为512M 77 | -smp 2 表示使用两个CPU核心 78 | -daemonize 在后台运行虚拟机 79 | -vnc :2 开启vnc远程访问 其中:2标识vnc端口 80 | -net nic,model=virtio -net user 即网络为NAT方式 OpenVZ充当虚拟机的网关和防火墙 81 | -redir tcp:3389::3389 重定向虚拟机的3389端口到主机的网络界面上 82 | ``` 83 | -------------------------------------------------------------------------------- /w.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #==================================================== 4 | # System Request: Debian/Ubuntu 5 | # Author: dylanbai8 6 | # Dscription: OpenVZ虚拟化(架构)VPS 一键安装 Windows 系统 7 | # Open Source: https://github.com/dylanbai8/Onekey_OpenVZ_Install_Windows 8 | # Official document: https://oo0.bid 9 | #==================================================== 10 | 11 | 12 | 13 | 14 | # 为Debian安装远程桌面 15 | install_lxde_vnc(){ 16 | 17 | # 卸载或去除不必要的系统服务 18 | apt-get purge apache2 -y 19 | 20 | # 升级Debian 21 | apt-get update -y 22 | 23 | # 安装LXDE+VncServer桌面环境 24 | apt-get install xorg lxde-core -y 25 | apt-get install tightvncserver -y 26 | apt-get install curl -y 27 | 28 | # 设置VNC密码 29 | echo "----------------------------------------" 30 | echo " 按提示设置 VNC Password 远程桌面密码" 31 | echo "----------------------------------------" 32 | vncserver :1 33 | vncserver -kill :1 34 | 35 | # VNC启动时自动启动LXDE桌面 36 | sed -i '/starlxde/'d /root/.vnc/xstartup 37 | echo "starlxde &" >> /root/.vnc/xstartup 38 | 39 | chmod +x /root/.vnc/xstartup 40 | } 41 | 42 | 43 | 44 | 45 | install_lxde_vnc_menu(){ 46 | local_ip=`curl -4 ip.sb` 47 | clear 48 | echo "----------------------------------------" 49 | echo " 提示:安装 Lxde+VNC 远程桌面 成功" 50 | echo " VNC服务器:${local_ip}:1 未启动" 51 | echo "----------------------------------------" 52 | echo "" 53 | 54 | read -e -p "按任意键返回菜单 ..." 55 | clear 56 | menu 57 | } 58 | 59 | 60 | 61 | 62 | # 添加firefox浏览器和简体中文字体 63 | add_firefox_ttf(){ 64 | apt-get install iceweasel -y 65 | apt-get install ttf-arphic-ukai ttf-arphic-uming ttf-arphic-gbsn00lp ttf-arphic-bkai00mp ttf-arphic-bsmi00lp -y 66 | 67 | clear 68 | echo "----------------------------------------" 69 | echo " 提示:安装 Firefox 浏览器 和 简体中文字体 成功" 70 | echo "----------------------------------------" 71 | echo "" 72 | 73 | read -e -p "按任意键返回菜单 ..." 74 | clear 75 | menu 76 | } 77 | 78 | 79 | 80 | 81 | # 安装qemu+win虚拟机 82 | install_qemu_win(){ 83 | 84 | # 安装qemu虚拟机 85 | apt-get install qemu -y 86 | 87 | # 安装win到虚拟机 88 | wget https://www.dropbox.com/s/gq3e3feukskw72k/winxp.img 89 | mkdir /root/IMG 90 | mv winxp.img /root/IMG/win.img 91 | 92 | touch /root/.vnc/ram.txt 93 | cat < /root/.vnc/ram.txt 94 | 512 95 | EOF 96 | } 97 | 98 | 99 | 100 | 101 | install_qemu_win_menu(){ 102 | local_ip=`curl -4 ip.sb` 103 | clear 104 | echo "----------------------------------------" 105 | echo " 提示:安装 Qemu+WindowsXP 虚拟机 成功" 106 | echo " WindowsXP 默认启动内存 512M 硬盘 4G" 107 | echo " 远程桌面地址:${local_ip}:3389 未启动" 108 | echo "----------------------------------------" 109 | echo "" 110 | 111 | read -e -p "按任意键返回菜单 ..." 112 | clear 113 | menu 114 | } 115 | 116 | 117 | 118 | 119 | check_vnc_install_qemu_win(){ 120 | if [[ -e /usr/bin/vncserver ]]; then 121 | install_qemu_win 122 | else 123 | install_lxde_vnc 124 | install_qemu_win 125 | fi 126 | } 127 | 128 | 129 | 130 | 131 | # 启动 VNC+lxde/qemu_win 132 | start_vnc(){ 133 | vncserver -kill :1 134 | lsof -i:"3389" | awk '{print $2}'| grep -v "PID" | xargs kill -9 135 | 136 | getram=$(cat /root/.vnc/ram.txt) 137 | 138 | vncserver :1 139 | qemu-system-x86_64 -hda /root/IMG/win.img -m ${getram}M -smp 1 -daemonize -vnc :2 -net nic,model=virtio -net user -redir tcp:3389::3389 140 | 141 | local_ip=`curl -4 ip.sb` 142 | clear 143 | echo "----------------------------------------" 144 | echo " 提示:启动 Lxde+VNC(+WindowsXP 如果已安装) 成功" 145 | echo " VNC服务器:${local_ip}:1" 146 | echo "" 147 | echo " 如果已安装 WindowsXP 预计5分钟后可以连接桌面" 148 | echo " VNC服务器:${local_ip}:2" 149 | echo " 远程桌面地址:${local_ip}:3389" 150 | echo " 用户名:administrator 密码:abfan.com" 151 | echo "----------------------------------------" 152 | echo "" 153 | 154 | read -e -p "按任意键返回菜单 ..." 155 | clear 156 | menu 157 | } 158 | 159 | # 关闭 VNC+lxde/qemu_win 160 | stop_vnc(){ 161 | vncserver -kill :1 162 | lsof -i:"3389" | awk '{print $2}'| grep -v "PID" | xargs kill -9 163 | 164 | clear 165 | echo "----------------------------------------" 166 | echo " 提示:关闭 Lxde+VNC(+WindowsXP 如果已启动) 成功" 167 | echo "----------------------------------------" 168 | echo "" 169 | 170 | read -e -p "按任意键返回菜单 ..." 171 | clear 172 | menu 173 | } 174 | 175 | 176 | 177 | 178 | # 设置Windows启动内存 179 | set_win_ram(){ 180 | if [[ -e /root/IMG/win.img ]]; then 181 | 182 | clear 183 | echo "----------------------------------------" 184 | echo " 请输入要设置的RAM值,如:1024" 185 | echo "----------------------------------------" 186 | echo "" 187 | 188 | read -e -p "请输入:" ram 189 | [[ -z ${ram} ]] && ram="none" 190 | if [ "${ram}" = "none" ];then 191 | set_win_ram 192 | fi 193 | 194 | touch /root/.vnc/ram.txt 195 | cat < /root/.vnc/ram.txt 196 | ${ram} 197 | EOF 198 | 199 | clear 200 | echo "----------------------------------------" 201 | echo " 操作已完成 当前 Windows 虚拟机内存为:${ram}M" 202 | echo " 重启 Windows 虚拟机 生效" 203 | echo "----------------------------------------" 204 | echo "" 205 | 206 | read -e -p "按任意键返回菜单 ..." 207 | clear 208 | menu 209 | 210 | else 211 | 212 | clear 213 | echo "----------------------------------------" 214 | echo " 未检查到 Windows 系统镜像 请先执行安装" 215 | echo "----------------------------------------" 216 | echo "" 217 | 218 | read -e -p "按任意键返回菜单 ..." 219 | clear 220 | menu 221 | 222 | fi 223 | } 224 | 225 | 226 | 227 | 228 | win_iso_install(){ 229 | clear 230 | echo "----------------------------------------" 231 | echo " Note: This command must be executed inside the VNC Remote Desktop" 232 | echo " After the installation is complete, log in to the Windows system:" 233 | echo " 1. My computer - right click property - allow remote desktop" 234 | echo " 2. Add account password" 235 | echo "----------------------------------------" 236 | echo "" 237 | 238 | read -e -p "Press any key to continue! Exit with 'Ctrl'+'C' !" 239 | 240 | mv /root/*.iso /root/win.iso 241 | 242 | if [[ -e /root/win.iso ]]; then 243 | 244 | apt-get install qemu -y 245 | 246 | win_iso_ram_disk 247 | 248 | touch /root/.vnc/ram.txt 249 | cat < /root/.vnc/ram.txt 250 | ${nram} 251 | EOF 252 | 253 | rm -rf /root/IMG 254 | mkdir /root/IMG 255 | qemu-img create /root/IMG/win.img ${ndisk}G 256 | 257 | qemu-system-x86_64 -cdrom /root/win.iso -m ${nram}M -boot d /root/IMG/win.img -k en-us 258 | 259 | clear 260 | echo "----------------------------------------" 261 | echo " After the installation is complete, log in to the Windows system:" 262 | echo " 1. My computer - right click property - allow remote desktop" 263 | echo " 2. Add account password" 264 | echo " Back to shell Start VNC to run New Windows system in the background" 265 | echo "----------------------------------------" 266 | 267 | else 268 | 269 | clear 270 | echo "----------------------------------------" 271 | echo " No iso image file detected! Cancel installation" 272 | echo " Please manually download the iso system image into the /root/ directory" 273 | echo " Note: The image file extension must be .iso lowercase" 274 | echo "----------------------------------------" 275 | 276 | fi 277 | } 278 | 279 | 280 | 281 | 282 | win_iso_ram_disk(){ 283 | 284 | clear 285 | echo "----------------------------------------" 286 | echo " Enter the RAM value to be set, for example: 1024" 287 | echo "----------------------------------------" 288 | echo "" 289 | 290 | read -e -p "please enter (Default size 512):" nram 291 | [[ -z ${nram} ]] && nram="512" 292 | 293 | echo "" 294 | echo "----------------------------------------" 295 | echo " Enter the hard disk value to be set, for example: 10" 296 | echo "----------------------------------------" 297 | echo "" 298 | 299 | read -e -p "please enter (Default size 10):" ndisk 300 | [[ -z ${ndisk} ]] && ndisk="10" 301 | 302 | } 303 | 304 | 305 | 306 | 307 | winxp_iso_install(){ 308 | cd /root 309 | wget https://www.dropbox.com/s/x20vw6bkwink0fm/winxp.iso 310 | win_iso_install 311 | } 312 | 313 | 314 | 315 | 316 | # 全部卸载 317 | unstall_all(){ 318 | 319 | # 卸载lxde和vnc 320 | vncserver -kill :1 321 | 322 | apt-get purge xorg -y 323 | apt-get purge lxde -y 324 | apt-get purge tightvncserver -y 325 | apt-get purge curl -y 326 | 327 | rm -rf /root/.vnc 328 | rm -rf /root/Desktop 329 | rm -rf /root/.cache 330 | rm -rf /root/.config 331 | rm -rf /root/.dbus 332 | rm -rf /root/.gconf 333 | rm -rf /root/.gvfs 334 | rm -rf /root/.Xauthority 335 | rm -rf /root/.xsession-errors 336 | 337 | # 卸载firefox浏览器和简体中文字体 338 | apt-get purge iceweasel -y 339 | apt-get purge ttf-arphic-ukai ttf-arphic-uming ttf-arphic-gbsn00lp ttf-arphic-bkai00mp ttf-arphic-bsmi00lp -y 340 | 341 | # 卸载qemu虚拟机 342 | lsof -i:"3389" | awk '{print $2}'| grep -v "PID" | xargs kill -9 343 | apt-get purge qemu -y 344 | 345 | # 删除IMG镜像 346 | if [[ -e /root/IMG/win.img ]]; then 347 | 348 | echo "----------------------------------------" 349 | echo " 检测到已安装Windows系统镜像 是否删除?" 350 | echo "----------------------------------------" 351 | echo "" 352 | 353 | read -e -p "请输入(y/n):" rmIMG 354 | case ${rmIMG} in 355 | [yY][eE][sS]|[yY]) 356 | rm -rf /root/IMG 357 | echo " 已删除 /root/IMG/win.img 系统镜像" 358 | ;; 359 | *) 360 | echo " 取消删除操作 镜像位置:/root/IMG/win.img" 361 | esac 362 | 363 | fi 364 | 365 | clear 366 | echo "----------------------------------------" 367 | echo " 卸载 Lxde+VNC、FireFox+ttf、Qemu+Windows 成功" 368 | echo "----------------------------------------" 369 | echo "" 370 | 371 | read -e -p "按任意键返回菜单 ..." 372 | clear 373 | menu 374 | } 375 | 376 | 377 | 378 | 379 | get_help(){ 380 | local_ip=`curl -4 ip.sb` 381 | clear 382 | echo "----------------------------------------" 383 | echo " **** 自定义安装 Windows 系统版本 ****" 384 | echo "----------------------------------------" 385 | echo "" 386 | echo " 1.依次执行菜单中的 1、4 安装并启动 Lxde+VNC 服务" 387 | echo "" 388 | echo " 2.手动下载 Windows系统 iso镜像文件到 /root/ 目录内" 389 | echo "" 390 | echo " 以 深度精简版 WindowsXP 为例(支持原版安装和Ghost系统)" 391 | echo " cd /root" 392 | echo " wget https://www.dropbox.com/s/x20vw6bkwink0fm/winxp.iso" 393 | echo "" 394 | echo " 3.使用 Windows VNC 客户端连接远程桌面" 395 | echo "" 396 | echo " a.VNC服务器地址:${local_ip}:1" 397 | echo " Windows客户端下载地址:" 398 | echo " https://github.com/dylanbai8/Onekey_OpenVZ_Install_Windows/raw/master/VNC-4.0-x86_CN.exe" 399 | echo "" 400 | echo " b.在 VNC 桌面内 打开终端(Terminal)执行以下命令:" 401 | echo "" 402 | echo " bash w.sh windows" 403 | echo "" 404 | echo " 注意:此命令必须在 VNC 远程桌面内执行" 405 | echo " 按提示设置虚拟机内存和硬盘大小 默认512M内存10G硬盘" 406 | echo " 按提示安装完系统后:1.我的电脑-右键属性-允许远程桌面 2.添加开机密码" 407 | echo "" 408 | echo " 调试完成后 返回 shell 执行脚本启动 VNC 即可在后台运行 新的Windows系统" 409 | echo "" 410 | echo "" 411 | echo " c.如果要安装WindowsXP系统 直接在VNC执行 bash w.sh windowsxp 会自动下载镜像并执行安装" 412 | echo "----------------------------------------" 413 | echo "" 414 | 415 | read -e -p "按任意键返回菜单 ..." 416 | clear 417 | menu 418 | } 419 | 420 | 421 | 422 | 423 | # 安装菜单 424 | menu(){ 425 | echo "----------------------------------------" 426 | echo " 1.一键安装 Lxde+VNC 远程桌面" 427 | echo " 2.添加 Firefox 浏览器 和 简体中文字体" 428 | echo "" 429 | echo " 3.一键安装 Qemu+WindowsXP 虚拟机" 430 | echo "" 431 | echo " 4.启动 Lxde+VNC(+WindowsXP 如果已安装)" 432 | echo " 5.关闭 Lxde+VNC(+WindowsXP 如果已启动)" 433 | echo "" 434 | echo " 6.设置 WindowsXP 启动内存(默认512M)" 435 | echo "" 436 | echo " 7.自定义安装 Windows 系统版本" 437 | echo "" 438 | echo " 8.卸载所有" 439 | echo " 9.退出脚本" 440 | echo "----------------------------------------" 441 | echo "" 442 | 443 | read -e -p "请输入对应的数字:" num 444 | case $num in 445 | 1) 446 | install_lxde_vnc 447 | install_lxde_vnc_menu 448 | ;; 449 | 2) 450 | add_firefox_ttf 451 | ;; 452 | 3) 453 | check_vnc_install_qemu_win 454 | install_qemu_win_menu 455 | ;; 456 | 4) 457 | start_vnc 458 | ;; 459 | 5) 460 | stop_vnc 461 | ;; 462 | 6) 463 | set_win_ram 464 | ;; 465 | 7) 466 | get_help 467 | ;; 468 | 8) 469 | unstall_all 470 | ;; 471 | 9) 472 | exit 0 473 | ;; 474 | *) 475 | clear 476 | menu 477 | esac 478 | } 479 | 480 | 481 | 482 | 483 | # 检测root权限 484 | if [ `id -u` == 0 ]; then 485 | echo "当前用户是 root 用户 开始安装流程" 486 | else 487 | echo "当前用户不是root用户 请切换到 root 用户后重新执行脚本" 488 | exit 1 489 | fi 490 | 491 | 492 | 493 | 494 | # 脚本菜单 495 | case "$1" in 496 | windows) 497 | win_iso_install 498 | ;; 499 | windowsxp) 500 | winxp_iso_install 501 | ;; 502 | *) 503 | clear 504 | menu 505 | esac 506 | 507 | 508 | # 转载请保留版权:https://github.com/dylanbai8/Onekey_OpenVZ_Install_Windows --------------------------------------------------------------------------------