如何在FreeBSD bhyve下运行Windows

正如我之前所写的那样,FreeBSD 下的虚拟机管理程序 bhyve 即将支持 Windows 了。在其通过 FreeBSD Virtualization 邮件列表公布时,FreeBSD 11.0-CURRENT r288524 版已对其正式支持。不久之后,Windows 的外交人员 Michael Dexter 就在 FreeBSD Wiki上编写了一个关于在 bhyve 下运行 Windows 的很棒的指引手册。

在 bhyve 下,运行 Windows 的秘密武器就是全新的 UEFI 支持。这真是个相当棒的消息,因为当你在 bhyve 中采用 UEFI 时, 你已不必先在 bhyveload 或 grub-bhyve 中加载操作系统。下面是在命令行运行一个 Windows bhyve 实例的示例。


  1. bhyve \ 
  2.       -c 2 \ 
  3.       -s 0,hostbridge \ 
  4.       -s 3,ahci-hd,windows2016.img \ 
  5.       -s 4,ahci-cd,install.iso \ 
  6.       -s 10,virtio-net,tap0 \ 
  7.       -s 31,lpc \ 
  8.       -l com1,/dev/nmdm0A \ 
  9.       -l com2,/dev/nmdm1A \ 
  10.       -l bootrom,BHYVE_UEFI_20151002.fd \ 
  11.       -m 2G -H -w \ 
  12.       windows2016 

在我的业余时间里,我正在开发一个叫做 iohyve 小的 shell 脚本,所以当此支持到来时,我欣喜若狂。我开始开发 iohyve 是因为当进行沙箱测试时,我不想使用 Oracle 的VirtualBox。有时我喜欢点击一些不可靠的链接并写邮件给滥用的部门并标记为垃圾邮件,我希望让尽可能多的任何可能的潜在恶意软件远离我。由于大多数恶意软件都是为 Windows 用户所写,在 bhyve 中支持它意味着我已经慢慢的接近实现这一目标了。现在 iohyve 还不能将客户机放在优秀的虚拟 NAT 网络,但我最近已经把 UEFI 支持 加入到了 FreeBSD ports 中的 iohyve v0.7 版本了。对于今天这个教程,我将使用 GitHub 上的版本来完成在 FreeBSD 中创建一个 bhyve Windows 客户机的任务,因为这个 iohyve UEFI 命令的版本的 bug 比较少。请注意,由于 UEFI 固件还是很新的,是实验性质的,所以 iohyve 对它的支持也是实验性质的。现在的局限在于你只能有一个 HDD,一个虚拟 NIC(使用 tap 设备),以及没有支持 pass-through。其他操作系统若通过 bhyveload 或 grup-bhyve 命令启动则可以支持多个虚拟 HDD,甚至是 passthrough 支持。

主机和安装 ISO 准备

为了利用在 bhyve 中启动芯片(UEFI)的功能,你需要运行FreeBSD 11.0-CURRENT(至少是r288524版本)。自从 iohyve 使用了ZFS, 如果你还在运行 11-CURRENT,你真应该跳过它,使用 zpool 去设置。在我的笔记本上,我选择使用 Root on ZFS 来安装FreeBSD,使用它非常简单。稍后,我将会进入 iohyve 的设置。在这之前,我会先运行 bhyve,我需要先创建一个自定义的 Windows 安装 ISO。因为 bhyve 不能输出视频,我们必须创建一个“无人值守的”安装 ISO。因为我们会重新制作新的 ISO,我们将会在重新制作的 ISO 中安装 VirtIO NIC 驱动来确保 Windows guest 能连接到网络。

正如我前面提到的,FreeBSD 的 wiki 条目 细节已经达到了这种程度。自从 bhyve 开始支持 Windows 之后,为了尝试在 bhyve 下运行不同版本的 Windows 操作系统,我编写了一系列小的脚本和文件。我发现自己一遍又一遍的尝试不同的 AutoUnattend.xml 文件。这个 XML 文件基本上是当在裸机上安装 Windows 时一系列点击按钮的“响应”。我在一个被我称为 Yabs 的脚本里简化了这些流程。我会在本教程中使用那些脚本,但我会随时检查并与 wiki 上的文章同步。你也需要找一个 Windows ISO 安装文件的副本。在本教程中,我将使用 Windows 2008,尽管我也已经用 Windows 2012 试过了。

◆用 git 克隆 Yabs 的 repo,并开始你的初始工作目录。


  1. $ git clone https://github.com/pr1ntf/YetAnotherBhyveScript.git 
  2. Cloning into 'YetAnotherBhyveScript'... 
  3. remote: Counting objects: 22, done. 
  4. remote: Compressing objects: 100% (17/17), done. 
  5. remote: Total 22 (delta 9), reused 17 (delta 4), pack-reused 0 
  6. Unpacking objects: 100% (22/22), done. 
  7. Checking connectivity... done.$ mv YetAnotherBhyveScript/ win2k8auto$ cd win2k8auto/ 

◆使用 fetch 命令从 Peter 那里取得固件,并从 Fedora Project 取得驱动。我将使用 0.1-94 版驱动,因为较新版的驱动在 Windows 2008 下不能正常工作。


  1. $ fetch https://people.freebsd.org/~grehan/bhyve_uefi/BHYVE_UEFI_20151002.fd 
  2. $ fetch https://fedorapeople.org/groups/virt/virtio-win/deprecated-isos/archives/virtio-win-0.1-94/virtio-win-0.1-94.iso 

◆我找到的 ISO 安装文件叫做 Win2k8R2.iso,其目录内容如下:


  1. $ ls 
  2. BHYVE_UEFI_20151002.fd  Win2k8-AutoUnattend.xml extract.sh              remaster.sh             yabs.sh 
  3. README.txt              Win2k8R2.iso            null.iso                virtio-win-0.1-94.iso 

◆我们现在必须修改 extract.sh 脚本来指向正确的位置。要注意运行 extract.sh ,需要 FreeBSD 的 Port archivers/pz7ip。我的文件如下:


  1. #!/bin/sh 
  2.   
  3. # Extract important stuff to remaster folder 
  4.   
  5. folder=win2k8 
  6. iso=Win2k8R2.iso 
  7. drivers=virtio-win-0.1-94.iso 
  8.   
  9. mkdir -p ${folder}/virtio 
  10.   
  11. 7z x ${iso} -o${folder} 
  12.   
  13. tar xf $drivers -C ${folder}/virtio 

◆在我们执行 ./extract.sh 之后,我们可以将 AutoUnattend.xml 文件复制到我们的 win2k8 目录下。Yabs 中包含的 AutoUnattend.xml 文件会将管理员密码设置为 R3dm0nd!,并会将默认网卡 IP 设置为 192.168.0.111 并具有指定网关和子网掩码。因此,一定要先对其进行修改。你可以在此文件中删除第二个 <SynchronousCommand wcm:action="add">。(在第一次登陆时执行这个命令 netsh interface ipv4 set address name="local area connection" source=static address=192.168.0.111 mask=255.255.255.0 gateway=192.168.0.1)。


  1. $ cat Win2k8-AutoUnattend.xml  
  2. <?xml version="1.0" encoding="utf-8"?><unattend xmlns="urn:schemas-microsoft-com:unattend"> 
  3.     <settings pass="windowsPE"> 
  4.         <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
  5.             <DiskConfiguration> 
  6.                 <Disk wcm:action="add"> 
  7.                     <DiskID>0</DiskID> 
  8.                     <WillWipeDisk>true</WillWipeDisk> 
  9.                     <CreatePartitions> 
  10.                         <CreatePartition wcm:action="add"> 
  11.                             <Order>1</Order> 
  12.                             <Size>400</Size> 
  13.                             <Type>EFI</Type> 
  14.                         </CreatePartition> 
  15.                         <CreatePartition wcm:action="add"> 
  16.                             <Order>2</Order> 
  17.                             <Size>128</Size> 
  18.                             <Type>MSR</Type> 
  19.                         </CreatePartition> 
  20.                         <CreatePartition wcm:action="add"> 
  21.                             <Order>3</Order> 
  22.                             <Extend>true</Extend> 
  23.                             <Type>Primary</Type> 
  24.                         </CreatePartition> 
  25.                     </CreatePartitions> 
  26.   
  27.                     <ModifyPartitions> 
  28.                       <!-- EFI system partition (ESP) --> 
  29.                       <ModifyPartition wcm:action="add"> 
  30.                         <Order>1</Order>  
  31.                         <PartitionID>1</PartitionID>  
  32.                         <Label>System</Label>  
  33.                         <Format>FAT32</Format>  
  34.                       </ModifyPartition> 
  35.   
  36.                       <!-- Windows partition --> 
  37.                       <ModifyPartition wcm:action="add"> 
  38.                         <Order>2</Order>  
  39.                         <PartitionID>3</PartitionID>  
  40.             </WindowsFeatures> 
  41.             <Themes> 
  42.               <ThemeName>Classic Theme</ThemeName> 
  43.               <DefaultThemesOff>true</DefaultThemesOff> 
  44.             </Themes> 
  45.             <ShowWindowsLive>false</ShowWindowsLive> 
  46.   
  47.             <FirstLogonCommands> 
  48.                <SynchronousCommand wcm:action="add"> 
  49.                   <CommandLine>cmd /C bcdedit /emssettings emsport:1 emsbaudrate:115200</CommandLine> 
  50.                   <Description>Enable EMS</Description> 
  51.                   <Order>1</Order> 
  52.                </SynchronousCommand> 
  53.                <SynchronousCommand wcm:action="add"> 
  54.                     <CommandLine>netsh interface ipv4 set address name="local area connection" source=static  
  55. address=192.168.0.111 mask=255.255.255.0 gateway=192.168.0.1</CommandLine> 
  56.                     <Order>2</Order> 
  57.                 </SynchronousCommand> 
  58.             </FirstLogonCommands> 
  59.         </component> 
  60.     </settings> 
  61.   
  62.     <settings pass="offlineServicing"> 
  63.       <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="NonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
  64.         <DriverPaths> 
  65.             <PathAndCredentials wcm:action="add" wcm:keyValue="1"> 
  66.                 <Path>d:\virtio</Path> 
  67.             </PathAndCredentials> 
  68.         </DriverPaths> 
  69.       </component> 
  70.     </settings></unattend>$ cp Win2k8-AutoUnattend.xml win2k8/AutoUnattend.xml 

◆现在我们按照所有正确的位置修改 remaster.sh 脚本来制作我们的无人值守 ISO 安装文件。执行 ./remaster.sh 后,所有的东西都会打包在一个不错的 ISO 文件中。它需要 sysutils/cdrtools-devel port。我的如下:


  1. #!/bin/sh 
  2.   
  3. # Remaster new ISO 
  4.   
  5. folder=win2k8 
  6. iso=win2k8.iso 
  7.   
  8. mkisofs \ 
  9.     -b boot/etfsboot.com -no-emul-boot -c BOOT.CAT \ 
  10.     -iso-level 4 -J -l -D \ 
  11.     -N -joliet-long \ 
  12.     -relaxed-filenames -v \ 
  13.     -V "Custom" -udf \ 
  14.     -boot-info-table -eltorito-alt-boot -eltorito-platform 0xEF \ 
  15.     -eltorito-boot efi/microsoft/boot/efisys_noprompt.bin \ 
  16.     -no-emul-boot \ 
  17.     -o ${iso} ${folder} 

iohyve 的安装和准备

现在,我们的工作目录看起来应该是这样的:


  1. $ ls 
  2. BHYVE_UEFI_20151002.fd  Win2k8R2.iso            remaster.sh             win2k8.iso 
  3. README.txt              extract.sh              virtio-win-0.1-94.iso   yabs.sh 
  4. Win2k8-AutoUnattend.xml null.iso                win2k8 

     我们可以继续安装 iohyve 并为我们的 Windows 安装过程做准备。如前所述,我们要使用 GitHub 上的版本,而不是 FreeBSD ports 中的版本。执行 iohyve version 命令会输出 0.7.1。


  1. $ git clone https://github.com/pr1ntf/iohyve.git 
  2. Cloning into 'iohyve'... 
  3. remote: Counting objects: 904, done. 
  4. remote: Compressing objects: 100% (3/3), done. 
  5. remote: Total 904 (delta 0), reused 0 (delta 0), pack-reused 901 
  6. Receiving objects: 100% (904/904), 231.14 KiB | 0 bytes/s, done. 
  7. Resolving deltas: 100% (505/505), done. 
  8. Checking connectivity... done.$ cd iohyve/$ sudo make install clean 
  9. Password: 
  10. gzip -cn iohyve.8 > iohyve.8.gz 
  11. mkdir -p /usr/local/sbin 
  12. install -c -m 555 /usr/home/pr1ntf/iohyve/iohyve /usr/local/sbin/ 
  13. install -c /usr/home/pr1ntf/iohyve/rc.d/* /usr/local/etc/rc.d/ 
  14. install -c iohyve.8.gz /usr/local/man/man8/ 
  15. rm -f iohyve.8.gz iohyve.8.cat.gz$ cd ~$ iohyve version 
  16. iohyve v0.7.1 2015/12/08 Im Here for the Party Edition 

现在,我们需要告诉 iohyve 三件事来设置它。

◆Zpool 存储池存储的 iohyve 数据集。

◆以太网接口连接的所有 tap 设备可以连接的硬编码(当前)bridge0 设备。

◆告诉 iohyve 去加载 nmdm 及操作 iohyve 所需的 vmm 内核模块。

因为我们想要让 iohyve 在我每次启动电脑的时候都会设置网络和内核模块,我会将 iohyve 的设置分为两部分:为 zpool 执行 iohyve setup pool=zroot 命令,然后修改主机上的 /etc/rc.conf 文件并为接口和模块执行 service iohyve start 命令。

因为我的默认以太网接口是 em0,于是我在主机的 /etc/rc.conf 文件中添加了下面的几行代码。


  1. iohyve_enable="YES" 
  2. iohyve_flags="kmod=1 net=em0" 

现在,我可以执行 iohyve setup pool=zroot 命令和 service iohyve start 命令了:


  1. $ sudo iohyve setup pool=zroot 
  2. Setting up iohyve pool...$ sudo service iohyve start 
  3. Starting iohyve guests... 
  4. Loading kernel modules... 
  5. Seting up bridge0 on em0... 
  6. net.link.tap.up_on_open: 1 -> 1 

在我们可以创建我们的 Windows iohyve 客户机之前,我们需要尽早在我们的 win2k8auto 文件夹中做以下三件事。

◆最重要的是,我们需要一个秘密武器。我们需要 Peter 和 nahanni 已经提供给 FreeBSD 社区的 BHYVE_UEFI_20151002.fd UEFI 固件文件。

◆我们需要我们早先已经创建的 win2k8.iso 无人值守 Windows ISO 安装文件。

◆由于在这种方式中固件与 Windows 交互时会出现一个异常行为,我们会需要一个基本上是空白光盘的 null.iso 文件。

为了实现这一点,我们可以使用 iohyve cpiso 和 iohyve cpfw 命令:


  1. $ ls
  2. BHYVE_UEFI_20151002.fd  Win2k8R2.iso            remaster.sh             win2k8.iso 
  3. README.txt              extract.sh              virtio-win-0.1-94.iso   yabs.sh 
  4. Win2k8-AutoUnattend.xml null.iso                win2k8$ sudo iohyve cpiso win2k8.iso 
  5. Password: 
  6. Copying win2k8.iso from win2k8.iso...$ sudo iohyve cpiso null.iso 
  7. Copying null.iso from null.iso...$ sudo iohyve cpfw BHYVE_UEFI_20151002.fd 
  8. Copying BHYVE_UEFI_20151002.fd from BHYVE_UEFI_20151002.fd...$ iohyve isolist 
  9. Listing ISO's... 
  10. null.iso 
  11. win2k8.iso$ iohyve fwlist 
  12. Listing Firmware... 
  13. BHYVE_UEFI_20151002.fd 

Windows 客户机的创建和准备

首先,我们可以使用 32G 大小的虚拟 HDD 创建一个叫做 win2k8 的新的客户机。


  1. $ sudo iohyve create win2k8 32G 
  2. Creating win2k8... 

现在,我们需要在客户机上设置一些属性,以便 bhyve 可以正常的启动客户机。


  1. $ iohyve fwlist 
  2. Listing Firmware... 
  3. BHYVE_UEFI_20151002.fd$ sudo iohyve set win2k8 fw=BHYVE_UEFI_20151002.fd bargs="-H -w" ram=1024M 
  4. Setting win2k8 fw=BHYVE_UEFI_20151002.fd... 
  5. Setting win2k8 bargs=-H -w... 
  6. Setting win2k8 ram=1024M...$ iohyve getall win2k8 
  7. Getting win2k8 props... 
  8. description  Tue_Dec__8_10:30:51_MST_2015 
  9. fw           BHYVE_UEFI_20151002.fd 
  10. ram          1024M 
  11. os           default 
  12. cpu          1 
  13. size         32G 
  14. bargs        -H_-w 
  15. loader       bhyveload 
  16. name         win2k8 
  17. boot         0 
  18. tap          tap0 
  19. persist      1 
  20. con          nmdm0 
  21. autogrub     \ninstall      yes 

现在我们可以开始第一次引导安装了。

Windows 安装过程

Windows 的安装过程分为三个主要的阶段:

◆第一个安装阶段:从 ISO 安装文件中复制文件

◆第二个安装阶段:Windows 实际解压并安装一些东西

第三个安装阶段:Windows 执行在 AutoUnattend.xml 中设置的“第一次登陆”命令

在第一阶段开始之前,我喜欢打开另一个控制台并执行 iohyve console win2k8 命令。


  1. $ sudo iohyve console win2k8 
  2. Password: 
  3. Starting console on win2k8... 
  4. ~. to escape console [uses cu(1) for console]Connected 

现在,我们可以通过 iohyve uefi 命令开始安装 win2k8 客户机了。它应该会马上开始。


  1. $ iohyve isolist 
  2. Listing ISO's... 
  3. null.iso 
  4. win2k8.iso$ sudo iohyve uefi win2k8 win2k8.iso 

切换到你的其他控制台,过一会你应该会看到 Windows SAC:


  1. Computer is booting, SAC started and initialized.                                
  2.   
  3. Use the "ch -?" command for information about using channels.                    
  4. Use the "?" command for general help.                                            
  5.   
  6.   
  7. SAC>                         
  8. EVENT: The CMD command is now available.                                         
  9. SAC>                                                                             
  10. EVENT:   A new channel has been created.  Use "ch -?" for channel help.          
  11. Channel: SACSetupAct                                                             
  12. SAC>                                                                             
  13. EVENT:   A new channel has been created.  Use "ch -?" for channel help.          
  14. Channel: SACSetupErr                                                             
  15. SAC> 

你可以按 [Esc]+[Tab] 键,然后回车来切换到显示了安装细节的 SACSetupAct 控制台。Calling WIMApplyImage 的部分会需要执行一段时间才会退出。


  1. :\ProgramData\] doesn't exist; no need to move it before applying image.2015-12-08 10:51:09, Info                  IBS    MoveOldOSFiles:File/folder [E:\Recovery\] doesn't exist; no need to move it before applying image.2015-12-08 10:51:09, Info                  IBS    MoveOldOSFiles:File/folder [E:\Users\] doesn't exist; no need to move it before applying image.2015-12-08 10:51:09, Info                  IBS    MoveOldOSFiles:File/folder [E:\Windows\] doesn't exist; no need to move it before applying image.2015-12-08 10:51:09, Info       [0x06412c] IBSLIB SetCheckpoint: Checkpoint("WinPEArchiveOldWindowsFoldersStartCheckpoint") in progress...2015-12-08 10:51:09, Info       [0x06412e] IBSLIB SetCheckpoint: Checkpoint "WinPEArchiveOldWindowsFoldersStartCheckpoint" successfully set.2015-12-08 10:51:09, Info       [0x06412c] IBSLIB SetCheckpoint: Checkpoint("WinPEArchiveOldWindowsFoldersDoneCheckpoint") in progress...2015-12-08 10:51:09, Info       [0x06412e] IBSLIB SetCheckpoint: Checkpoint "WinPEArchiveOldWindowsFoldersDoneCheckpoint" successfully set.2015-12-08 10:51:09, Info       [0x06412c] IBSLIB SetCheckpoint: Checkpoint("WinPEImageApplyReadyCheckpoint") in progress...2015-12-08 10:51:09, Info       [0x06412e] IBSLIB SetCheckpoint: Checkpoint "WinPEImageApplyReadyCheckpoint" successfully set.2015-12-08 10:51:09, Info       [0x06009e] IBS    DeployWIMImage:Calling IDepWIMImageResolved::Apply...2015-12-08 10:51:10, Info       [0x0606cc] IBS    Calling WIMApplyImage (flags = 0x184)... 

安装程序之后会继续将一些驱动程序文件复制到虚拟 HDD 中,之后你可以看到屏幕停在了下面的信息。需要注意的是,如果它似乎被冻结在了那里,那么客户机可能已经完成了它的第一个阶段安装并关机了。


  1. Name:                  SACDescription:           Special AdminisType:                  VT-UTF8Channel GUID:          8472e3a1-9ddc-11e5-9c07-806e6f6e6963Application Type GUID: 63d02270-8aa4-11d5-bccf-806d6172696fPress <esc><tab> for next channel.Press <esc><tab>0 to return to the SAC channel.Use any other key to view this channel. 

在第一个控制台上面,检查并确保客户机关机了。


  1. $ iohyve list 
  2. Guest   VMM?  Running?  rcboot?  Description 
  3. win2k8  YES   NO        NO       Tue_Dec__8_10:30:51_MST_2015 

从上面的信息,我们可以看到 Running? 标志被设置为了 NO,这意味着客户机已经被关闭了。我们还需要运行 iohyve destroy win2k8 来从 VMM? 中移除它,不然客户机将在第二个安装阶段失败。


  1. $ sudo iohyve destroy win2k8 
  2. Destroying win2k8...errno = 37 

现在我们可以运行第二个阶段了:


  1. $ sudo iohyve uefi win2k8 null.iso 

如果你切换到了 SAC 控制台你可以改变 SACSetupAct 引导以及查看屏幕上滚过的东西。这个步骤是非常迅速的,而且有时候你并不能捕捉到 SACSetupAct 引导,所以当客户机关闭的时候你只能留下一个看起来如下的屏幕。


  1. Setup is updating registry settings... 
  2. EVENT:   A new channel has been created.  Use "ch -?" for channel help. 
  3. Channel: SACSetupAct 
  4. SAC> 
  5. EVENT:   A new channel has been created.  Use "ch -?" for channel help. 
  6. Channel: SACSetupErr 
  7. SAC> 
  8. EVENT: The CMD command is now available. 
  9. SAC> 
  10. EVENT:   A channel has been closed. 
  11. Channel: SACSetupAct 
  12. SAC> 
  13. EVENT:   A channel has been closed. 
  14. Channel: SACSetupErr 
  15. SAC> 
  16. The SAC will become unavailable soon.  The computer is shutting down. 
  17.   
  18. SAC> 

切换到你的第一个控制,检查以确保其再次关闭,并再次移除它。然后,你可以开始第三个阶段的安装,并最终第一次启动 Windows。


  1. $ iohyve list 
  2. Guest   VMM?  Running?  rcboot?  Description 
  3. win2k8  YES   NO        NO       Tue_Dec__8_10:30:51_MST_2015$ sudo iohyve destroy win2k8 
  4. Destroying win2k8...errno = 37$ sudo iohyve uefi win2k8 null.iso 

第一次登陆安装阶段确实需要相当多的时间来完成,但最终,你的屏幕上会显示如下信息:


  1. Computer is booting, SAC started and initialized.                                
  2.   
  3. Use the "ch -?" command for information about using channels.                    
  4. Use the "?" command for general help.                                            
  5.   
  6.   
  7. SAC>                                                                             
  8. EVENT: The CMD command is now available.                                         
  9. SAC> 

如果我运行 SAC 命令 i,我可以看到在之前的 AutoUnattend.xml 文件中设置的客户机的 IP 地址。默认情况下,Windows 客户机无法 ping 通网络,但执行 nmap 192.168.0.111 将会显示 Windows 远程桌面可用。


  1. SAC>i 
  2. Net: 12, Ip=192.168.0.111 Subnet=255.255.255.0 Gateway=192.168.0.1 

就是这样!你现在可以用你惯用的远程桌面客户端使用你在 AutoUnattend.xml 中设置的默认密码 R3dm0nd! 去连接客户机的 Administrator 帐户了。

安装后你可以做的一些很酷的东西

尽管 iohyve uefi 功能尚未被正式支持,你依然可以使用内置的 iohyve 工具为 Windows 客户机做一些很酷的关于动态文件系统(ZFS)的一些事情,比如在安装更新之前创建快照:


  1. $ sudo iohyve snap win2k8@preupdate 
  2. Password: 
  3. Taking snapshot win2k8@preupdate$ iohyve snaplist 
  4. win2k8@preupdate 

你也可以制作一个这个客户机的独立的拷贝,一旦你制作了这个镜像,你就可以不必一遍又一遍的执行 Windows 的安装过程了:


  1. $ sudo iohyve clone win2k8 win2k8-deploy                                                                                                
  2. Cloning win2k8 to win2k8-deploy$ iohyve list 
  3. Guest          VMM?  Running?  rcboot?  Description 
  4. win2k8         YES   NO        NO       Tue_Dec__8_10:30:51_MST_2015 
  5. win2k8-deploy  NO    NO        NO       Tue_Dec__8_11:34:38_MST_2015 

作者:ostatsu, 无若, lombreeze

来源:51CTO

时间: 2024-10-31 04:06:00

如何在FreeBSD bhyve下运行Windows的相关文章

如何在Win7系统下运行红色警戒游戏

  如何在Win7系统下运行红色警戒游戏 1.首先右键游戏程序,选择"属性"; 2.找到兼容性选项卡; 3.点击"以兼容模式运行这个程序",然后选择"Windows NT 4.0(Service Pack 5)"; 4.在往下找到"以管理员身份运行此程序",勾选; 5.点击确定.然后打开游戏.

如何在FreeBSD平台下架设常用的FTP服务器

FreeBSD是一款高性能.高可靠性的UNIX操作系统,它继承了BSD系统的纯净性和高性能,其软件包装和发布也比Linux系统更加严谨,同时也具有更佳的安全性,正是因为这些特性使得FreeBSD操作系统在服务器环境中有着比较广泛的应用.今天,小编就给大家介绍一下如何在FreeBSD平台下架设常用的FTP服务器,希望能够对大家有所帮助. 第一步:下载FTP服务源代码包 proftpd-1.2.7.tar.gzhttp://www.aliyun.com/zixun/aggregation/18479

如何在FreeBSD平台下架设一台邮件服务器

FreeBSD是一款高性能.高可靠性的UNIX操作系统,它继承了BSD系统的纯净性和高性能,其软件包装和发布也比Linux系统更加严谨,同时也具有更佳的安全性,正是因为这些特性使得FreeBSD操作系统在服务器环境中有比较广泛的应用.下面,我就给大家介绍一下如何在FreeBSD平台下架设一台http://www.aliyun.com/zixun/aggregation/12489.html">邮件服务器,希望能够对大家有所帮助. 一.安装webmin 下载webmin-1.070.tar.

如何在FreeBSD平台下架设Web服务器

目前,很多服务器都安装了FreeBSD操作系统.FreeBSD操作系统继承了BSD系统的纯净性和高性能,加上其软件包装和发布比Linux系统更加严谨,同时也具有更佳的安全性,正是这些特性使得FreeBSD操作系统在服务器环境中备受推崇.今天小编就给您介绍一下如何在FreeBSD平台下架设http://www.aliyun.com/zixun/aggregation/17117.html">Web服务器,希望对您能够有所帮助. 一.接入Internet 配置的第一步就是让FreeBSD接入I

Win7应用程序如何在XP系统环境下运行

  'Windows7系统应用程序如何在XP系统环境下能够正常运行'. 右击不能正常运行的程序,弹出的菜单点击"属性"命令 在出来的属性窗口单击"兼容性"选项卡 在兼容模板栏下勾选"以兼容模式运行这个程序"的复选框 单击下拉框,选择"Windows XP(Service Pack 3)"

如何在Linux系统下运行微信Web开发者工具

微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件. 本人系统为Linux Mint 18.1版本. 1.下载nwjs 下载nwjs(http://nwjs.io/)的SDK. 2.将微信web开发者工具拷贝到nwjs 将在window系统下安装的微信web开发者工具文件夹中的package.nw.icon.ico.* 微信web开发者工具.exe拷贝到nwjs sdk

Linux下运行windows程序

现在Winxp停止了支持,那我们的windows程序是否可以再linux上执行呢,如下是一些参考的信息   在您的 Linux/Mac 操作系统上运行 Windows 软件 http://www.winehq.org/ http://www.codeweavers.com/   ubuntu桌面的测试方法 dpkg --add-architecture i386 http://stackoverflow.com/questions/19462579/ubuntu-dpkg-add-archite

FreeBSD平台下架设安全高效的Web服务器

FreeBSD是一个可以在Intel兼容机.DEC Alpha或PC98架构的计算机上执行的UNIX操作系统.由于FreeBSD是Unix的一个分支系统,因此它具有Unix的特性,可以完成Unix可以做的工作.同时,FreeBSD也是一套免费的操作系统,它可以让我们的个人计算机变成先进的工作站,更稳定的提供你所需要的网络服务.接下来,本文将着重介绍如何在FreeBSD平台下架设Web服务器. 一.接入Internet 首先让FreeBSD接入到互联网并设置好代理服务.使用ADSL接入互联网有两种

在MS-DOS 7.10中运行Windows 3.x

MS-DOS 7.10是个目前最好且最实用的DOS版本,功能比MS-DOS 6.x相比有了很大的提高.它的启动盘和完整安装版都可以在网站以及 中国DOS联盟论坛 中下载.MS-DOS 7.10由于全面支持FAT32驱动器.大硬盘.长文件名等,使得经典且著名的Windows 3.x可以有效地使用这些功能.通过在MS-DOS 7.10下运行Windows 3.x,使得Win3.x也可以在FAT32驱动器和大硬盘上很好地运行了.Win3.x与MS-DOS 7.10是全面兼容的. 要在MS-DOS 7.