【win7环境】虚拟机当成一个纯粹的编译器 | Ubuntu 虚拟机挂载 win7 Ext4 NFS 服务器
一、前提条件
宿主机:win7
虚拟机版本:VMware-8.0.2 build-591240 (也可采用其它版本)
虚拟机系统:本次采用系统镜像为 ubuntu-18.04.1-live-server-amd64.iso(不建议使老版本的,因为老版本apt支持不好)。
网络条件:apt 能正常使用。
注意:这一步的作用也有试一下是否能连上apt服务器(某些网络会有限制,如果真的不能连上,就不用继续看下去了)。
命令:sudo apt install gcc
可选条件:因为虚拟机上的显示不能复制出来,所以,可以使用远程连接的方法连接到虚拟机里,比如sesutiryCRT。
1.用secureCRT(绿色版)登陆。
作用:直接在虚拟机窗口登陆时,很难把窗口的命令等复制下来,但有此法就可以完美解决此问题。
下载地址推荐:http://www.pc141.com/html/wangluoruanjian/371.html
用法:填上IP地址和用户名即可轻松连接。
二、Ubuntu 虚拟机挂载 win7 Ext4 NFS 服务器
1.windows电脑上开通ext4-NFS服务器。
(完成这一步之后,虚拟机上的ubuntu实际上就相当于一个编译器而已,这正是我们所需要达到的预期效果。)
之所以在windows上大费周章地建一个ext4分区,是因为编译uboot时要创建软链接,而只有ext4系统,才能创建软链接。
1.建立一个ext4分区。
见附录一:建立一个ext4分区。如果不使用ext4也是可以的,只是不能编译boot,内核等。
2.架设NFS服务器。
1.下载安装 haneWin 下载链接 https://www.hanewin.net/nfs-e.htm 下载时有中文补丁,一起下载下来(补丁的安装方法就是直接复制进C:\Program Files\nfsd\languages)。
2.注册handwin。(新安装有30天的试用期)
haneWIN可用注册码及注册机获得方法如下:
https://download.csdn.net/download/zhuohui307317684/10628226
3.配置 haneWin。
大部分默认设定,需要改动的地方如下:
a.在“输出”菜单栏,修改共享目录:如果直接点击“编辑输出表文件”,也可以直接修改安装目录下export文件。
内容修改:把原来的内容全部注释掉,然后加入一句
F:\nfs -name:nfs -alldirs -exec
(注:要有确保有F:\nfs这个目录)。另外,参数很重要,否则共享出来的文件无法获取+x权限,比如,如果加上-public,则无法生成bin。
全部编辑好后,保存,重启服务,至此,NFS服务器已架好。
(可选)最好也配置一下“重启e服务器时重置节点表”,(这样,重启服务器就会把“挂载设备”清空)如下图:
b.windows 上的防火墙关掉,不然得配置。
2、虚拟机挂载nfs网络盘
上面的步骤,已经建立了一个nfs服务器,接下来的动作,就上让虚拟机里的linux系统挂载这个nfs网络盘。
1在Linux中输入以下命令:
先在ubuntu里输入ipconfig去查询虚拟机的IP网段,再在win7里输入ifconfig查找下,看哪个IP网段与之一致,最好就选该IP(通常是VMware虚拟IP地址)。不过,估计用win7的真实IP应该也是可以的吧。
同时确保 /nfs /mnt/nfs 这两个目录是存在的。
mount -t nfs 192.168.1.101:/nfs /mnt/nfs
(对应配置信息:L:\nfs -name:nfs -alldirs)(改的时候不要改 -name:nfs 而是改L:\nfs 即可, 当win7共享路径变了的时候)
umount /mnt/nfs
错误1:在虚拟机下linux系统挂载台式机下的linux系统出现以下错误:(或类似的提示。)
mount: /mnt/nfs: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount. <type> helper program.
解决方法:
在终端下输入apt install nfs-common解决问题, 如果提示出错,则可在前面先输入 sudo apt upgrade。
错误2:Stale file handle
解决方法:“ 当我们已mount 上的file or directory ,在server上突然被remove or unexport ,就会出现此讯息“。
a.办法很简单,在client上umount掉(强制umount命令:umount -f /mnt/nfs)。但可能会 is busy的错误。
b.这时,可以先登出再登入,或干脆重启,到这里,umount就不会有 is busy 的提示了。(其实,很多情况下,退出nfs目录,就不会提示 is busy 了)。
c.但可能还会担示stale file handle,这时,可以重启nfs服务器,或是把nfs服务器里的全部内容删掉即可。
2.最后验证一下,
从这边创建一个文件夹,看另外一边能不能看到。至此,所有工作完成了。
这时,可在/home/xxx 目录下建一个nfs_server_ip:192.186.1.1.txt 的文件,以方便每次开机时输入命令连接服务器。
附录一:建立一个ext4分区。
之所以在windows上大费周章地建一个ext4分区,是因为编译uboot时要创建软链接,而只有ext4系统,才能创建软链接。
1..空出一块磁盘空间。
a.右键点击计算机→管理。
b.计算机管理→磁盘管理。
c.接下来的步骤自由发挥。本次最终压缩出8G空白空间出来,如图:
2.在windows环境下,使用Mini tool 把空出来的空白空间转化为ext4格式。
到官网 https://www.minitool.com/download-center/ 下载一个免费版本即可。
易错点:磁盘类型设置为"逻辑"。
配置:
最终的样子:
别忘了点击
3.下载安装Ext2Fsd-0.62.exe。(https://download.csdn.net/download/lxsndsc/8848005 )
4.这时,刷新一下Ext2Fsd,就会看到多一个分区。如图:
5.指定盘符,就可以访问了,如下:(其中,无论盘符改为多少,都会顺延原来盘的盘符,这里无论怎么改,一退出后又变回了F盘,这应该是Ext2Fsd的一个BUG吧,记得以前也用过该软件,是可以改成任意盘符的,不过,改与不改,都不影响功能的正常使用。)
附录二、(不推荐的方法)window共享给linux
1. 下载个 Ext2Fsd-0.62.exe 并安装在电脑上,分配固定盘符(盘符设为L吧,linux的头一字母),并开机加载,这样,就跟用NTFS一样了。
- L盘设为共享(标准的window共享设置方法),右击-属性-共享-高级共享,勾选共享此文件夹,然后点击权限,点击添加,将刚刚新建的用户添加进来,然后选中用户,勾选所有权限,确定退出,.在共享文件下随意建一个文件a.txt
- 在linux系统终端中输入
# mkdir /mnt/L
#mount -t cifs -o username=admin,password=admin //192.168.1.2/L /mnt/L
有时可能不能马上看到,那么,先cd .. 出来,再进去就能看到了。
PS: 然而并没有什么卵用,因为能创建软链接,故不能编译uboot,还是用win-nfs-server 的方式吧。
附录三、(不推荐的方法)samba服务器搭建
1 首先确认网络可以相互ping通。
2 终端输入:apt-get install samba
3 先备份 smb.conf 编辑配置,终端输入:
cd /etc/samba/
ls
cp smb.conf smb.conf-201x-xx-xx
4 nano /etc/samba/smb.conf 编辑配置文件
- 找到[homes]下 browseable = no, 把no 改成 yes, 因为只有这样,windows下才能通 过“计算机”看到“homes”共享目录。----至此,您已经能看到samba共享的目录了。
- 当然,以方便调试为目的,所以我们不需要共享homes文件,而是要共享整个根目录。 所以在[homes]这一段下加入一段,不要在[homes]这一段改,否则出错,一定要在下面加,如下:
[all]
comment = /
path = /
read only = no
接着在终端输入:testparm 此命令不但能检查参数是否正确,还能使配置立即生效, 不需要重启。
5 还要创建用户,不然只能看到有共享却无法登录。在终端输入:
smbpasswd -a root 然后就会提示输入密码,其实这个名字可以任意,这里用root是为 了方便记忆,因为我会用最高权限。----到这一步,你就可以登录到samba共享文件里 了。
6 (可以不要这一步)重启samba,终端输入: /etc/init.d/samba restart