当前位置: 首页 > 科技观察

将您的Windows系统转换为Linux上的虚拟机

时间:2023-03-20 14:02:52 科技观察

以下是我如何配置VirtualBox虚拟机以在我的Linux工作站上使用物理Windows操作系统。我经常使用VirtualBox创建虚拟机来测试新版本的Fedora、新应用程序和许多管理工具,例如Ansible。我什至使用VirtualBox来测试创建Windows来宾主机。我从未在我的任何PC上使用Windows作为我的主要操作系统,我什至从未在虚拟机中执行过一些Linux无法完成的模糊任务。但是,我确实为需要在Windows下使用财务程序的组织做志愿者。该程序在预装Windows10Pro的办公室经理PC上运行。这个财务应用程序没什么特别的,更好的Linux程序可以很容易地取代它,但我发现许多会计和财务主管非常不愿意做出改变,所以我没能说服我们组织的人接受迁移。这种情况的结合,再加上最近的安全恐慌,让我非常渴望将运行Windows的主机转换为Fedora,并在该主机上的虚拟机中运行Windows和会计程序。重要的是要了解我出于多种原因非常不喜欢Windows。主要原因是我不想再花钱购买另一个Windows许可证(Windows10Pro大约需要200美元),只是为了将它安装在新的虚拟机上。此外,Windows10在新系统上设置时或安装后需要足够的信息,如果Microsoft的数据库遭到破坏,黑客可能会窃取一个人的身份。没有人需要提供他们的姓名、电话号码和出生日期才能注册软件。这台物理计算机在主板上唯一可用的m.2插槽中安装了240GBNVMem.2SSD存储设备。我决定在主机上安装一个新的SATASSD,并使用带有Windows的现有SSD作为Windows虚拟机的存储。金士顿在其网站上很好地概述了各种SSD设备、外形尺寸和接口。这种方法意味着我不需要重新安装Windows或任何现有的应用程序。这也意味着在这台计算机上工作的办公室经理将使用Linux进行所有正常活动,例如电子邮件、访问网络、使用LibreOffice创建文档和电子表格。这种方法增加了主机的安全性。我唯一会使用Windows虚拟机的时间是运行会计程序。先备份在做任何其他事情之前,我创建了整个NVMe存储设备的备份ISO映像。我在一个500GB的外部USB记忆棒上创建了一个分区,在上面创建了一个ext4文件系统,并将该分区挂载在/mnt。我使用dd命令来创建图像。我在主机中安装了一个新的500GBSATASSD,并从liveUSB安装了Fedora32Xfcepreferencespin。安装后首次重新引导时,GRUB2引导菜单上同时提供Linux和Windows操作系统。此时主机可以在Linux和Windows之间进行双启动。在线寻求帮助现在我需要一些有关创建使用物理硬盘或SSD作为其存储设备的虚拟机的信息。我很快在VirtualBox文档和Internet上找到了很多关于如何执行此操作的信息。虽然VirtualBox文档最初对我有所帮助,但它并不完整并且缺少一些关键信息。我在互联网上找到的大多数其他信息也很不完整。在我们的记者JoshuaHolm的帮助下,我得以突破这些信息片段,并以可重复的过程完成这项工作。使它工作的过程实际上非常简单,尽管它需要一个微妙的技巧才能实现。当我准备好执行此步骤时,Windows和Linux操作系统已经就位。首先,我在Linux主机上安装了最新版本的VirtualBox。VirtualBox可以从许多分发存储库安装,直接从OracleVirtualBox存储库安装,或者通过从VirtualBox网站下载所需的包文件并在本地安装。我选择下载的是AMD64版本,其实是一个安装程序而不是一个包。我正在使用这个版本来规避与这个特定项目无关的问题。安装过程总是在/etc/group中创建一个vboxusers组。我将打算运行这个虚拟机的用户添加到/etc/group中的vboxusers和磁盘组中。将同一用户添加到磁盘组很重要,因为VirtualBox以启动它的用户身份运行,并且在这种情况下还需要直接访问/dev/sdx特殊设备文件才能工作。将用户添加到磁盘组可提供他们在其他情况下无法获得的这种级别的访问权限。然后我创建了一个目录来存储虚拟机并赋予它root.vboxusers所有权和775权限。我为该目录使用了/vms,但它可以是您想要的任何内容。默认情况下,VirtualBox在创建它们的用户的子目录中创建新的虚拟机。这将导致无法在不造成巨大安全漏洞的情况下在多个用户之间共享对虚拟机的访问。通过将虚拟机目录放在可访问的位置,可以共享虚拟机。我以非root用户身份启动VirtualBox管理器。然后,我使用VirtualBox的“Preferences=>General”菜单将“DefaultMachineFolder”设置为/vms目录。我创建的虚拟机没有虚拟磁盘。“类型”应为Windows,“版本”应设置为Windows1064位。为虚拟机设置合理的内存量,但只要关闭虚拟机电源,以后就可以更改。在安装的“硬盘”页面,我选择了“不添加虚拟硬盘”,点击“创建”。新虚拟机出现在VirtualBox管理器窗口中。此过程还创建了/vms/Test1目录。我使用Advanced菜单在一个页面上设置了所有配置,如图1所示。“GuidedMode”可以获得相同的信息,但需要更多的点击才能通过每个配置项的窗口。它确实提供了更多的帮助内容,但我并不需要它。图1:创建一个新的虚拟机,但不添加硬盘。然后,我需要知道Linux分配给原始Windows硬盘的设备。在终端会话中以root身份使用lshw命令来发现Windows磁盘的设备分配。在这个例子中,代表整个存储设备的设备是/dev/sdb。#lshw-short-classdisk,volumeH/W路径设备类描述===============================================================/0/100/17/0/dev/sda磁盘500GBCT500MX500SSD1/0/100/17/0/1卷2047MiBWindowsFAT卷/0/100/17/0/2/dev/sda2卷4GiBEXT4卷/0/100/17/0/3/dev/sda3卷459GiBLVM物理卷/0/100/17/1/dev/cdrom磁盘DVD+-RWDU-8A5LH/0/100/17/0.0.0/dev/sdb磁盘256GBTOSHIBAKSG60ZMV/0/100/17/0.0.0/1/dev/sdb1卷649MiBWindowsFAT卷/0/100/17/0.0.0/2/dev/sdb2卷127MiB保留分区/0/100/17/0.0.0/3/dev/sdb3卷236GiBWindowsNTFS卷/0/100/17/0.0.0/4/dev/sdb4volume989MiBWindowsNTFSvolume[root@office1etc]#VirtualBox而不是将虚拟存储设备放在/vms/Test1目录下,需要有一种方法来识别物理硬盘从启动。此标识是通过创建一个*.vmdk文件来实现的,该文件指向将成为虚拟机存储设备的原始物理磁盘。作为非root用户,我创建了一个指向整个Windows设备/dev/sdb的vmdk文件。$VBoxManageinternalcommandscreaterawvmdk-filename/vms/Test1/Test1.vmdk-rawdisk/dev/sdbRAWhostdiskaccessVMDKfile/vms/Test1/Test1.vmdk创建成功。然后,我使用VirtualBox管理器“File=>VirtualMediaVirtualMediaManager对话框将vmdk磁盘添加到可用硬盘。我单击“添加”,文件管理对话框显示默认的/vms位置。我选择了Test1目录,然后是Test1.vmdk文件。然后我点击“打开”,Test1.vmdk文件显示在可用硬盘列表中,我选择它并点击“关闭”。下一步是添加这个vmdk磁盘到我们虚拟机的存储设备。在“Test1VM”的设置菜单中,我选择“存储”并单击图标添加硬盘。一个对话框打开,在标题为“未附加”的列表中显示Test1vmdk虚拟磁盘文件.我选择了文件并点击了“选择”按钮。这个设备现在出现在连接到“Test1VM”的存储设备列表中。这个虚拟机上唯一的其他存储设备是一个空的CD/DVD-ROM驱动器。我点击“确定”,我完成了将这个设备添加到虚拟机。还有一项需要在新虚拟机运行之前进行配置。使用VirtualBox管理器设置对话框中的“Test1VM”,我导航到“System=>Motherboard”页面并勾选“EnableEFIEnableEFI”框。如果您不这样做,当您尝试启动虚拟机时,VirtualBox将生成一个错误,指出它找不到可启动媒体。虚拟机现在从原始Windows10硬盘驱动器启动。但是,我无法登录,因为我在系统上没有普通账户,而且我也无法获取Windows管理员账户的密码。解锁驱动器不,本节不是关于破解硬盘驱动器的加密,而是关于绕过不属于组织中某人的众多Windows管理员帐户之一的密码。虽然我可以启动WindowsVM,但我无法登录,因为我在该主机上没有帐户,而且要求人们提供密码是一个可怕的安全漏洞。尽管如此,我还是需要登录到这个VM来安装“VirtualBoxGuestAdditions”,它提供了鼠标指针的无缝捕捉和释放,允许我将VM大小调整到大于1024x768,并在以后进行正常维护。这是一个完美的用例,Linux的一个特性是更改用户密码。虽然我是用以前管理员的账号开机的,但是现在他已经不支持这个系统了,我也看不出他的密码,也看不出他生成密码的模式。我直接清除了之前系统管理员的密码。有一个非常好的开源软件工具专门用于此任务。在Linux主机上,我安装了chntpw,大致意思是:“更改NT的密码”。#dnf-yinstallchntpw我关闭虚拟机并将/dev/sdb3分区挂载到/mnt。我确定/dev/sdb3是正确的分区,因为它是我在上一个lshw命令的输出中看到的第一个大型NTFS分区。请务必不要在虚拟机运行时挂载该分区,否则会导致虚拟机存储设备上出现严重的数据损坏。请注意,其他主机上的分区可能不同。导航到/mnt/Windows/System32/config目录。如果当前工作目录(PWD)不在此处,chntpw实用程序将无法工作。请启动程序。#chntpw-iSAMchntpwversion1.00140201,(c)PetterNHagenHive名称(来自标头):<\SystemRoot\System32\Config\SAM>ROOTKEYatoffset:0x001020*Subkeyindexingtypeis:686c文件大小131072[20000]字节,包含11页(+1个标题页)用于数据:367/44720块/字节,未使用:14/24560块/字节。<>========<>chntpwMain交互式菜单<>========<>加载的配置单元:1-编辑用户数据和密码2-列出组---9-注册表编辑器,现在具有完整的写入支持!q-退出(你会被问到是否有东西要保存)要做什么?[1]->chntpw命令使用TUI(文本用户界面),它提供了一组菜单选项。选择主菜单项之一时,通常会显示二级菜单。按照明确的菜单名称,我首先选择了菜单项1。该怎么办?[1]->1=====chntpw编辑用户信息和密码====|RID-|------------用户名------------|行政?|-锁?--||01f4|管理员|管理员|解锁/锁定||解锁/锁定||01f8|WDAGUtilityAccount||dis/lock|Pleaseenterusernumber(RID)or0toexit:[3e9]接下来,我选择了我们的管理帐户john并在出现提示时输入了RID。这将显示用户的信息并提供额外的菜单项来管理帐户。请输入用户编号(RID)或0退出:[3e9]03eb=================USEREDIT====================RID:1003[03eb]用户名:johnfullname:comment:homedir:00000221=用户(有4个成员)00000220=管理员(有5个成员)帐户位:0x0214=[]已禁用|[]主目录要求。|[]密码不需要。|[]温度。重复|[X]普通账号|[]NMS帐户|[]域信任帐户|[]Wks信托法案。|[]Srv信任行为|[X]Pwd不会过期|[]自动锁定|[](未知0x08)|[](未知0x10)|[](未知0x20)|[](未知0x40)|登录失败次数:0,而最大尝试次数为:0总登录次数:47----用户编辑菜单:1-清除(空白)用户密码2-解锁并启用用户帐户[现在可能已锁定]3-提升用户(使用户成为管理员)4-将用户添加到组5-从组中删除用户q-退出编辑用户,返回用户选择:[q]>2此时,我选了菜单项2,“解锁并启动使用UserAccountUnlockandenableuseraccount”,它删除了密码,顺便允许我不用密码登录——这是自动登录。然后我退出了程序。一定要在继续之前卸载/mnt。我是的,我知道,但为什么不呢!我已经绕过了这个硬盘和主机安全问题,所以根本没有关系。此时,我确实登录了旧的管理员帐户并为自己创建了一个新帐户,并设置一个安全的密码。然后我以自己的身份登录并删除了旧的管理员帐户,这样其他人就无法使用它了。网上还有使用Windows管理员帐户(上面列表中的01f4)的说明。如果不是作为组织管理员帐户,我可以删除或更改该帐户的密码。另请注意,此过程也可以从目标主机的实时USB执行。重新激活Windows所以我现在将WindowsSSD作为我的虚拟机它在我的Fedora主机。然而,令人沮丧的是,经过几个小时的运行宁,Windows显示一条警告消息,指出我需要“激活Windows”。看了很多死胡同的网页后,我终于放弃了用现有的激活码重新激活的尝试,因为它似乎不知何故被破坏了。最后,当我尝试进入其中一个在线虚拟支持聊天会话时,虚拟“获取帮助”应用程序向我显示Windows10Pro实例已经激活。这怎么可能?它一直要我激活它,但是当我尝试时,它说它已经激活了。或者当我花了三天多的时间进行研究和试验时,我决定回到原来的SSD引导进入Windows并在以后处理这个问题。但随后Windows——即使是从原始存储设备启动时,也要求重新激活。在Microsoft的支持网站上搜索没有帮助。在不得不使用与以前一样的自动支持后,我拨打了提供的号码,自动响应系统告诉我所有对Windows10Pro的支持只能通过互联网获得。到现在为止,我几乎晚了一天让计算机启动并安装回办公室。回到未来我终于松了一口气,买了一份Windows10Home,大约120美元,并创建了一个带有虚拟存储设备的虚拟机,并安装在上面。我将大量文档和电子表格文件复制到办公室经理的主目录中。我重新安装了一个我们需要的Windows程序,并与办公室经理确认它可以工作并且数据都在那里。总结所以我的目标实现了,实际上晚了一天,花费120美元,但使用的是更标准的方法。我仍在调整权限并恢复Thunderbird联系人;我有一些CSV备份,但*.mab文件在Windows驱动器上包含的信息非常少。我什至使用Linuxfind命令来定位所有原始存储设备。走了很多弯路,每次都得自己重新来过。我遇到了一些与这个项目没有直接关系但影响我工作的问题。这些问题包括有趣的事情,例如在我的Linux机器上的/mnt上安装Windows分区,收到该分区已被Windows(是的,在我的Linux主机上)不正确关闭的消息,并且它修复了不一致。即使是Windows在通过其所谓的“恢复”模式多次重新启动后也无法执行此操作。也许您在chntpw工具的输出数据中发现了一些线索。为了安全起见,我删除了主机上显示的一些其他用户帐户,但从这些信息中可以看出所有用户都是管理员。不用说,我也改变了它。我仍然对我遇到的管理不善感到惊讶,但我想我不应该这样做。最后还是被迫买了license,不过至少比原来的便宜一点点。我确实知道的一件事是,一旦我找到了所有必要的信息,Linux部分就可以完美运行。问题在于处理Windows激活。你们中的一些人可能已经成功地重新激活了Windows。如果是这样,我仍然想知道你们是如何做到的,所以请在评论中添加您的经验。这是我不喜欢Windows并且只在我自己的系统上使用Linux的另一个原因。这是我将组织中的所有计算机都转换为Linux的原因之一。这只是需要时间和说服力。这是我们唯一剩下的会计课程,我需要与财务主管一起寻找适合她的课程。我明白了——我喜欢我的工具,我需要它们以最适合我的方式工作。