简述
使用的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
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
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak //备份原文件
sudo gedit /etc/samba/smb.conf //编辑samba配置文件
[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
原文链接:https://www.f2er.com/ubuntu/349568.html