几个疑问
- Windows10安装好了之后需要界面进去设置RDP远程访问。但是一般linux服务器完全的命令行方式岂不是陷入了鸡生蛋、蛋生鸡的困境?
virtualbox 提供了一个叫vrde的方式,当你启动一个虚拟机(无论是否已经安装好os)的时候,你就可以使用rdp的任何客户端连接这个服务,然后就看到了界面,通过这个界面安装操作系统和在本地用USB的方式安装操作系统一样,点击下一步就可以了。
环境和软件准备
- linux服务器一台,配置看个人,我的是完全的命令方式
- 下载好windows10.iso
- 下载 virtualbox https://download.virtualbox.org/virtualbox/6.1.36/VirtualBox-6.1-6.1.36_152435_el6-1.x86_64.rpm
- 下载 virtualbox扩展包,有了这个才能再命令行模式下安装操作系统 https://download.virtualbox.org/virtualbox/6.1.36/Oracle_VM_VirtualBox_Extension_Pack-6.1.36-152435.vbox-extpack
- 下载 virtualbox guest additions https://download.virtualbox.org/virtualbox/6.1.36/VBoxGuestAdditions_6.1.36.iso
关于virtualbox的不同版本,不同平台的安装都在这个连接 https://download.virtualbox.org/virtualbox/, 根据情况自己去看。
$ ls -l
-rw-r--r-- 1 xxxxxx root 11231896 Jul 20 22:08 Oracle_VM_VirtualBox_Extension_Pack-6.1.36a-152435.vbox-extpack
-rw-r--r-- 1 xxxxxx root 63803392 Jul 20 09:54 VBoxGuestAdditions_6.1.36.iso
-rw-r--r-- 1 xxxxxx root 97752792 Jul 20 10:42 VirtualBox-6.1-6.1.36_152435_el7-1.x86_64.rpm
drwx------ 3 xxxxxx root 48 Aug 4 10:49 win10
-rw-r--r-- 1 xxxxxx root 4682743808 Aug 4 15:09 Windows.iso
安装软件
$sudo yum install ./VirtualBox-6.1-6.1.36_152435_el7-1.x86_64.rpm # 安装virtual box虚拟机
$sudo vboxmanage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.36a-152435.vbox-extpack # 安装virtual box 命令扩展包
$vboxmanage list extpacks # 检查一下扩展包是否成功,如果出现下面这个输出就是成功
Extension Packs: 1
Pack no. 0: Oracle VM VirtualBox Extension Pack
Version: 6.1.36
Revision: 152435
Edition:
Description: Oracle Cloud Infrastructure integration, USB 2.0 and USB 3.0 Host Controller, Host Webcam, VirtualBox RDP, PXE ROM, Disk Encryption, NVMe.
VRDE Module: VBoxVRDP
Usable: true
Why unusable:
创建虚拟机
$VBoxManage createvm --name win10 --ostype Windows7_64 --basefolder ~/myvm/ --register # 创建虚拟机,名字为win10,保存再 ~/myvm/下
$VBoxManage createmedium --filename ~/myvm/win10.vdi --size 102400 #创建一个磁盘, 大小10GB
$VBoxManage storagectl win10 --name SATAController --add sata --controller IntelAHCI # 磁盘控制器
$VBoxManage storageattach win10 --storagectl SATAController --port 0 --device 0 --type hdd --medium ~/myvm/win10.vdi # 控制器和磁盘绑定
$VBoxManage storagectl win10 --name dvddrive --add ide # 加一个光驱
$VBoxManage storageattach win10 --storagectl dvddrive --type dvddrive --port 1 --device 0 --medium ~/win7.iso #插入操作系统光盘镜像
$VBosManage modifyvm win10 --memory 20480 # 配置虚拟机内存20GB
$VBosManage modifyvm win10 --cpus 8 # 配置虚拟机CPU个数
# 启动顺序设置
$VBoxManage modifyvm win10 --boot1 dvd
$VBoxManage modifyvm win10 --boot1 disk
$VBoxManage modifyvm win10 --nic1 bridged --cableconnected1 on --bridgeadapter1 enp7s0 # 桥接模式上网,也就是虚拟机会从局域网得到一个IP,使用网卡为enp7s0, 网卡名字根据自己linux情况具体而定
$VBoxManage modifyvm win10 --vrde on
$VBoxManage modifyvm win10 --vrdeport 3900 # 这个端口是你用RDP连接Windows的端口
启动
$VBoxManage startvm win10 --type headless --vrdp on
- 如果你的linux服务器有公网ip,那么啥都不用做。如果是通过的跳板机,那么还要做个ssh隧道,这个我就不详细说了,经常用的人都懂。把3900映射到本地来。
- 此时可以通过rdp(就是Windows自带的那个远程桌面)远程访问了,输入
localhost:3900
(我是用的ssh隧道,如果你的linux有公网ip就用公网ip)第一次访问是安装操作系统,一直点击下一步就行了(这个时候鼠标重影还很严重)。 - 安装好操作系统第二次进入稍作配置(此时依旧鼠标重影),然后关机
$VBoxManage storageattach win10 --storagectl dvddrive --type dvddrive --port 1 --device 0 --medium ~/VBoxGuestAdditions_6.1.36.iso
通过命令挂载VBoxGuestAdditions, 然后开机,点开我的电脑->光驱进行安装,之后重新启动,发现鼠标没有重影了。- 此时通过远程桌面连接,虚拟机的屏幕很小,怎么解决? TODO
其他控制命令
# 关闭虚拟机
$VBoxManage controlvm win10 poweroff
$VBoxManage controlvm win10 acpipowerbutton
$VBoxManage list vms # 查看目前已经安装的虚拟机
异常
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005) with meanjs and vagrant \ 这是因为在命令行下启动虚拟机,必须加上
headless
, 例如VBoxManage startvm "VM name" --type headless
VM in virtualbox is already locked for a session (or being unlocked) \ 执行
vboxmanage startvm <vm-uuid> --type emergencystop