[Ubuntu--VM]windows上virtualbox中运行ubuntu并与之共享文件夹

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/suxiang198/article/details/80190718

简述

使用的PC是Windows系统的,以前是通过在PC硬盘分区,并预留其中某个分区不划分给windows,然后再在上面安装linux系统,形成双系统。
这种方式相当于能够拥有windows和linux两台机器,但是一次只能其中一台在线,因此这也有使用上的限制了,因为有时候可能windows和linux协同工作效率会更高。
于是还有更加方便的方式,使用虚拟机VM-Virtual Machine。
虚拟机到现在,随着PC性能越来越强,虚拟机运行性能和真机其实差别已经不大了。许多情况下,使用windows PC的用户会同时跑一个linux虚拟机,而使用mac的用户一般会跑windows和linux的虚拟机。

虚拟机选择

目前最为常用的,当属VMware和Virtualbox了,这两个都用过,大体步骤和界面其实差别不大的,只是一些细节使用和配置上会有些差异。两者都是很成熟的产品,最大的差别应当是,VMware是付费软件,而Virtualbox是免费的。
虚拟机中安装系统,和真机安装系统差不太多,只是安装时是从虚拟机中进入,而非boot模式下进入而已。
目前因为免费,所以选择使用Virtualbox

共享文件夹

在windows系统里面安装了Ubuntu16.04,因为有些工具可能是在Linux环境下使用更好(windows下也有cgwin, mgwin,不过有些还是无法使用的),而有些工具则只有windows版本,特别是在嵌入式开发时这样的情况会更多。而在真机和虚拟机之间,方便的数据传输与共享,是很多情况下都需要的,比如可以使用samba,或者是其他的方式。不过Virtualbox有更方便的集成的功能–共享文件夹(VMware也同样有的)。
在创建好虚拟机后,可以在“设置”里面增加新的共享文件夹,具体如下:
这里写图片描述

然后开启虚拟机,并可以在/media/下面看到sf_shared_folder目录,这个就是对应windows下的shared_folder。

最后,最好还加上一步,因为windows下去访问这个shared_folder是没有问题的,但是在ubuntu下非root用户去访问sf_shared_folder是没有权限的,类似的提示如下图所示:
这里写图片描述

此时需要将该非root用户添加到vboxsf用户组(有访问sf_shared_folder的权限)中:

sudo adduser username vboxsf

最后,重启下ubuntu,使修改生效,然后就可以访问sf_shared_folder了。

不过使用共享文件夹是还有一些限制和问题的:
VirtualBox的共享文件夹里可能不支持symbolic links,就是在某些项目编译时会因此出错。 特别是Windows系统里面用VirtualBox运行linux。

Samba的方式共享

首先要将Virtualbox里面的系统的网络设置进行一些配置,关于不同网络设置选项的说明,可以参考 https://blog.csdn.net/qq_24761901/article/details/53104424 这篇文章的解释。我是选择下面的Host only方式的,因为更加合理些:

第一种为“桥接网卡”:

这里写图片描述
然后对应的“界面名称”要看当前电脑使用什么方式上网,比如上图是通过wifi联网的,所以选择wireless网卡。
然后虚拟机就能以“桥接网卡”方式联网了。

第二种为“Host only”:

这种方式网卡1仍然保持默认配置,NAT方式
这里写图片描述
网卡2需要配置为Host only的方式:
这里写图片描述

在配置完上面的虚拟机的网络后,接着需要将虚拟机的IP地址设定为静态IP(不然samba server的IP不断变动,windows的访问会带来麻烦),启动虚拟机,并用如下命令查看IP地址:

ifconfig

看到我的虚拟机网卡的IP地址
这里写图片描述
而且配置的Host only的网卡为enp0s8(根据每人系统差异而名字可能不同)。Host only默认网段是192.168.56.0,因此我们的静态IP设置要在同一个网段下。使用如下命令:

sudo gedit /etc/network/interfaces

在interfaces的末尾添加如下内容:

auto enp0s8
iface enp0s8 inet static
address 192.168.56.106
netmask 255.255.255.0
network 192.168.56.0

然后将虚拟机的Linux系统重启,使设置生效,重启后可以ifconfig再看下,IP地址已经变为设置的192.168.56.106了。

安装Samba

使用如下命令安装:

sudo apt-get install samba smbclient

然后要修改Samba配置文件

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak     //备份原文件
sudo gedit /etc/samba/smb.conf                          //编辑samba配置文件

在smb.conf文件末尾添加如下内容:

[share]
   comment = Shared Folder with username and password
  path = /home/myusrname                              //想要共享的ubuntu目录
  public = yes
  writable = yes
  read only = no
  valid users = myusrname                             //windows访问时的用户名
  force directory mode = 777
  force create mode = 777
  force security mode = 777
  force directory security mode = 777
  hide dot file = no
  create mask = 0777
  directory mask = 0777
  delete readonly = yes
  guest ok = yes
  available = yes
  browseable = yes

另外找到该文件的[global]部分,增加如下内容,防止编码问题:

  workgroup = WORKGROUP
 display charset = UTF-8
 unix charset = UTF-8
 dos charset = cp936

接着为windows访问samba的用户名设置密码

sudo smbpasswd -a myusrname

然后可以测试下/etc/samba/smb.conf是否设置成功,成功的话在运行如下命令时会看到[share]那段配置会出现在终端屏幕上:

sudo testparm

重启Samba,使以上设置生效

sudo /etc/init.d/smbd restart

Windows上使用samba服务

回到Windows主机系统,在cmd中使用如下命令:

arp -a

可以找到IP地址为192.168.56.106的虚拟机的连接,然后可以ping它一下,正常情况是可以ping通的:

ping 192.168.56.106

此时确认可以ping通虚拟机之后,在windows的文件浏览中,输入“\\192.168.56.106”,就可以看到Ubuntu共享的目录啦!
如果点击进去,就需要输入前面配置的myusrname及其对应的密码,然后就可以和Ubuntu之间共享文件夹了。

为方便后续操作,可以将\\192.168.56.106映射为网络驱动器。

除了文中提到的一些参考文章,还有一篇也非常好:http://www.52ij.com/jishu/569620.html

猜你喜欢

转载自blog.csdn.net/suxiang198/article/details/80190718