下面是我如何配置 VirtualBox 虚拟机以在我的 Linux 工作站上使用物理的 Windows 操作系统。
我经常使用 VirtualBox 来创建虚拟机来测试新版本的 Fedora、新的应用程序和很多管理工具,比如 Ansible。我甚至使用 VirtualBox 来测试创建一个 Windows 访客主机。
我从来没有在我的任何一台个人电脑上使用 Windows 作为我的主要操作系统,甚至也没在虚拟机中执行过一些用 Linux 无法完成的冷门任务。不过,我确实为一个需要使用 Windows 下的财务程序的组织做志愿者。这个程序运行在办公室经理的电脑上,使用的是预装的 Windows 10 Pro。
这个财务应用程序并不特别,一个更好的 Linux 程序可以很容易地取代它,但我发现许多会计和财务主管极不愿意做出改变,所以我还没能说服我们组织中的人迁移。
这一系列的情况,加上最近的安全恐慌,使得我非常希望将运行 Windows 的主机转换为 Fedora,并在该主机上的虚拟机中运行 Windows 和会计程序。
重要的是要明白,我出于多种原因极度不喜欢 Windows。主要原因是,我不愿意为了在新的虚拟机上安装它而再花钱购买一个 Windows 许可证(Windows 10 Pro 大约需要 200 美元)。此外,Windows 10 在新系统上设置时或安装后需要足够的信息,如果微软的数据库被攻破,破解者就可以窃取一个人的身份。任何人都不应该为了注册软件而需要提供自己的姓名、电话号码和出生日期。
这台实体电脑已经在主板上唯一可用的 m.2 插槽中安装了一个 240GB 的 NVMe m.2 的 SSD 存储设备。我决定在主机上安装一个新的 SATA SSD,并将现有的带有 Windows 的 SSD 作为 Windows 虚拟机的存储设备。金士顿在其网站上对各种 SSD 设备、外形尺寸和接口做了很好的概述。
这种方法意味着我不需要重新安装 Windows 或任何现有的应用软件。这也意味着,在这台电脑上工作的办公室经理将使用 Linux 进行所有正常的活动,如电子邮件、访问 Web、使用 LibreOffice 创建文档和电子表格。这种方法增加了主机的安全性。唯一会使用 Windows 虚拟机的时间是运行会计程序。
在做其他事情之前,我创建了整个 NVMe 存储设备的备份 ISO 镜像。我在 500GB 外置 USB 存储盘上创建了一个分区,在其上创建了一个 ext4
文件系统,然后将该分区挂载到 /mnt
。我使用dd
命令来创建镜像。
我在主机中安装了新的 500GB SATA SSD,并从临场live USB 上安装了 Fedora 32 Xfce 偏好版spin。在安装后的初次重启时,在 GRUB2 引导菜单上,Linux 和 Windows 操作系统都是可用的。此时,主机可以在 Linux 和 Windows 之间进行双启动。
现在我需要一些关于创建一个使用物理硬盘或 SSD 作为其存储设备的虚拟机的信息。我很快就在 VirtualBox 文档和互联网上发现了很多关于如何做到这一点的信息。虽然 VirtualBox 文档初步帮助了我,但它并不完整,遗漏了一些关键信息。我在互联网上找到的大多数其他信息也很不完整。
在我们的记者 Joshua Holm 的帮助下,我得以突破这些残缺的信息,并以一个可重复的流程来完成这项工作。
这个过程其实相当简单,虽然需要一个玄妙的技巧才能实现。当我准备好这一步的时候,Windows 和 Linux 操作系统已经到位了。
首先,我在 Linux 主机上安装了最新版本的 VirtualBox。VirtualBox 可以从许多发行版的软件仓库中安装,也可以直接从 Oracle VirtualBox 仓库中安装,或者从 VirtualBox 网站上下载所需的包文件并在本地安装。我选择下载 AMD64 版本,它实际上是一个安装程序而不是一个软件包。我使用这个版本来规避一个与这个特定项目无关的问题。
安装过程总是在
/etc/group
中创建一个vboxusers
组。我把打算运行这个虚拟机的用户添加到/etc/group
中的vboxusers
和disk
组。将相同的用户添加到disk
组是很重要的,因为
VirtualBox
是以启动它的用户身份运行的,而且还需要直接访问/dev/sdx
特殊设备文件才能在这种情况下工作。将用户添加到disk
组可以提供这种级别的访问权限,否则他们就不会有这种权限。
然后,我创建了一个目录来存储虚拟机,并赋予它
`的所有权和
775的权限。我使用
/vms`用作该目录,但可以是任何你想要的目录。默认情况下,VirtualBox
会在创建虚拟机的用户的子目录中创建新的虚拟机。这将使多个用户之间无法共享对虚拟机的访问,从而不会产生巨大的安全漏洞。将虚拟机目录放置在一个可访问的位置,可以共享虚拟机。
我以非 root 用户的身份启动 VirtualBox 管理器。然后,我使用 VirtualBox 的“偏好Preferences =>
一般General”菜单将“默认机器文件夹Default Machine Folder”设置为 /vms
目录。
我创建的虚拟机没有虚拟磁盘。“类型Type” 应该是 Windows
,“版本Version”应该设置为Windows 10
64-bit
。为虚拟机设置一个合理的内存量,但只要虚拟机处于关闭状态,以后可以更改。在安装的“硬盘Hard disk”页面,我选择了
“不要添加虚拟硬盘Do not add a virtual hard disk”,点击“创建Create”。新的虚拟机出现在VirtualBox
管理器窗口中。这个过程也创建了/vms/Test1
目录。
我使用“高级Advanced”菜单在一个页面上设置了所有的配置,如图 1 所示。“向导模式Guided Mode”可以获得相同的信息,但需要更多的点击,以通过一个窗口来进行每个配置项目。它确实提供了更多的帮助内容,但我并不需要。
图 1:创建一个新的虚拟机,但不要添加硬盘。
然后,我需要知道 Linux 给原始 Windows 硬盘分配了哪个设备。在终端会话中以 root 身份使用 lshw
命令来发现 Windows
磁盘的设备分配情况。在本例中,代表整个存储设备的设备是/dev/sdb
。
# lshw -short -class disk,volumeH/W path Device Class Description=========================================================/0/100/17/0 /dev/sda disk 500GB CT500MX500SSD1/0/100/17/0/1 volume 2047MiB Windows FAT volume/0/100/17/0/2 /dev/sda2 volume 4GiB EXT4 volume/0/100/17/0/3 /dev/sda3 volume 459GiB LVM Physical Volume/0/100/17/1 /dev/cdrom disk DVD+-RW DU-8A5LH/0/100/17/0.0.0 /dev/sdb disk 256GB TOSHIBA KSG60ZMV/0/100/17/0.0.0/1 /dev/sdb1 volume 649MiB Windows FAT volume/0/100/17/0.0.0/2 /dev/sdb2 volume 127MiB reserved partition/0/100/17/0.0.0/3 /dev/sdb3 volume 236GiB Windows NTFS volume/0/100/17/0.0.0/4 /dev/sdb4 volume 989MiB Windows NTFS volume[root@office1 etc]#
VirtualBox 不需要把虚拟存储设备放在
/vms/Test1
目录中,而是需要有一种方法来识别要从其启动的物理硬盘。这种识别是通过创建一个*.vmdk
文件来实现的,该文件指向将作为虚拟机存储设备的原始物理磁盘。作为非
root 用户,我创建了一个 vmdk 文件,指向整个 Windows 设备/dev/sdb
。
$ VBoxManage internalcommands createrawvmdk -filename /vms/Test1/ -rawdisk /dev/sdbRAW host disk access VMDK file /vms/Test1/ created successfully.
然后,我使用 VirtualBox 管理器 “文件File => 虚拟介质管理器Virtual Media Manager” 对话框将 vmdk
磁盘添加到可用硬盘中。我点击了“添加Add”,文件管理对话框中显示了默认的
/vms
位置。我选择了Test1
目录,然后选择了文件。然后我点击“打开Open”,
文件就显示在可用硬盘列表中。我选择了它,然后点击“关闭Close”。
下一步就是将这个 vmdk 磁盘添加到我们的虚拟机的存储设备中。在 “Test1 VM” 的设置菜单中,我选择了
“存储Storage”,并点击了添加硬盘的图标。这时打开了一个对话框,在一个名为“未连接Not attached”的列表中显示了
Test1vmdk
虚拟磁盘文件。我选择了这个文件,并点击了“选择Choose”按钮。这个设备现在显示在连接到 “Test1 VM”
的存储设备列表中。这个虚拟机上唯一的其他存储设备是一个空的 CD/DVD-ROM 驱动器。
我点击了“确定OK”,完成了将此设备添加到虚拟机中。
在新的虚拟机工作之前,还有一个项目需要配置。使用 VirtualBox 管理器设置对话框中的 “Test1 VM”,我导航到 “系统System => 主板Motherboard”页面,并在 “启用 EFIEnable EFI”的方框中打上勾。如果你不这样做,当你试图启动这个虚拟机时,VirtualBox 会产生一个错误,说明它无法找到一个可启动的介质。
现在,虚拟机从原始的 Windows 10 硬盘驱动器启动。然而,我无法登录,因为我在这个系统上没有一个常规账户,而且我也无法获得 Windows 管理员账户的密码。
不,本节并不是要破解硬盘的加密,而是要绕过众多 Windows 管理员账户之一的密码,而这些账户是不属于组织中某个人的。
尽管我可以启动 Windows 虚拟机,但我无法登录,因为我在该主机上没有账户,而向人们索要密码是一种可怕的安全漏洞。尽管如此,我还是需要登录这个虚拟机来安装 “VirtualBox Guest Additions”,它可以提供鼠标指针的无缝捕捉和释放,允许我将虚拟机调整到大于 1024x768 的大小,并在未来进行正常的维护。
这是一个完美的用例,Linux 的功能就是更改用户密码。尽管我是访问之前的管理员的账户来启动,但在这种情况下,他不再支持这个系统,我也无法辨别他的密码或他用来生成密码的模式。我就直接清除了上一个系统管理员的密码。
有一个非常不错的开源软件工具,专门用于这个任务。在 Linux 主机上,我安装了 chntpw
,它的意思大概是:“更改 NT 的密码”。
# dnf -y install chntpw
我关闭了虚拟机的电源,然后将
/dev/sdb3
分区挂载到/mnt
上。我确定/dev/sdb3
是正确的分区,因为它是我在之前执行lshw
命令的输出中看到的第一个大的
NTFS 分区。一定不要在虚拟机运行时挂载该分区,那样会导致虚拟机存储设备上的数据严重损坏。请注意,在其他主机上分区可能有所不同。
导航到
/mnt/Windows/System32/config
目录。如果当前工作目录(PWD)不在这里,chntpw
实用程序就无法工作。请启动该程序。
# chntpw -i SAMchntpw version 1.00 , (c) Petter N HagenHive
chntpw
命令使用
TUI(文本用户界面),它提供了一套菜单选项。当选择其中一个主要菜单项时,通常会显示一个次要菜单。按照明确的菜单名称,我首先选择了菜单项1
。
What to do? [1] -> 1===== chntpw Edit User Info & Passwords ====| RID -|---------- Username ------------| Admin? |- Lock? --|| 01f4 | Administrator | ADMIN | dis/lock || 03eb | john | ADMIN | dis/lock || 01f7 | DefaultAccount | | dis/lock || 01f5 | Guest | | dis/lock || 01f8 | WDAGUtilityAccount | | dis/lock |Please enter user number (RID) or 0 to exit: [3e9]
接下来,我选择了我们的管理账户 john
,在提示下输入 RID。这将显示用户的信息,并提供额外的菜单项来管理账户。
Please enter user number (RID) or 0 to exit: [3e9] 03eb================= USER EDIT ====================RID : 1003 [03eb]Username: johnfullname:comment :homedir = Users (which has 4 members) = Administrators (which has 5 members)Account bits: 0x0214 = Disabled | Homedir req. | Passwd not req. | Temp. duplicate | [X] Normal account | NMS account | Domain trust ac | Wks trust act. | Srv trust act |[X] Pwd don't expir | Auto lockout | (unknown 0x08) | (unknown 0x10) | (unknown 0x20) | (unknown 0x40) |Failed login count: 0, while max tries is: 0Total login count: 47- - - - User Edit Menu: 1 - Clear (blank) user password 2 - Unlock and enable user account [probably locked now] 3 - Promote user (make user an administrator) 4 - Add user to a group 5 - Remove user from a group q - Quit editing user, back to user selectSelect: [q] > 2
这时,我选择了菜单项 2
,“解锁并启用用户账户Unlock and enable user
account”,这样就可以删除密码,使我可以不用密码登录。顺便说一下 —— 这就是自动登录。然后我退出了该程序。在继续之前,一定要先卸载/mnt
。
我知道,我知道,但为什么不呢! 我已经绕过了这个硬盘和主机的安全问题,所以一点也不重要。这时,我确实登录了旧的管理账户,并为自己创建了一个新的账户,并设置了安全密码。然后,我以自己的身份登录,并删除了旧的管理账户,这样别人就无法使用了。
网上也有 Windows Administrator 账号的使用说明(上面列表中的
01f4
)。如果它不是作为组织管理账户,我可以删除或更改该账户的密码。还要注意的是,这个过程也可以从目标主机上运行临场 USB 来执行。
因此,我现在让 Windows SSD 作为虚拟机在我的 Fedora 主机上运行了。然而,令人沮丧的是,在运行了几个小时后,Windows 显示了一条警告信息,表明我需要“激活 Windows”。
在看了许许多多的死胡同网页之后,我终于放弃了使用现有激活码重新激活的尝试,因为它似乎已经以某种方式被破坏了。最后,当我试图进入其中一个在线虚拟支持聊天会话时,虚拟的“获取帮助”应用程序显示我的 Windows 10 Pro 实例已经被激活。这怎么可能呢?它一直希望我激活它,然而当我尝试时,它说它已经被激活了。
当我在三天内花了好几个小时做研究和实验时,我决定回到原来的 SSD 启动到 Windows 中,以后再来处理这个问题。但后来 Windows —— 即使从原存储设备启动,也要求重新激活。
在微软支持网站上搜索也无济于事。在不得不与之前一样的自动支持大费周章之后,我拨打了提供的电话号码,却被自动响应系统告知,所有对 Windows 10 Pro 的支持都只能通过互联网提供。到现在,我已经晚了将近一天才让电脑运行起来并安装回办公室。
我终于吸了一口气,购买了一份 Windows 10 Home,大约 120 美元,并创建了一个带有虚拟存储设备的虚拟机,将其安装在上面。
我将大量的文档和电子表格文件复制到办公室经理的主目录中。我重新安装了一个我们需要的 Windows 程序,并与办公室经理验证了它可以工作,数据都在那里。
因此,我的目标达到了,实际上晚了一天,花了 120 美元,但使用了一种更标准的方法。我仍在对权限进行一些调整,并恢复 Thunderbird
通讯录;我有一些 CSV 备份,但 *.mab
文件在 Windows 驱动器上包含的信息很少。我甚至用 Linux
的find
命令来定位原始存储设备上的所有。
我走了很多弯路,每次都要自己重新开始。我遇到了一些与这个项目没有直接关系的问题,但却影响了我的工作。这些问题包括一些有趣的事情,比如把 Windows
分区挂载到我的 Linux 机器的 /mnt
上,得到的信息是该分区已经被 Windows 不正确地关闭(是的,在我的 Linux
主机上),并且它已经修复了不一致的地方。即使是 Windows 通过其所谓的“恢复”模式多次重启后也做不到这一点。
也许你从
chntpw
工具的输出数据中发现了一些线索。出于安全考虑,我删掉了主机上显示的其他一些用户账号,但我从这些信息中看到,所有的用户都是管理员。不用说,我也改了。我仍然对我遇到的糟糕的管理方式感到惊讶,但我想我不应该这样。
最后,我被迫购买了一个许可证,但这个许可证至少比原来的要便宜一些。我知道的一点是,一旦我找到了所有必要的信息,Linux 这一块就能完美地工作。问题是处理 Windows 激活的问题。你们中的一些人可能已经成功地让 Windows 重新激活了。如果是这样,我还是想知道你们是怎么做到的,所以请把你们的经验添加到评论中。
这是我不喜欢 Windows,只在自己的系统上使用 Linux 的又一个原因。这也是我将组织中所有的计算机都转换为 Linux 的原因之一。只是需要时间和说服力。我们只剩下这一个会计程序了,我需要和财务主管一起找到一个适合她的程序。我明白这一点 —— 我喜欢自己的工具,我需要它们以一种最适合我的方式工作。
via: /article/21/1/virtualbox-windows-linux
作者:David Both选题:lujun9972译者:wxy校对:wxy
本文由 LCTT原创编译,Linux中国荣誉推出
首先,准备好我们准备给虚拟机安装的系统,这里以windows servr 2008 R2版为例,注意搞清系统是x86还是x64的,创建虚拟机时需要选择,然后,双击图标打开虚拟机软件请点击输入图片描述请点击输入图片描述2进入vmware后,最左侧显示的是现有的虚拟机,在空白处点击右键,点击“新建虚拟机”请点击输入图片描述3如图,进入虚拟机创建向导,选择“典型”,点击“下一步”请点击输入图片描述4接下来需要我们加载操作系统的镜像文件,这里可以选择windows系统或者linux系统,只要是能运行于电脑的系统,这里都可以加载,点击“浏览”,选择刚才准备好的iso文件请点击输入图片描述5选择完成后,vmware 会自动读取识别iso文件中包含的系统,如图,这里已经识别到系统为windows Server 2008 R2 x64,如果识别没有问题,点击“下一步”请点击输入图片描述6由于系统限制,这里要求输入密钥(如果为开源系统可能没有这一步),这里随便填一个可以直接跳过,但是稍后进入系统后可能会显示要求激活。输入完成后,点击“下一步”请点击输入图片描述7这里会显示要求命名虚拟机名称和路径,名称将会显示在vmware的左侧列表中,主要用于区分不同的虚拟机,路径则是虚拟机文件在物理主机中存在的位置,根据自己情况选择即可。不建议包含中文,设置完成后,点击“下一步”请点击输入图片描述8进入下一步后,会要求我们给虚拟机划分磁盘空间,其实就是虚拟机文件在物理主机中占用的文件大小,VMware会根据系统不同给出建议的大小,设置最好不要小于建议的值,太小可能会安装失败。请点击输入图片描述9设置完成后点击下一步,这里会给出虚拟机的配置信息,如果符合我们的要求,可以直接点击“下一步”进入安装;当然我们可以点击“自定义硬件”来配置虚拟机的硬件配置,注意,这些配置都是从真实的物理主机中抽调出来的,因此配置不能高过物理主机。请点击输入图片描述10稍等片刻,虚拟机便会建立完毕,返回到初始的界面,我们会看到左边列表已经多了一个选项,点击选中,点击右侧窗口中的“开启此虚拟机”,我们的虚拟机便可以开始工作啦请点击输入图片描述
我装了仙五这个游戏。
光盘上指导我创建虚拟机。
这个游戏只有进入这个虚拟机才能玩, 可我不知道下次怎么才能再进入这个虚拟机。
请高手指点。
虚拟机装系统了的话,点软件上的启动进入虚拟机系统,按正常开机进入虚拟机系统启动就行了。
1.双击打开虚拟机,点击创建新的虚拟机。
2.虚拟机有两个新建的模式,一种为“标准”,另外一种为“自定义”。
标准适合使用vmware的新手使用,自定义适合对vmware有一定了解的朋友使用。
这里选择“标准”,点击“继续”按钮。
3.虚拟机安装向导有三种模式即:使用安装盘、使用安装镜像文件和创建一个虚拟空白硬盘。
比较常用的是使用镜像文件,小编这里也以使用镜像文件为例。
选择使用安装盘镜像文件,点击浏览按钮,选择你下载好的镜像文件,点击打开即可。
4.选择你要安装的系统的名字,这里必须跟你所下载的镜像为同一系统。
小编这里下载的是萝卜家园windows7 32位版本,所以这里选择windows7。
5.修改虚拟机名字,也可不修改选择默认。
选择虚拟机所安装的位置,小编这里选择的e盘下的win7文件夹,点击继续。
6.分配虚拟机硬盘的容量。
这里可以根据个人的使用情况进行分配,一般windows xp系统最少分配5-10g或以上,windows7操作系统分配30g以上。
并选择使用单一磁盘还是拆分为多个磁盘,小编这里选择的是拆分为多个磁盘。
7.到这里整个虚拟机的配置完毕,点击完成即可。
8.配置完成后,虚拟机会自动重回界面首页,这里点击打开此虚拟机电源,即可进入系统安装了。
9.系统进入安装界面,可以进行安装了。
软件下载地址:/按第一次进入的方法就可以了,游戏进度仍然保存着....