搭建samba nfs tftp

samba

概述

samba则是Linux和Windows之间的文件传输工具。samba是模仿Windows网上邻居的SMB的通讯协议,将Linux操作系统“假装成”Windows操作系统,通过网上邻居的方式来进行文件传输的。

使用场景

也就是可以通过虚拟机IP地址访问到samba目录,然后映射成Windows上一个盘符。

安装,创建存放目录

sudo apt-get install samba
sudo mkdir /home/samba

安装失败

[sudo] flynnsin 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 samba : 依赖: python-samba 但是它将不会被安装
         依赖: samba-common-bin (= 2:4.7.6+dfsg~ubuntu-0ubuntu2) 但是它将不会被安装
         依赖: samba-libs (= 2:4.7.6+dfsg~ubuntu-0ubuntu2) 但是 2:4.7.6+dfsg~ubuntu-0ubuntu2.28 正要被安装
         推荐: samba-dsdb-modules 但是它将不会被安装
         推荐: samba-vfs-modules 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

解决

sudo add-apt-repository ppa:linux-schools/samba-latest

sudo add-apt-repository ppa:linux-schools/samba-latest 命令用于添加 Ubuntu 系统中的第三方软件源,也称为 PPA(Personal Package Archives)。

该命令将在 /etc/apt/sources.list.d/ 目录下创建一个新的 .list 文件,并将 PPA 的 URL 添加到该文件中。然后,运行 sudo apt-get update 命令以更新软件包列表,并从该 PPA 中获取软件包。

在这个例子中,ppa:linux-schools/samba-latest 是指 PPA 的名称和 URL。该 PPA 包含了最新版本的 Samba 软件包。通过添加该 PPA,您可以获取 Samba 的最新版本并在 Ubuntu 上安装。

修改配置文件

sudo gedit /etc/samba/smb.conf

在最后添加这些

[ubuntu samba]
    comment = arm ubuntu samba dir
    path = /home/samba
    available = yes
    browseable = yes
    public = yes
    writable = yes
    create mask = 0755
    security = share
    force user = root
    arm force group = root

重启nfs服务,查看服务是否开启

sudo service samba restart

在这里插入图片描述

使用示例

在这里插入图片描述
在这里插入图片描述

nfs

概述

网络文件系统,英文Network File System(NFS),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。NFS是基于UDP/IP协议的应用。

使用场景

主要使用nfs挂载ubuntu服务端目录方便文件传输和程序调试,也就是ubuntu上写代码,板子挂载在ubuntu上进行调试,还有就是挂载rootfs。

安装,创建存放目录

sudo apt-get install nfs-kernel-server rpcbind

参考,注意flynnsinu为用户名

/home/flynnsinu/linux/nfs

修改配置文件

sudo vi /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

/home/flynnsinu/linux/nfs *(rw,sync,no_root_squash)

重启nfs服务,查看服务是否开启

sudo /etc/init.d/nfs-kernel-server restart

错误

[....] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.serviceJob for nfs-server.service canceled.  failed!

sudo systemctl status nfs-kernel-server.service  看下日志,然后根据错误日志改改看

error starting threads: errno 12 (Cannot allocate memory)

netstat -a | grep nfs

在这里插入图片描述

使用示例

mkdir get
mount -t nfs -o nolock,nfsvers=3 192.168.129.154:/home/flynnsinu/linux/nfs get/

将ubuntu(192.168.129.154)共享目录/home/flynnsinu/linux/nfs挂载到开发板的get目录下,这样就可以在开发板get目录下看到ubutun主机/home/flynnsinu/linux/nfs下文件。

在这里插入图片描述
前提:

  1. 这里我使用的是笔记本wifi和以太网进行桥接,按ctrl键选择2个进行桥接,生成网桥,我的到这里就可以了,那些ip地址,网关什么的都自动配好了。
    在这里插入图片描述

  2. 然后就是开发板与主机进行ping命令操作,这里如果主机能ping通开发板,而开发板无法ping通主机,那多半是防火墙没关。

  3. 然后就是虚拟机,开始虚拟机采用nat模式开发板好像ping不通,这里采用桥接模式即可,然后配置成静态ip,当然你也可以不配。
    nat模式:
    在这里插入图片描述
    桥接模式:
    在这里插入图片描述

  4. 测试验证,到这就OK了。

  5. 卸载 NFS 目录umount get,注意卸载时所在路径,

补充:

桥接:Bridged Networking--桥接网络(模式):手动配置IP、子网掩码、网关,地址需要和宿主机同一网段,相当于局域网内新建了一台主机。

NAT:Netword Address Translation--网络地址转换(模式):借助宿主机来上网,没桥接那么麻烦,只用配置DNS即可。缺点:扎根于宿主机,不能和局域网内其它真实的主机进行通信

差异:

1.桥接配置稍麻烦,但是应用广。
2.NAT配置简单,但是只能和宿主机通信,应用狭窄。

tftp

概述

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

使用场景

主要用户uboot启动后,使用tftp下载kernel和文件系统到emmc,方便kernel和rootfs调试。

安装,创建存放目录

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
mkdir /home/flynnsinu/linux/tftpboot
chmod 777 /home/flynnsinu/linux/tftpboot

注意!我们要给 tftpboot 文件夹权限,否则的话 uboot 不能从
tftpboot 文件夹里面下载文件。

修改配置文件

新建文件/etc/xinetd.d/tftp

server tftp
{
	socket_type = dgram
	protocol = udp
	wait = yes
	user = root
	server = /usr/sbin/in.tftpd
	server_args = -s /home/flynnsinu/linux/tftpboot/ 9 disable = no
	per_source = 11
	cps = 100 2
	flags = IPv4
}

修改/etc/default/tftpd-hpa 文件,

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/flynnsin/linux/tftpboot"
TFTP_ADDRESS=":69" 
TFTP_OPTIONS="-l -c -s"

重启 tftp 服务器,查看服务是否开启

sudo service tftpd-hpa restart

在这里插入图片描述

使用示例

测试:
在这里插入图片描述

应用:
将 zImage 镜像文件拷贝到 tftpboot 文件夹中,并且给予 zImage 相应的权限,命令如下:

cp zImage /home/flynnsinu/linux/tftpboot/
cd /home/flynnsinu/linux/tftpboot/
chmod 777 zImage

uboot 中的 tftp 命令格式如下:

tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
  • loadAddress 是文件在 DRAM 中 的存 放 地 址 ,
  • [[hostIPaddr:]bootfilename]是要从 Ubuntu 中下载的文件。

和 nfs 命 令 格式 的区别在于,tftp 命令不需要输入文件在 Ubuntu 中的完整路径,只需要输入文件名即可。

将zImage 文件下载到开发板 DRAM 的 0X80800000 地址处
tftp 80800000 zImage

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值