搭建Linux嵌入式开发环境

时间:2021-08-12 19:52:02

处理器 :ARM S3C2410

Linuc版本:Debian 4.0

一、搭建NFS服务

1、安装 服务器端安装

在Debian系统下安装NFS是相当简单的,在NFS服务器上执行下面的命令即 可

搭建Linux嵌入式开发环境 # aptitude install  nfs - common nfs - kernel - server portmap

 在客户端则需要安装:

搭建Linux嵌入式开发环境# aptitude install  nfs - common portmap

2、服务的启动停止与重启

 #  /etc/init.d/nfs-kernel-server start
# /etc/init.d/nfs-kernel-server stop
 
   
# /etc/init.d/nfs-kernel-server restart

3、服务器端配置

创建共享目录

搭建Linux嵌入式开发环境# mkdir  / home / share
搭建Linux嵌入式开发环境# chown nobody.nogroup 
/ home / share

创建或修改/etc/exports文件

这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:

        [共享的目录] [主机名或IP(参数,参数)] 

其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。

 

当主机名或IP地址为空时,则代表共享给任意客户机提供服务。

当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:

        [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
 下面是一些NFS共享的常用参数: 

 

 

      ro                      只读访问 
        rw                      读写访问 
        sync                    所有数据在请求时写入共享 
        async                   NFS在写入数据前可以相应请求 
        secure                  NFS通过1024以下的安全TCP/IP端口发送 
        insecure                NFS通过1024以上的端口发送 
        wdelay                  如果多个用户要写入NFS目录,则归组写入(默认) 
        no_wdelay               如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 
        hide                    在NFS共享目录中不共享其子目录 
        no_hide                 共享NFS目录的子目录 
        subtree_check           如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) 
        no_subtree_check        和上面相对,不检查父目录权限 
        all_squash              共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 
        no_all_squash           保留共享文件的UID和GID(默认) 
        root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认) 
        no_root_squas           root用户具有根目录的完全管理访问权限 
        anonuid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的UID 
        anongid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的GID 

 

配置文件/etc/exports内容如下:

搭建Linux嵌入式开发环境 $ cat  / etc / exports
搭建Linux嵌入式开发环境
搭建Linux嵌入式开发环境 
/ home / share  192.168 . 102.15 (rw,sync)  * (ro)

配置说明: 对192.168.102.15赋予读写权限,其他机器仅有只读权限。

重启NFS服务
搭建Linux嵌入式开发环境   #  / etc / init.d / nfs - kernel - server restart

在客户机上查看NFS的资源共享情况

搭建Linux嵌入式开发环境 # showmount  - 192.168 . 102.47
搭建Linux嵌入式开发环境
搭建Linux嵌入式开发环境 Export list 
for   192.168 . 102.47 : / home / share (everyone)

使用mount命令即可挂栽共享资源

在客户机 192.168.102.15 上加载共享资源

二、搭建tftp服务器 

1、安装

服务器端

搭建Linux嵌入式开发环境#aptitude install tftpd

安装完后,/etc/inetd.conf 档会有一行是tftpdinvoke 命令。最后一个argumenttftp export 目录。debian default /boot,一般是用/tftpboot,所以要修改一下

搭建Linux嵌入式开发环境tftp   dgram  udp   wait   nobody    / usr / sbin / tcpd    / usr / sbin / in .tftpd    / tftpboot

修改后要reoad一下inetd,即执行

搭建Linux嵌入式开发环境 / etc / init.d / inetd reload

客户端安装

搭建Linux嵌入式开发环境 #aptitude install tftp

测试

将一些file放到/tftpboot测试传送

搭建Linux嵌入式开发环境$tftp  10.3 . 7 .xxx
搭建Linux嵌入式开发环境
搭建Linux嵌入式开发环境 tftp
> get  xxxxxxx

 

 

tftp 是一个很简单的file transfer protocol,他使用udp,并且没有很多handshaking,authorization的机制,Client 所需要的code比较检单,所以常常用在许多resource limited 的embedded system 中,或是用在开机的时候。 
因为tftp 不是一个常常会使用的服务,所以以standalone dameon的方式执行会一直站住内存,所以建议使用inetd的方式来安装。
搭建Linux嵌入式开发环境# mount  192.168 . 102.47 : / home / share  / mnt
搭建Linux嵌入式开发环境# cd 
/ mnt
搭建Linux嵌入式开发环境# echo 
' 12345 ' >   123
搭建Linux嵌入式开发环境

 

即可发现对服务器共享目录可写

        # umount /mnt

在客户机 192.168.102.61 上加载共享资源

 

        # mount 192.168.102.47:/home/share /mnt

        # cd /mnt

        # ls
        123

        # touch 321

        touch: cannot touch `321': Permission denied

        # echo '123455' >123

        -bash: 123: Permission denied

 

即可发现对服务器共享目录只有读取权限,

这与我们在服务器端的权限设置是相符的。

是不是我们每次修改了配置文件都需要重启nfs服务呢? 这个时候我们就可以用exportfs命令重新扫描/etc/exports文件,来使改动立刻生效。

比如:

 

        # exportfs -au 卸载所有共享目录

        # exportfs -rv 重新共享所有目录并输出详细信息

 

exportfs 命令有软件包 nfs-kernel-server 提供,详细的 exportfs 命令说明请查看:

 

            man exportfs