因爲博客已經全面由 CSDN 遷往 SegmentFault, 故將部分文章進行改寫和遷移. 這些文章的開頭均有本說明. 因爲時間較爲久遠, 部份內容可能發生變動, 穩重的實例請斟酌後再嘗試.javascript
Manjaro Linux 19.0, Linux Kernel 5.5, XFCE 4.4, Virtual Box 6.1 (均是英文版)java
在一個正確的VBox虛擬機中,能夠發現如下目錄組成。
以個人Kali Linux虛擬機爲例。linux
Kali Linux ├── Kali Linux.vbox ├── Kali Linux.vbox-prev ├── Kali Linux.vdi ├── Logs │ ├── VBox.log │ ├── VBox.log.1 │ ├── VBox.log.2 │ └── VBox.log.3 └── Snapshots └── 2020-03-02T02-46-17-417352000Z.sav 2 directories, 8 files
以下所示。ios
這是VBox虛擬機的配置文件,包含了對虛擬機軟硬件的描述,使用XML語法。
內容以下所示。bash
<?xml version="1.0"?> <!-- ** DO NOT EDIT THIS FILE. ** If you make changes to this file while any VirtualBox related application ** is running, your changes will be overwritten later, without taking effect. ** Use VBoxManage or the VirtualBox Manager GUI to make changes. --> <VirtualBox xmlns="http://www.virtualbox.org/" version="1.16-linux"> <Machine uuid="{698fd744-e86c-4197-8e8c-6d8c6c0053ee}" name="Kali Linux" OSType="Debian_64" stateFile="Snapshots/2020-03-02T02-46-17-417352000Z.sav" snapshotFolder="Snapshots" lastStateChange="2020-03-02T02:46:53Z"> <MediaRegistry> <HardDisks> <HardDisk uuid="{425440d0-a459-4c9b-bdb0-c8c4e9d0b2f6}" location="Kali Linux.vdi" format="VDI" type="Normal"/> </HardDisks> <DVDImages> <Image uuid="{843ff379-14b6-45d7-9c08-3f91e9c47d9a}" location="/home/felix/Documents/disks/ISO/kali-linux-2020.1a-installer-amd64.iso"/> <Image uuid="{5b5ebce9-6c35-4556-9afe-1082b2557215}" location="/usr/lib/virtualbox/additions/VBoxGuestAdditions.iso"/> </DVDImages> </MediaRegistry> <ExtraData> <ExtraDataItem name="GUI/LastCloseAction" value="SaveState"/> <ExtraDataItem name="GUI/LastNormalWindowPosition" value="0,28,640,480,max"/> <ExtraDataItem name="GUI/LastScaleWindowPosition" value="640,300,640,480"/> <ExtraDataItem name="GUI/ScaleFactor" value="1.5"/> </ExtraData> <Hardware> <CPU> <PAE enabled="false"/> <LongMode enabled="true"/> <X2APIC enabled="true"/> <HardwareVirtExLargePages enabled="false"/> </CPU> <Memory RAMSize="4096"/> <HID Pointing="USBTablet"/> <Display controller="VMSVGA" VRAMSize="16"/> <VideoCapture screens="1" file="." fps="25"/> <RemoteDisplay enabled="true"/> <BIOS> <IOAPIC enabled="true"/> <SmbiosUuidLittleEndian enabled="true"/> </BIOS> <USB> <Controllers> <Controller name="OHCI" type="OHCI"/> </Controllers> </USB> <Network> <Adapter slot="0" enabled="true" MACAddress="0800271DB31D" type="82540EM"> <DisabledModes> <InternalNetwork name="intnet"/> <GenericInterface driver="VBOX"/> <NATNetwork name="NatNetwork"/> </DisabledModes> <BridgedInterface name="wlp1s0"/> </Adapter> </Network> <AudioAdapter codec="AD1980" driver="Pulse" enabled="true" enabledIn="false"/> <RTC localOrUTC="UTC"/> <Clipboard/> <DragAndDrop mode="Bidirectional"/> <GuestProperties> <GuestProperty name="/VirtualBox/GuestAdd/Revision" value="135662" timestamp="1582981113600000000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Version" value="6.1.2" timestamp="1582981113597531000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/VersionExt" value="6.1.2" timestamp="1582981113599930000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/OS/Product" value="Linux" timestamp="1582981113594753000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/OS/Release" value="5.4.0-kali4-amd64" timestamp="1582981113595029000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/OS/Version" value="#1 SMP Debian 5.4.19-1kali1 (2020-02-17)" timestamp="1582981113596947000" flags=""/> <GuestProperty name="/VirtualBox/HostInfo/GUI/LanguageID" value="C" timestamp="1583117177393486000" flags="RDONLYGUEST"/> <GuestProperty name="/VirtualBox/HostInfo/VBoxRev" value="135662" timestamp="1583063544812066002" flags="TRANSIENT, RDONLYGUEST"/> <GuestProperty name="/VirtualBox/HostInfo/VBoxVer" value="6.1.2" timestamp="1583063544812066000" flags="TRANSIENT, RDONLYGUEST"/> <GuestProperty name="/VirtualBox/HostInfo/VBoxVerExt" value="6.1.2" timestamp="1583063544812066001" flags="TRANSIENT, RDONLYGUEST"/> <GuestProperty name="/VirtualBox/VMInfo/ResetCounter" value="3" timestamp="1582984372225316000" flags="TRANSIENT, RDONLYGUEST"/> <GuestProperty name="/VirtualBox/VMInfo/ResumeCounter" value="5" timestamp="1583104345717747000" flags="TRANSIENT, RDONLYGUEST"/> </GuestProperties> </Hardware> <StorageControllers> <StorageController name="IDE" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true"> <AttachedDevice passthrough="false" type="DVD" hotpluggable="false" port="1" device="0"> <Image uuid="{843ff379-14b6-45d7-9c08-3f91e9c47d9a}"/> </AttachedDevice> </StorageController> <StorageController name="SATA" type="AHCI" PortCount="1" useHostIOCache="false" Bootable="true" IDE0MasterEmulationPort="0" IDE0SlaveEmulationPort="1" IDE1MasterEmulationPort="2" IDE1SlaveEmulationPort="3"> <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0"> <Image uuid="{425440d0-a459-4c9b-bdb0-c8c4e9d0b2f6}"/> </AttachedDevice> </StorageController> </StorageControllers> </Machine> </VirtualBox>
咱們將在下一篇中仔細研究這個文件。session
這是歷史版本的VBox配置文件,有備份的做用,內容與Kali Linux.vbox
類似,但屬性不一樣,在這裏咱們不過多描述。app
VDI 文件是Virtual Box獨家格式的虛擬硬盤文件,在VBox文件中指定。經過GHex編輯器,咱們能夠看到這個VDI 文件的內容。能夠看到,它的文件頭是:編輯器
<<< Oracle VM VirtualBox Disk Image >>>
除了VDI文件,Virtual Box 虛擬機還支持VHD,VMDK 格式的虛擬硬盤。其中,VMDK 格式正是VMWare虛擬機使用的虛擬硬盤格式。ide
如上所述,Virtual Box能夠採用VMWare的虛擬磁盤。經過建立帶有VMDK磁盤的虛擬機,能夠方便的將其在VBox與VMWare之間來回移動而正確運行。可是,經本人實驗發現,這種方法只適用於在建立時選擇「使用一個VMDK文件做爲虛擬硬盤「的選項。本人親測,若是VMWare虛擬機採用了多個VMDK文件(Split選項),只有一個沒有數字序號的VMDK文件對於VBox是合法的,可讀的。ui
然而,當咱們啓動這塊虛擬磁盤時,會出現相似
INT xxx code cannot be executed: Error!
的錯誤,所以,對於使用多塊虛擬磁盤的VMWare虛擬機,Virtual Box不能使用,可是,對於使用一塊虛擬磁盤的VMWare虛擬機,VBox 能夠正確啓動,運行。
每次VBox 啓動,都會產生一個 log (日誌)文件,能夠提供對錯誤排查等方面的信息。如下是VBox.log
文件的內容
00:00:01.677201 VirtualBox VM 6.1.2 r135662 linux.amd64 (Jan 14 2020 22:33:16) release log 00:00:01.677205 Log opened 2020-03-01T11:52:06.893608000Z 00:00:01.677206 Build Type: release 00:00:01.677210 OS Product: Linux 00:00:01.677213 OS Release: 5.5.2-1-MANJARO 00:00:01.677215 OS Version: #1 SMP PREEMPT Tue Feb 4 19:22:35 UTC 2020 00:00:01.677250 DMI Product Name: HP ZBook 14u G5 00:00:01.677265 DMI Product Version: 00:00:01.677273 Firmware type: UEFI 00:00:01.677817 Secure Boot: Disabled ...... 04:49:22.678899 E1000#0: TX frames up to 32768: 0 04:49:22.678902 E1000#0: Larger TX frames : 0 04:49:22.678904 E1000#0: Max TX Delay : 0 04:49:22.724032 GIM: KVM: Resetting MSRs 04:49:22.730560 Changing the VM state from 'DESTROYING' to 'TERMINATED' 04:49:22.733887 Console: Machine state changed to 'Saved' 04:49:23.467202 GUI: Passing request to close Runtime UI from machine-logic to UI session.
能夠看出,Virtual Box把全部的行爲,數據都輸出到了這些log文件裏,對調試虛擬機很是有用。可是文件體積所以很是大,以下是ls
結果。
~/VirtualBox VMs/Kali Linux/Logs » ls -l felix@felix-zbook total 584 -rw------- 1 felix felix 139958 Mar 2 10:46 VBox.log -rw------- 1 felix felix 209527 Mar 1 11:00 VBox.log.1 -rw------- 1 felix felix 128813 Feb 29 21:25 VBox.log.2 -rw------- 1 felix felix 107014 Feb 29 21:16 VBox.log.3
Snapshot,懂虛擬機的都明白,不用說了吧。。。