Ubuntu16.04中搭建TFTP、 NFS 服务器 嵌入式开发环境搭建

每次安装ubuntu系统之后,都要百度一下TFTP、FTP、NFS服务的安装过程,太麻烦了,这次就详细记录一下,以后省的在去找,看自己的就好了。

Ubuntu 16.04中搭建TFTP服务器

1、安装服务

sudo apt-get install xinetd
sudo apt-get install tftp tftpd

2、配置文件

在/etc/xinetd.d/下建立配置文件tftp

sudo vi /etc/xinetd.d/tftp
在文件中添加一下内容:

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

这里写图片描述
注意文件中内容的对齐
server_args = -s /tftpboot
表示TFTP的服务器目录,我这里是直接在“/”根目录下创建tftpboot目录
创建服务器文件存放的目录:

  • sudo mkdir /tftpboot –创建/tftpboot目录
  • sudo chmod 777 /tftpboot -R –设置权限为777

配置/etc/xinetd.conf

配置相关服务文件。进入根目录下的 etc 文件夹(cd /etc/),首先看目录中有没有一个xinetd.conf 文件,如果没有则新建一个,有的话查看内容,看是否与下面的一致,若不一致则
修改,内容如下:

# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/

defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
}

includedir /etc/xinetd.d

这里写图片描述

配置/etc/default/tftpd-hpa

sudo vi /etc/default/tftpd-hpa
文件添加以下内容

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot" 
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s" 

TFTP_DIRECTORY=”/tftpboot” # 这里是你的tftpd-hpa的服务目录,与之前TFTP创建的服务器目录一致
TFTP_OPTIONS=”-l -c -s” # 这里是选项,-c是可以上传文件的参数,-s是指定tftpd-hpa服务目录,上面已经指定
这里写图片描述

重启服务

重新启动服务。sudo service tftpd-hpa restart,这也是我经常疏忽的一步,当配置好 tftp 的配置文件后,需要重新启动一下 xinetd,在终端中输入 sudo /etc/init.d/xinetd reload,重新加载一下进程,再输入 sudo /etc/init.d/xinetd restart,重启服务。每次修改完配置文件后,都需要重新启动一下服务。执行次序不能变:
若使用失败,则需要重启计算机
sudo service tftpd-hpa restart
sudo /etc/init.d/xinetd reload
sudo /etc/init.d/xinetd restart

嵌入式端获取服务端文件

tftp 192.168.1.101 -g -l media_record_TX2

Ubuntu 16.04中搭建NFS服务器

安装服务

sudo apt-get install nfs-kernel-server
sudo apt-get install nfs-common

服务器配置

默认情况下,NFS 服务器上定义了某个共享目录,则该目录及其子目录下的所有文件都可被访问。
出于对安全的考虑,客户端任何需要 超级用户 (即 root 用户,UID=0 & GID=0)权限的文件操作都默认映射到 UID=65534 和 GID=65534 的用户,即 Ubuntu 系统中的 nobody:nogroup。例如客户端使用 root 权限在挂载的共享目录中创建文件时,该文件的 属主 和 属组 自动变为 nobody:nogroup ,而非 root:root

sudo vi /etc/exports
这里写图片描述

配置文件参数说明

选项 描述
ro 只读权限
rw 读写权限(默认)
root_squash 将 UID 0 和 GID 0 映射到 anonuid 和 anongid(即 Ubuntu 系统中的 nobody 和 nogroup)
no_root_squash 允许需要 root 权限的文件操作,有安全风险
all_squash 将所有的 UID 和 GID 映射到它们的匿名形式,主要针对不信任的主机
insecure 允许通过任意端口的远程访问
async 服务器可以在写入硬盘之前响应客户端的写入请求

重新启动nfs服务

sudo service nfs-kernel-server restart
测试:
showmount -e 192.168.1.101
这里写图片描述
sudo mount -t nfs 192.168.1.101:/home/luke/recorder /mnt/
这里写图片描述

使用linux嵌入式开发板访问时,会出现如下问题:

svc: failed to register lockdv1 RPC service (errno 111).
mount: mounting 192.168.0.1:/home/hellolinux/rootfs on /mnt/nfs failed: Connection refused
mount.nfs: an incorrect mount option was specified
因此不能直接使用mount的指令,需要添加一些东西,如下所示:

mount -t nfs -o nolock,nfsvers=3,vers=3 192.168.1.101:/tftpboot /opt

说明:mount nfs时,默认选项包括文件锁,依赖于portmap提供的动态端口分配功能,因此需要解锁,因此一般直接在指令中直接加上-o nolock

关于NFS的详细说明推荐博客:http://server.51cto.com/sManage-150923.htm

好了,大功告成,就这么多吧,以后不用每次都去百度了。

猜你喜欢

转载自blog.csdn.net/zhaoyun_zzz/article/details/82659337
今日推荐