简述

使用的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

[Ubuntu--VM]windows上virtualbox中运行ubuntu并与之共享文件夹的更多相关文章

  1. XCode 5远程调试OS X应用程序

    我正在使用XCode5.0.2在OSX10.9上开发一个应用程序并获得了一个我无法在这台开发机器上重现的错误报告.但是,我有一个10.7虚拟机出现崩溃,所以我想调试那里没有在这个VM中安装XCode.我搜索了有关远程调试的信息,但我没有得到有用的答案.我甚至担心它根本不受支持.但无论如何我还是要问一下.或者,除了执行完整的XCode安装等之外,还有哪些其他选项来调试这样的问题?

  2. cinder swift的区别

    [原]OpenStack入门以及一些资料之2014-4-29阅读1144评论0注:本文内容均来自网络,我只是在此做了一些摘抄和整理的工作,来源均有注明。它拥有自己的文件系统,通过网络文件系统NFS或通用文件系统CIFS对外提供文件访问服务。Raid,不同的raid等级在增加数据可靠性以及增加存储器(群)读写性能间取得平衡。卷组描述区域,和磁盘将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷的VGDA中。

  3. OpenStack中Swift和cinder区别

    swift是objectstorage,将object存储到bucket里,你可以用swift创建container,然后上传文件,例如视频,照片,这些文件会被replication到不同服务器上以保证可靠性,swift可以不依靠虚拟机工作。如果你把这个虚拟机terminate了,这个volume和里边的数据依然还在,你还可以把它接到其他虚拟机上继续使用里边的数据。cinder创建的volume必须被接到虚拟机上才能工作。

  4. Swift属性观察者在协议扩展?

    换句话说,我可以观察协议扩展中的属性的更改吗?这并不意味着它是不可能实现的,但如果我们有这样的话可能会有点令人惊讶.

  5. 解决Swift 3中缺少递归协议约束的问题

    Swift3目前对“递归协议约束”有一个限制.有一个公开的问题here,在here,here和here有类似的讨论.但是,我仍然没有看到应该如何解决这个限制.可能吗?或者我需要开始引入较不严格的协议,直到在Swift中实现?会出现.然而,通过这种方法,我们可以得到正确的类型,而无需做很多专业化.当然,可以添加更多的协议来获得更多的抽象,但同样的解决方案将会适用.由于某些原因/语言缺陷,您必须在View.foo中分配委托时使用显式转换:viewmodel.delegate=selfas?

  6. Android VM不允许我们分配xx字节

    我正在开发一款安卓游戏.当我尝试使用3张图像作为背景时问题就出现了.图像为1280x720px和100kb大.图像真的不是那么大,所以我有点困惑,为什么它们应该导致内存问题.注意:屏幕分辨率为800×400,因此我无法通过因子2调整图像大小,因为它是suggestedonandroiddeveloper注意:我正在使用HTC欲望手机(这里崩溃来了),我也尝试过在三星galaxyS1和三星上运行正常

  7. android – 加载Genymotion库Genymotion目录:/Applications/Genymotion.app/Contents/MacOS尝试初始化引擎初始化引擎:失败

    问题与主题相同我已经安装了virtualBox5.0.0并成功执行了.如果我直接运行genymotion应用程序,它也可以.但是,我点击了eclipse中插入的图标,然后出现错误信息.我在网站上搜索了解决方案.然后,我已经重新定位了genymotion.app的目录,但它仍然无法正常工作.有没有人喜欢我的经历?)在我的环境中,Genymotion本身版本为2.5.2,它的插件版本为1.0.3,可以与Genymotion插件一起使用的最高VirtualBox版本是4.3.28.所以,不幸的是,即使可以使用V

  8. android – 使用Samba / JCIFS问题写入/上传文件(SmbAuthException:拒绝访问)

    BTW我的三星电视是基于Linux并使用samba客户端访问相同的共享文件夹没有问题并播放MP3从那里.由于我的AOS设备通过WiFi访问我的LAN,我还检查了使用笔记本电脑WiFi访问共享文件夹,发现没有问题.添加:我现在正在尝试执行以下行:并获得相同的访问被拒绝.我甚至都不想写文件……解决方法我的天啊!!!解决方案很简单!

  9. 在Android中编译java文件后,注释会发生什么?

    Android编译器如何工作?它是否在编译时删除了Java代码和AndroidXML文件中的注释?

  10. 为什么Android上的每个应用程序都有单独的VM(Dalvik / ART)实例?

    正如标题所述,为什么Android上的每个App都有单独的VM实例?(需要它)如果Android操作系统选择了单个虚拟机运行所有应用程序的模型,会发生什么?解决方法在单个进程中运行多个应用程序不起作用的原因有很多;这是两个:安全区.两个不相互信任的应用程序不应该能够查看彼此的内存,即使它们使用本机代码或反射.失败隔离.如果进程泄漏内存并崩溃,则只会损害自身.

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部