本次是将一个已经在windows环境下,可以正常使用的VirtualBox虚拟机放到fedora33的VirtualBox中运行。
下面开始干:
将原在windows中的VirtualBox虚拟机注册到VirtualBox环境中
注册成功后,查看VirtualBox环境中的虚拟机
[root@localhost ~]# VBoxManage list vms
"centos-7-20210521" {b09f4765-c719-4fe6-98bb-061a1e21c731}
启动虚拟机
[root@localhost ~]# VBoxManage startvm centos-7-20210521
Waiting for VM "centos-7-20210521" to power on...
VBoxManage: error: The virtual machine 'centos-7-20210521' has terminated unexpectedly during startup because of signal 6
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine
经过一番百度后,确定是需要无界面启动虚拟机
[root@localhost ~]# VBoxManage startvm centos-7-20210521 --type headless
Waiting for VM "centos-7-20210521" to power on...
VBoxManage: error: Could not open the medium '/root/VirtualBox VMs/centos-7/centos-7-20210521/D:/ssd/VirtualBox VMs/centos-7/centos-7.vdi'.
VBoxManage: error: VD: error VERR_FILE_NOT_FOUND opening image file '/root/VirtualBox VMs/centos-7/centos-7-20210521/D:/ssd/VirtualBox VMs/centos-7/centos-7.vdi' (VERR_FILE_NOT_FOUND)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MediumWrap, interface IMedium
经过对以上报错信息进行分析后,发现虚拟磁盘路径不对,又是一番百度后,决定先看下硬盘列表
[root@localhost ~]# VBoxManage list hdds
UUID: 239206ae-49a3-4ed6-abfd-11b65b068b60
Parent UUID: base
State: inaccessible
Type: normal (base)
Location: /root/VirtualBox VMs/centos-7/centos-7-20210521/D:/ssd/VirtualBox VMs/centos-7/centos-7.vdi
Storage format: VDI
Capacity: 0 MBytes
Encryption: disabled
通过对以上信息分析发现VirtualBox环境中虚拟磁盘路径就有问题,需要重新关联,又是一番百度,需要先把虚拟磁盘先解除关联,命令如下:
[root@localhost ~]# VBoxManage storageattach centos-7-20210521 --storagectl SATA --port 0 --device 0 --type hdd --medium none
好了解除关联后,还需要重新关联上,命令如下:
[root@localhost ~]# VBoxManage storageattach centos-7-20210521 --storagectl SATA --port 0 --device 0 --type hdd --medium "/root/VirtualBox VMs/centos-7/centos-7.vdi"
VBoxManage: error: Cannot register the hard disk '/root/VirtualBox VMs/centos-7/centos-7.vdi' {239206ae-49a3-4ed6-abfd-11b65b068b60} because a hard disk '/root/VirtualBox VMs/centos-7/centos-7-20210521/D:/ssd/VirtualBox VMs/centos-7/centos-7.vdi' with UUID {239206ae-49a3-4ed6-abfd-11b65b068b60} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 187 of file VBoxManageDisk.cpp
VBoxManage: error: Invalid UUID or filename "/root/VirtualBox VMs/centos-7/centos-7.vdi"
也关联不成功,是什么问题呢,又一番百度后,并分析后,是虚拟磁盘是UUID已经在VirtualBox环境中存在 ,需要重新生成虚拟 磁盘的UUID,命令如下 :
[root@localhost ~]# vboxmanage internalcommands sethduuid "/root/VirtualBox VMs/centos-7/centos-7.vdi"
UUID changed to: 1a1982b2-ffc3-465f-96fe-350f7d54fd4b
好了现在可以重新对虚拟磁盘进行关联了,命令和上面一样,命令执行情况如下 :
[root@localhost ~]# VBoxManage storageattach centos-7-20210521 --storagectl SATA --port 0 --device 0 --type hdd --medium "/root/VirtualBox VMs/centos-7/centos-7.vdi"
[root@localhost ~]#
好了,现在应该可以启动了吧,执行启动虚拟机的命令如下:
[root@localhost ~]# VBoxManage startvm centos-7-20210521 --type headless
Waiting for VM "centos-7-20210521" to power on...
VBoxManage: error: Nonexistent host networking interface, name 'Realtek 8822BE Wireless LAN 802.11ac PCI-E NIC' (VERR_INTERNAL_ERROR)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
看来是网络设置的问题,又一次的一番百度,分析是需要重新设置网络名,先运行命令如下:
[root@localhost ~]# VBoxManage showvminfo centos-7-20210521 --details --machinereadable
系统输出如下信息:
name="centos-7-20210521"
groups="/"
ostype="Red Hat (64-bit)"
UUID="b09f4765-c719-4fe6-98bb-061a1e21c731"
CfgFile="/root/VirtualBox VMs/centos-7/centos-7-20210521/centos-7-20210521.vbox"
SnapFldr="/root/VirtualBox VMs/centos-7/centos-7-20210521/Snapshots"
LogFldr="/root/VirtualBox VMs/centos-7/centos-7-20210521/Logs"
hardwareuuid="b09f4765-c719-4fe6-98bb-061a1e21c731"
memory=4096
pagefusion="off"
vram=16
cpuexecutioncap=100
hpet="off"
cpu-profile="host"
chipset="piix3"
firmware="BIOS"
cpus=1
pae="on"
longmode="on"
triplefaultreset="off"
apic="on"
x2apic="on"
nested-hw-virt="off"
cpuid-portability-level=0
bootmenu="messageandmenu"
boot1="floppy"
boot2="dvd"
boot3="disk"
boot4="none"
acpi="on"
ioapic="on"
biosapic="apic"
biossystemtimeoffset=0
rtcuseutc="on"
hwvirtex="on"
nestedpaging="on"
largepages="on"
vtxvpid="on"
vtxux="on"
paravirtprovider="default"
effparavirtprovider="kvm"
VMState="running"
VMStateChangeTime="2021-06-09T07:07:36.870000000"
graphicscontroller="vmsvga"
monitorcount=1
accelerate3d="off"
accelerate2dvideo="off"
teleporterenabled="off"
teleporterport=0
teleporteraddress=""
teleporterpassword=""
tracing-enabled="off"
tracing-allow-vm-access="off"
tracing-config=""
autostart-enabled="off"
autostart-delay=0
defaultfrontend=""
vmprocpriority="default"
storagecontrollername0="IDE"
storagecontrollertype0="PIIX4"
storagecontrollerinstance0="0"
storagecontrollermaxportcount0="2"
storagecontrollerportcount0="2"
storagecontrollerbootable0="on"
storagecontrollername1="SATA"
storagecontrollertype1="IntelAhci"
storagecontrollerinstance1="0"
storagecontrollermaxportcount1="30"
storagecontrollerportcount1="1"
storagecontrollerbootable1="on"
"IDE-0-0"="none"
"IDE-0-1"="none"
"IDE-1-0"="emptydrive"
"IDE-IsEjected"="off"
"IDE-1-1"="none"
"SATA-0-0"="/root/VirtualBox VMs/centos-7/centos-7.vdi"
"SATA-ImageUUID-0-0"="1a1982b2-ffc3-465f-96fe-350f7d54fd4b"
natnet1="nat"
macaddress1="080027D86E8B"
cableconnected1="on"
nic1="nat"
nictype1="82540EM"
nicspeed1="0"
mtu="0"
sockSnd="64"
sockRcv="64"
tcpWndSnd="64"
tcpWndRcv="64"
bridgeadapter2="Realtek 8822BE Wireless LAN 802.11ac PCI-E NIC"
macaddress2="080027F5106C"
cableconnected2="on"
nic2="bridged"
nictype2="82540EM"
nicspeed2="0"
nic3="none"
nic4="none"
nic5="none"
nic6="none"
nic7="none"
nic8="none"
hidpointing="ps2mouse"
hidkeyboard="ps2kbd"
uart1="off"
uart2="off"
uart3="off"
uart4="off"
lpt1="off"
lpt2="off"
audio="alsa"
audio_out="on"
audio_in="off"
clipboard="disabled"
draganddrop="disabled"
SessionName="headless"
VideoMode="800,600,32"@0,0 1
vrde="off"
usb="on"
ehci="on"
xhci="off"
VRDEActiveConnection="off"
VRDEClients==0
videocap="off"
videocapaudio="off"
capturescreens="0"
capturefilename="/root/VirtualBox VMs/centos-7/centos-7-20210521/centos-7-20210521.webm"
captureres="1024x768"
capturevideorate=512
capturevideofps=25
captureopts=""
GuestMemoryBalloon=0
GuestOSType="RedHat_64"
GuestAdditionsRunLevel=0
从上面的信息中找到下面这句
bridgeadapter2="Realtek 8822BE Wireless LAN 802.11ac PCI-E NIC"
接着执行如下命令:
[root@localhost ~]# ifconfig -a
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::bacb:29ff:feaf:90e1 prefixlen 64 scopeid 0x20<link>
ether b8:cb:29:af:90:e1 txqueuelen 1000 (Ethernet)
RX packets 31724 bytes 17185511 (16.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6966 bytes 610655 (596.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17
eno2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether b8:cb:29:af:90:e2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 18
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
经确认上面网络信息中“eno1”是需要的网卡名
接着执行如下命令:
[root@localhost ~]# VBoxManage modifyvm centos-7-20210521 --bridgeadapter2 eno1
[root@localhost ~]#
现在再执行启动虚拟机命令:
[root@localhost ~]# VBoxManage startvm centos-7-20210521 --type headless
[root@localhost ~]#
无任何信息提示,查看下当前正在运行的虚拟机:
[root@localhost ~]# VBoxManage list runningvms
"centos-7-20210521" {b09f4765-c719-4fe6-98bb-061a1e21c731}
完美了,虚拟机已经可以正常启动了,下面是连接虚拟机
通过SSH连接进入虚拟机,需要先知道他的IP,使用如下命令:
[root@localhost ~]# VBoxManage guestproperty enumerate centos-7-20210521
Name: /VirtualBox/HostInfo/GUI/LanguageID, value: zh_CN, timestamp: 1621572512183474600, flags: RDONLYGUEST
Name: /VirtualBox/HostInfo/VBoxVerExt, value: 6.1.22, timestamp: 1623222456869860001, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/VMInfo/ResumeCounter, value: 0, timestamp: 1623222456817796000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/HostGuest/SysprepExec, value: , timestamp: 1623222456817796000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/HostGuest/SysprepArgs, value: , timestamp: 1623222456817796000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/VMInfo/ResetCounter, value: 0, timestamp: 1623222456817796000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/HostInfo/VBoxRev, value: 144080, timestamp: 1623222456869860002, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/HostInfo/VBoxVer, value: 6.1.22, timestamp: 1623222456869860000, flags: TRANSIENT, RDONLYGUEST
没有IP地址显示,想起原来虚拟机有两个网卡:
一个网卡使用nat,
一个网卡使用桥接
经过一天的研究后,决定首先把VM中的两个网上配置给取消,重新配置虚拟机网络。
删除原虚拟机的配置命令如下 :
[root@localhost ~]# VBoxManage modifyvm centos-7-20210521 --nic1 none
[root@localhost ~]# VBoxManage modifyvm centos-7-20210521 --nic2 none
下面开始为虚拟机配置为hostonly网络作准备
新建宿主机hostonly网卡:
[root@localhost ~]# VBoxManage hostonlyif create
在此未指定hostonly网卡的名,系统默认为vboxnet0
指定宿主机IP:
[root@localhost ~]# VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.56.254 --netmask 255.255.255.0
此时,执行如下命令,可以看到vboxnet0的信息,具体命令如下:
[root@localhost ~]# ifconfig
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::bacb:29ff:feaf:90e1 prefixlen 64 scopeid 0x20<link>
ether b8:cb:29:af:90:e1 txqueuelen 1000 (Ethernet)
RX packets 10342 bytes 1663982 (1.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1996 bytes 209859 (204.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17
eno2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether b8:cb:29:af:90:e2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 18
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 25 bytes 2184 (2.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 25 bytes 2184 (2.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vboxnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.254 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::800:27ff:fe00:0 prefixlen 64 scopeid 0x20<link>
ether 0a:00:27:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 44 bytes 4952 (4.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
配置hostonly网卡的DHCP:
[root@localhost ~]# VBoxManage dhcpserver add --ifname vboxnet0 --ip 192.168.56.254 --netmask 255.255.255.0 --lowerip 192.168.56.101 --upperip 192.168.56.105 --enable
上面命令中的lowerip和upperip分别是DHCP动态分配IP的最小IP和最大IP,请一定要设置的范围小一下,这样有助于你使用ping命令来查看虚拟机分配的具体 IP;
查看虚拟DHCP信息,命令如下:
[root@localhost ~]# VBoxManage list dhcpservers
NetworkName: HostInterfaceNetworking-vboxnet0
Dhcpd IP: 192.168.56.254
LowerIPAddress: 192.168.56.101
UpperIPAddress: 192.168.56.105
NetworkMask: 255.255.255.0
Enabled: Yes
Global Configuration:
minLeaseTime: default
defaultLeaseTime: default
maxLeaseTime: default
Forced options: None
Suppressed opts.: None
1/legacy: 255.255.255.0
Groups: None
Individual Configs: None
考虑到我打算把虚拟机的第一张网卡设置为nat网络、第二张网卡设置为bridge网络,所以决定将第三张网卡设置成hostonly网络;
命令如下:
[root@localhost ~]# VBoxManage modifyvm centos-7-20210521 --nic3 hostonly --nictype3 82540EM --cableconnected3 on --hostonlyadapter3 vboxnet0
启动虚拟机:
[root@localhost ~]# VBoxManage startvm centos-7-20210521 --type headless
使用ping命令在指定的DHCP动态分配的IP中一个个试,当ping 192.168.56.102时,通了,于是确定虚拟机的IP是192.168.56.102。
进行SSH登录:
[root@localhost ~]# ssh root@192.168.56.102
按提示录入 yes及密码后,顺利登录到虚拟机啦
至此可以在虚拟机上安装软件及你需要的操作啦。