起因

家里的nas的第一个系统就是unraid,整体体验不错,系统蛮符合我的需求的。只是由于它自带的app商店经常需要科学的方法才能连上,体验不太好,才换成现在的truenas。而现在的truenas社区app的docker镜像地址都换成了tccr.io,不能用dockerhub的镜像加速以后连接速度感人。最近在犹豫是否换回unraid,就准备在虚拟机中尝试下unraid现在的app商店情况如何。

由于unraid没有提供系统镜像,只能从U盘启动系统,在虚拟机中使用unraid就比较麻烦,百度搜索只搜到一篇安装失败的博客,参考价值不大,只能自己想办法。

不想看折腾过程的直接看结论即可。

过程

U盘直通

既然unraid需要从U盘启动,就尝试在vm虚拟机的bios中设置U盘启动。然而无效,似乎vmware的bios不能识别unraid的启动U盘。

设置U盘为第一启动顺序

启动失败,转到最后的网络启动

可以看到由于前三项的启动都失败了,bios转到了最后的网络启动,说明此方法无效。

后经过搜索,发现需要将U盘转化为vm的硬盘,才可以通过它启动。方法如下:

  1. 打开虚拟机设置界面,选择添加->硬盘->SATA类型->使用物理磁盘。

image-20220303192754751

  1. 选择U盘对应的设备,使用情况中选择整个磁盘。

    需要注意要选对正确的物理驱动器编号,这个编号应该与系统的磁盘管理中的编号是对应的(不确定,在我的电脑中是这样的),U盘的话一般是最后一个。如果不确定的话,在后面能显示选择的物理盘的容量,可以作为参考。

image-20220303192853117

  1. 确定好磁盘文件的文件名后,U盘的映射就成功了,可以看到多了一块硬盘。

image-20220303193013259

  1. 在bios中将该硬盘放在启动盘的第一位,以确保使用该硬盘启动系统。

image-20220303224327708

至此,应该能够在VM中启动unraid了,但是我遇到了无法通过网络访问unraid的问题。似乎VMware的网络设置对unraid无效,无论是选择桥接还是NAT模式,unraid输出的ip地址都是以169.254开头的地址,均无法连接。通过ifconfig命令查看网络信息,发现没有eth0网卡,仅有br0这一用于docker桥接的网卡,猜测是VMware默认的网卡不被unraid支持。

image-20220303225447126

配置网卡

通过一番搜索,在unraid的官方论坛中(Trying Unraid inside vmware workstation, eth0 problems - Virtualizing Unraid - Unraid),发现可以通过修改VMware虚拟机的vmx文件来改变虚拟机使用的网卡类型,坛友反应使用ethernet0.virtualDev = "vmxnet"这一配置即可。通过记事本或其他文本编辑软件打开虚拟机文件夹中vmx后缀的文件,找到ethernet0.virtualDev这一配置项,默认应该是e1000,将其修改为vmxnet后重启虚拟机,发现问题依旧没有解决。

通过该帖子中的链接,发现该网卡最新版本为vmxnet3,尝试修改为vmxnet3后仍然无效。

image-20220303230240370

另一种启动方式

又经过了一番搜索,找到了ESXI安装unraid的方法Setting up UNRAID on VMWare ESXI! (2020) - YouTube。在unraid的论坛中也找到了类似的帖子Compiled Info: unRAID as Guest on ESXi - Virtualizing Unraid - Unraid。两者都提到了利用PlopKexec来加载和启动unraid。关于什么是PlopKexec,下面贴一段官方介绍。

PlopKexec is a Linux Kernel based boot manager for auto detecting and chain loading Linux distributions on USB and CD/DVD drives.

简而言之,PlopKexec可以自动启动在USB/光驱中的Linux系统。在PlopKexec - Download中下载plopkexec-1.6-bin.tar.gz,解压后得到镜像文件plopkexec.iso。

重新配置虚拟机,移除之前添加的映射了U盘的硬盘(此步可选),在CD/DVD设备中选择plop镜像文件。

如果设备状态中的启动时连接没有勾上,则需要手动勾上。

image-20220303231321861

在bios中将CD-ROM设定为第一启动项,并手动将U盘连接到虚拟机中(如果没有移除U盘映射的硬盘,应该不需要操作)。启动虚拟机,等待plopkexec启动并找到U盘中的unraid系统。

image-20220303232243243

经过一段时间的等待,plopkexec就找到了unraid系统,可以手动按回车或者等待倒计时结束,就会启动unraid系统。此时系统输出的ip地址正确,可以通过该地址连接到unraid的web页面了,ifconfig中也出现了eth0网卡。终于可以愉快地在虚拟机中使用unraid 了。

如果plopkexec没有找到unraid,可以尝试下拔插U盘、重新启动虚拟机、修改虚拟机中USB控制器版本等操作,再行尝试。

总结

下面对unraid的安装步骤做一个总结。

  1. 下载Plopkexec,指定unraid虚拟机的CD驱动器使用该iso镜像文件。
  2. 虚拟机的bios设置CD-ROM为第一启动顺序,利用plopkexec加载unraid的U盘。
  3. 完成。

经过测试,unraid支持默认的e1000网卡,所以上一节中修改网卡类型这一步骤不是必须的,且暂时不知道两种网卡的区别。

由于有了plopkexec,上一节中将U盘转化为磁盘的操作也不是必须的。

参考

  1. Compiled Info: unRAID as Guest on ESXi - Virtualizing Unraid - Unraid,该帖子中还提到了直接使用VMDK制作虚拟机的方式,但是仅提供了6.2.3及以前的版本。
  2. Run unRAID as a VM in VirtualBox within Windows 10 : unRAID (reddit.com)
  3. Trying Unraid inside vmware workstation, eth0 problems - Virtualizing Unraid - Unraid
  4. How can I find/modify the type of my virtual network adapter installed with VMware Workstation? - Super User