当在 Linux 下和虚拟机共享文件时,我发现一个问题,并不是所有的虚拟机都支持(或很好的支持)在主机和虚拟机操作系统之间共享文件,这样在需要文件共享时候就会遇到很多问题。不过因为几乎所有操作系统都支持读写软盘和光盘,就可以使用一种比较迂回的办法解决这个问题:建立软盘或者光盘镜像文件,虚拟机使用读写软/光驱的方式打开它,Linux 主机直接挂载它,这样就可以将这个文件作为共享目录使用。不过当虚拟机的操作系统足够强大的时候,完全可以使用虚拟网络传输。
这样就涉及到如何建立一个数据软/光盘镜像。我们平常所挂载的光盘镜像,基本是用于只读的目的,而且是别人建立好的。如何使用 Linux 命令来建立一个数据软/光盘镜像呢?
建立光盘镜像很简单,使用下面命令即可:
genisoimage -o data.iso /data/yourdir/*
这就能直接将 /data/yourdir/ 下的所有文件建立成一个光盘镜像。但是使用光盘镜像唯一一个不足就是,它是只读的,所以文件的共享只能从一个方向进行(如果虚拟机上的系统不支持烧录CD的话 ^_^)。
建立软盘镜像:
前面在 Writing x86 PC Bootloader With Free Software 一文中提到了如何制作启动软盘镜像,但是这个软盘镜像仅仅能用来启动电脑,而不能用来存储数据。因为它没有被格式化,所以不能挂载,因此最主要的任务是要将它格式化。
首先,生成空白软盘镜像:
dd if=/dev/zero of=data.img bs=512 count=2880
使用 losetup 命令,将 data.img 作为 loop device 使用:
sudo losetup /dev/loop0 data.img
然后,格式化这个 loop device:
sudo mkfs.msdos /dev/loop0
检查文件系统:
sudo fsck.msdos /dev/loop0
删除 loop device:
sudo losetup -d /dev/loop0
这时候,data.img 已经格式化完成,可以作为一个软盘镜像使用,比如用 sudo mount -o loop data.img mountdir/ 挂载到 mountdir 上。设置一定的权限之后,使用虚拟机打开这个软盘镜像,就可以把这个镜像当作共享目录来使用,虽然很可怜的是这个文件只有 1.44 M 大小,但在某些时候已经能满足需要了。
赞技术贴 一般只在演示病毒的时候才会想到虚拟机 荒废啊
不错。genisoimage是好东西啊,可惜不是自带的,不知是哪里的?
P.S. 最后那个删除怎么没有rm?
[Comment ID #133372 Will Be Quoted Here]
那个原来叫 mkisofs
最后那个嘛,我少打了点儿东西,补上补上,嘿嘿真不好意思
mkisofs找到,谢!