买了一块480GB的SSD移动硬盘,实际USB3.0测速连续读写速度都能到400MB/s,维基百科说基础款的USB3.0实际最高速度就是差不多400MB/s1。于是准备在上面装一个Linux,用来应急(其实就是闲的折腾)。

用VirtualBox在它上面安装系统,本来打算直接USB3.0映射过去,结果提示没有扩展包,虚拟机还没系统呢哪来的扩展包啊?2因此打算做一个指向这块物理硬盘的虚拟磁盘。这样还有一个好处,就是在Windows上可以直接虚拟机打开硬盘上的其他系统;另外其他系统也可以直接虚拟机进当前的Windows。

方法

主要来自这里

在linux下是

VBoxManage internalcommands createrawvmdk -filename ~/<filename>.vmdk -rawdisk /dev/sda

在Windows下是

VBoxManage internalcommands createrawvmdk -filename <filename>.vmdk -rawdisk \\.\PhysicalDrive0

其中VBoxManage在VirtualBox根目录的一个工具(人家VMware能直接图形化设置)。很可能遇到的一个问题是VERR_ACCESS_DENIED没有权限,需要sudo或者管理员打开cmd,这样创建以后就可以直接把<filename>.vmdk当成一个普通的虚拟磁盘用了,但是添加的时候Virtualbox也要有管理员权限。

确保磁盘是对的

VBoxManage internalcommands listpartitions -rawdisk /dev/sda
VBoxManage internalcommands listpartitions -rawdisk \\.\PhysicalDrive0

上面两个命令是查看磁盘分区情况的,可以用来确保磁盘是对的。

使用分区而不是全部磁盘

在上面的创建虚拟磁盘命令后面加上 -partitions 1,5就行了,里面的1,5是选择分区。

在后面再添加-mbr <name>.mbr可以把mbr修改放到镜像内部。3

安装Linux

按照上面的方法来了,然后开始安装Linux,fdisk /dev/sda/,修改分区表,w,报错!

然后搜索许久,搜到了一个号称安装好了的帖子4,但是除了“我装好了”就没下文了。然后发现之前用USB3.0失败是因为宿主机没装扩展包,不是我之前想的虚拟机没装扩展包。。。因此直接给虚拟机加一个USB3.0连接到移动硬盘就行了~

  1. The“SuperSpeed”bus provides for a transfer mode at a nominal rate of 5.0 Gbit/s, in addition to the three existing transfer modes. Accounting for the encoding overhead, the raw data throughput is 4 Gbit/s, and the specification considers it reasonable to achieve 3.2 Gbit/s (400 MB/s) or more in practice. 

  2. 实际上我理解错了,是宿主机要装扩展包,直接去官网下载 VirtualBox 6.0.6 Oracle VM VirtualBox Extension Pack 就行了 

  3. https://www.virtualbox.org/manual/ch09.html#rawdisk 

  4. https://ubuntuforums.org/showthread.php?t=1782976