系统移植概述及环境搭建

1. 搭建嵌入式Linux开发环境的主要工作

  1. 准备开发主机、目标机(开发板)以及二者的连接介质
  2. 准备目标机代码
  3. 安装交叉工具链
  4. 开发主机上安装的软件(为方便调试)
  5. 终端软件(putty、minicom)
  6. tftp服务
  7. nfs服务
  8. 目标机安装(u-boot烧写调试)SD卡方式 Fastboot方式 (成功后,板子有串口信息输出)
  9. 主机和目标机能联通 网络自动 tftp 加载内核,并挂载nfs rootfs 启动

2. PuTTY工具的使用

PuTTY和超级终端作用相类似,都是一种与开发板交互的软件。
首先安装PuTTY工具,(工具已上传网盘)。打开后进行设置即可使用

打开后的状态:

3. TFTP服务

3.1 TFTP服务概述

tftp 是用来下载远程文件的最简单网络协议,它基于udp协议而实现。嵌入式 linux 的 tftp 开发环境包括两个方面:

  1. linux 开发主机端的 tftp-server 支持,
  2. 嵌入式目标系统的 tftp-client 支持。

tftp 的使用条件是:

  1. 需要网络连接
  2. 主机端需要安装 tftp 服务器软件
  3. 目标机需要实现tftp客户端

tftp 的优点:

  1. 传输速度快
  2. 可以将编译好的内核下载到目标机,提高开发效率

3.2 TFTP服务器安装

ubuntu18.04 安装tftpd服务器
0. 查看服务器是否已安装了tftp服务,如已安装则跳过步骤1.2

dpkg -s tftpd-hpa
  1. 安装命令:
sudo  apt-get install tftpd-hpa tftp-hpa
  1. tftpd配置:
sudo vim /etc/default/tftpd-hpa
  1. 配置选项:
TFTP_USERNAME="tftp"
 TFTP_USERNAME="tftp"
 TFTP_DIRECTORY="/home/xxx/tftpboot"   #这里需要自己修改 跟下面创建的目录保持一致即可
 TFTP_ADDRESS="0.0.0.0:69"  #如果对外网开放,记得开放端口
 TFTP_OPTIONS="-l -c -s"
  1. 创建下载目录
mkdir /home/xxx/tftpboot
  1. 修改下载目录的权限
sudo chmod 777 /home/xxx/tftpboot
  1. 重新启动tdtp-hpa 网络服务:
sudo service tftpd-hpa restart
  1. 本机自环测试
tftp   127.0.0.1
tftp>get  uImage        //下载文件
tftp>put  uImage        //上传文件
tftp>q
ls           //有看到获取的文件,表示该tftp服务是OK的

测试结果展示:

  1. 其他测试方法
    在ubuntu 系统使用 如下命令进行查看
netstat -ua         //显示结果:其中tftp 说明启动成功

4. NFS服务

1. NFS介绍

NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它最早是由 Sun 公司发展出来的,也是 FreeBSD 支持的文件系统中的一个,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机、不同的操作系统可以共享存储的服务。

NFS可作为企业内部容器云的存储选项之一,实现容器的永久存储。

2. NFS 安装步骤

  1. 查看服务器是否已安装了NFS服务,如已安装则跳过步骤1
dpkg -s nfs-kernel-server
  1. 服务端
apt install nfs-kernel-server

客户端

apt install nfs-common
  1. 修改 nfs 服务器的配置文件 /etc/exports,并在文件末尾添加下面的代码:
 vim /etc/exports 

 /home/linux/source/rootfs *(rw,sync,no_root_squash) #这里的路径可自己定义,跟后面的代码对应即可
  1. 在服务端创建一个共享目录 /data/share ,作为客户端挂载的远端入口,然后设置权限。
 mkdir -p /home/linux/source/rootfs 

 chmod 666 /home/linux/source/rootfs
  1. 启动nfs服务
sudo service nfs-kernel-server restart
  1. 在服务端看下是否正确加载了设置的 /etc/exports 配置
showmount -e localhost

  1. 测试nfs服务是否安装成功
$ sudo mount -t nfs localhost:/home/linux/source/rootfs/  /mnt/
$ ls /mnt/          #如果其中的内容和/nfs/rootfs中一致。 表示有挂载成功 
$ sudo umount /mnt 

注:u buntu 17.10 之后的版本 nfs 默认只支持协议 3 和 4,但后续我们使用的 uboot 默认
使用协议 2,所以需要在/etc/default/nfs-kernel-server 文件末尾加一句如下内容:

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

然后重启 nfs 服务即可。