1 目的及背景
web开发。代码在win7上开发,部署在虚拟机中的Linux中。
想要的效果是,在win7上进行任何代码修改,都会立即同步到linux中。
解决方案: 将win7上的开发目录挂载到linux中。
实验环境: 主机,win7
虚拟机 virtualbox
linux发行版:centos 6.6
注意事项:
如果发现 3 中的设置未生效,请重启系统再观察。
2 理想的步骤
如果此步骤中途失败,请参照 “照进现实”
2.1 在win7创建用于共享的目录,假设这个目录路径是d:/share
为什么要单独将这个作为一个步骤呢?随便找个目录测试一下不行么?
原因: windows和linux对文件名,目录名的命名的讲究很不一样。而且,我们的linux一般都不支持中文文件名,
所以,最好还是创建一个新的目录,用linux的命名方式做几个测试的文件。关于linux文件命名,请自行搜索
相关资料。
2.2 virtualbox上添加共享
将d:/share添加为共享目录,可以给这个目录设置一个别名,这个别名可以作为之后挂载时候的名字,如下,设置为
globalshare
2.3 在linux上挂载共享目录
你信还是不信,我反正是信了。就是这么简单。
mount -t vboxsf globalshare /home/xxx
后面的路径就是挂载位置,cd到这个目录,就能看到win7上的文件。
3 照进现实
当以上步骤报错时,请参考以下的解决方案
3.1 执行2.3,得到错误 vboxsf unknown filesystem
解决方案: 安装linuxAdditions
virtualbox menu bar->devices->Insert Guest Additions Image CD
如下图:
镜像被安装到了虚拟cdrom,然后到linux中挂载这个cdrom
mount -t auto cdrom /mnt
cd /mnt
sh ./VBoxLinuxAdditions.run
3.2 sh ./VBoxLinuxAdditions.run 出现错误,类似sepcify kernel 的错误
解决方案:
依次执行以下命令:
yum update kernal
yum install gcc kernel-devel kernel-headers
reboot
4 更好的体验
以上可以实现win7<–>linux虚拟机的文件共享问题,但是存在一些问题,比如,每次开机都必须执行mount命令挂载共享目录,挂载目录的用户和用户组没有指定等等。
下面是解决方案
4.1 指定挂载属性
vi /etc/fstab
在最下面加入一行,
[共享目录名] [挂载点] [文件类型] [属性] [dump] [pass]
例如:
globalshare /mnt/share vboxsf auto,uid=1000,git=48 0 0
这样,可以执行简单的mount命令了
mount globalshare 就可以将globalshare挂载到预先设定的位置了,而且,指定了挂载目录所属的用户和组
关于用户和组,请查看/etc/passwd查看用户和组信息
更多详细请参考
http://blog.csdn.net/richerg85/article/details/17917129
4.2 开机挂载
请在修改任何配置文件时备份原有文件。
vi /etc/rc.d/rc.local
在最下面加入mount命令,如
mount globalshare
当然,前提是4.1已经设置完好,否则,请执行完整的mount命令
建议定义一个开机执行的脚本,将上面的命令放进去,然后再rc.local中加入这个脚本的执行命令
sh startup.sh