在 FreeBSD bhyve 下运行 Windows(4)

#!/bin/sh
 
# Remaster new ISO
 
folder=win2k8
iso=win2k8.iso
 
mkisofs \
    -b boot/etfsboot.com -no-emul-boot -c BOOT.CAT \
    -iso-level 4 -J -l -D \
    -N -joliet-long \
    -relaxed-filenames -v \
    -V "Custom" -udf \
    -boot-info-table -eltorito-alt-boot -eltorito-platform 0xEF \
    -eltorito-boot efi/microsoft/boot/efisys_noprompt.bin \
    -no-emul-boot \
    -o ${iso} ${folder}

iohyve 的安装和准备

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

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

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

$ git clone https://github.com/pr1ntf/iohyve.git Cloning into 'iohyve'... remote: Counting objects: 904, done. remote: Compressing objects: 100% (3/3), done. remote: Total 904 (delta 0), reused 0 (delta 0), pack-reused 901 Receiving objects: 100% (904/904), 231.14 KiB | 0 bytes/s, done. Resolving deltas: 100% (505/505), done. Checking connectivity... done.$ cd iohyve/$ sudo make install clean Password: gzip -cn iohyve.8 > iohyve.8.gz mkdir -p /usr/local/sbin install -c -m 555 /usr/home/pr1ntf/iohyve/iohyve /usr/local/sbin/ install -c /usr/home/pr1ntf/iohyve/rc.d/* /usr/local/etc/rc.d/ install -c iohyve.8.gz /usr/local/man/man8/ rm -f iohyve.8.gz iohyve.8.cat.gz$ cd ~$ iohyve version 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 文件中添加了下面的几行代码。

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

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

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

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

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

$ ls BHYVE_UEFI_20151002.fd  Win2k8R2.iso            remaster.sh             win2k8.iso README.txt              extract.sh              virtio-win-0.1-94.iso   yabs.sh Win2k8-AutoUnattend.xml null.iso                win2k8$ sudo iohyve cpiso win2k8.iso Password: Copying win2k8.iso from win2k8.iso...$ sudo iohyve cpiso null.iso Copying null.iso from null.iso...$ sudo iohyve cpfw BHYVE_UEFI_20151002.fd Copying BHYVE_UEFI_20151002.fd from BHYVE_UEFI_20151002.fd...$ iohyve isolist Listing ISO's... null.iso win2k8.iso$ iohyve fwlist Listing Firmware... BHYVE_UEFI_20151002.fd Windows 客户机的创建和准备

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

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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15617.html