ubuntu下配置TFTP服务器,用以ubuntu下烧写内核到ARM开发板
在学习练习嵌入式内核的移植的时候,内核可以有通过 1.sd卡烧写;2. usb烧写 ;3. 基于TFTP协议的网线烧写。
但是,在开发的时候,最方便的方式还是TFTP配合u-boot烧写内核,因为sd卡在PC机和ARM板之间移来移去不方面,通常sd卡用于一键烧写完整的linux系统到开发板(包括uboot,zimage,yaffays2)。usb烧写就更加繁琐,配合windows下DNW软件,一步一步分别烧写uboot,zImage,根文件系统,但是如此做的好处是可以清晰的了解整个嵌入式linux系统的组成部分以及存放的地址位置。
TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场合。TFTP的传输概念是将宿主机视为服务器,嵌入式开发板视为客户端,客户端凭借ipv4地址即可访问到服务器内的共享文件夹。本章主要讲的TFTP烧写方式,实际是在开发板启动在uboot下,将PC机ubuntu环境下的内核编译后等,通过网线传输到开发板的内存当中。内存中的二进制程序可以bootm(go)运行,或者写到NandFash中去。下面,本人将介绍TFTP配置以及烧写的过程,仅供参考:
1. 一般的ubuntu环境不具备TFTP,所以需要通过源下载安装:
(1) 安装xinetd:
sudo apt-get install xinetd
( 2 ) 安装tftp-hpa和tftpd-hpa:(前者是客户端,后者是服务器,之所以都装,是为了后期本机既可以作为客户端又可以视为服务器,可以自行测试)
sudo apt-get install tftp-hpa tftpd-hpa
2. 建立配置文件:sudo gedit /etc/xinetd.d/tftp (没有则新建该文件)写入如下内容:
service tftp
{
socket_type = dgram
protocol = udp
wait =yes
user =root
server = /usr/sbin/in.tftpd
server_args = -s /home/yangqi/tftpboot/ -c
disable = no
per_source = 11
cps = 100 2
falgs =IPv4
}
注意:/home/yangqi/tftpboot/ 该路径为tftp服务器的根目录,可以自行修改。
修改方法:
mkdir /home/yangqi/tftpboot 创服务器根文件夹
chmod 777 /home/yangqi/tftpboot 修改权限为读写可执行
3. 重新启动xinetd服务:
sudo /etc/init.d/xinetd restart
4. 关闭ubuntu防火墙:sudo ufw disable (关闭后需要重启ubuntu)
(附:查看防火墙状态:sudo ufw status 打开防火墙: sudo ufw enable )
5. 到此,基本配置完成:
6. 查看tftp:服务器是否启动
yangqi@ubuntu: netstat -a |grep tftp
若显示为:udp 0 0 *:tftp *:* 表示成功。
6. 本机测试:
( 1 ) 在/home/yangqi/tftpboot/目录下创建一个文件wm.c (命令:touch /home/yangqi/tftpboot/wm.c),注意一定要修改该文件的权限chmod 777 wm.c,否则本机测试可以通过,但是通过嵌入式开发板读写该文件时,就会Transform timeout.
但是,在开发的时候,最方便的方式还是TFTP配合u-boot烧写内核,因为sd卡在PC机和ARM板之间移来移去不方面,通常sd卡用于一键烧写完整的linux系统到开发板(包括uboot,zimage,yaffays2)。usb烧写就更加繁琐,配合windows下DNW软件,一步一步分别烧写uboot,zImage,根文件系统,但是如此做的好处是可以清晰的了解整个嵌入式linux系统的组成部分以及存放的地址位置。
TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场合。TFTP的传输概念是将宿主机视为服务器,嵌入式开发板视为客户端,客户端凭借ipv4地址即可访问到服务器内的共享文件夹。本章主要讲的TFTP烧写方式,实际是在开发板启动在uboot下,将PC机ubuntu环境下的内核编译后等,通过网线传输到开发板的内存当中。内存中的二进制程序可以bootm(go)运行,或者写到NandFash中去。下面,本人将介绍TFTP配置以及烧写的过程,仅供参考:
1. 一般的ubuntu环境不具备TFTP,所以需要通过源下载安装:
(1) 安装xinetd:
sudo apt-get install xinetd
( 2 ) 安装tftp-hpa和tftpd-hpa:(前者是客户端,后者是服务器,之所以都装,是为了后期本机既可以作为客户端又可以视为服务器,可以自行测试)
sudo apt-get install tftp-hpa tftpd-hpa
2. 建立配置文件:sudo gedit /etc/xinetd.d/tftp (没有则新建该文件)写入如下内容:
service tftp
{
socket_type = dgram
protocol = udp
wait =yes
user =root
server = /usr/sbin/in.tftpd
server_args = -s /home/yangqi/tftpboot/ -c
disable = no
per_source = 11
cps = 100 2
falgs =IPv4
}
注意:/home/yangqi/tftpboot/ 该路径为tftp服务器的根目录,可以自行修改。
修改方法:
mkdir /home/yangqi/tftpboot 创服务器根文件夹
chmod 777 /home/yangqi/tftpboot 修改权限为读写可执行
3. 重新启动xinetd服务:
sudo /etc/init.d/xinetd restart
4. 关闭ubuntu防火墙:sudo ufw disable (关闭后需要重启ubuntu)
(附:查看防火墙状态:sudo ufw status 打开防火墙: sudo ufw enable )
5. 到此,基本配置完成:
6. 查看tftp:服务器是否启动
yangqi@ubuntu: netstat -a |grep tftp
若显示为:udp 0 0 *:tftp *:* 表示成功。
6. 本机测试:
( 1 ) 在/home/yangqi/tftpboot/目录下创建一个文件wm.c (命令:touch /home/yangqi/tftpboot/wm.c),注意一定要修改该文件的权限chmod 777 wm.c,否则本机测试可以通过,但是通过嵌入式开发板读写该文件时,就会Transform timeout.