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