[Ubuntu--VM]windows上virtualbox中運行ubuntu並與之共享文件夾

簡述

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章