打造嵌入式软件开发团队(2) tftp服务器
上回书说到嵌入式开发环境的根文件系统如何通过NFS挂载,接下来说一下内核如何通过tftp服务器调试和加载。
Bootloader
通过tftp加载内核的前提是,开发使用的bootloader支持tftp功能。这样的bootloader有很多,在MIPS结构(MIPS4K,BRCM,龙芯等处理器)上,可以尝试使用U-Boot或者CFE。其中U-Boot适用于多种平台,包括ARM,PowerPC,MIPS等多中体系结构,而CFE是Broadcom公司开发的一个开放源代码BL,被广泛应用于MIPS结构。
安装和配置TFTP服务器
在Debian base的Ubuntu系统上安装tftp的方法非常简单。首先,你可以尝试用apt-cache命令查看一下发行版上都提供了哪些tftp相关的软件可以使用。
$ apt-cache search tftp
...
tftp-hpa - HPA's tftp client
tftpd-hpa - HPA's tftp server
atftp - advanced TFTP client
atftpd - advanced TFTP server
...
tftp - Trivial file transfer protocol client
tftpd - Trivial file transfer protocol server
atftp和tftp-hpa都是比较特殊的版本,所以,为了简便起见,这个介绍中只安装通用的tftp和tftpd。你可以使用下面的命令安装TFTP。
$ sudo apt-get install tftpd tftp
确认inetd.conf中是否正确安装了tftpd。
grep tftp /etc/inetd.conf
准备TFTP服务器使用的目录,可以在这个目录中放入需要共享的文件,比如编译好的内核image文件。
$ sudo mkdir /tftpboot
$ sudo chmod 777 /tftpboot
一般,为了配置简便,通常将tftp服务的目录放在/tftpboot,当然这个位置是可以配置的,在/etc/inetd.conf文件中,可以看到tftp目录被放在了/srv/tftp中,你可以根据需要更改。
$ sudo sed -e "s,/src/tftp,/tftpboot," /etc/inetd.conf > \
/etc/inetd.conf_out && \
sudo mv /etc/inetd.conf /etc/inetd.conf_bak && \
sudo mv /etc/inetd.conf_out /etc/inetd.conf
测试一下。
$ echo "HELLO" > /tftpboot/FILE.txt
$ tftp
tftp> connect localhost
tftp> get FILE.txt
另外一个选择是使用xinet.d来驱动tftpd,取代inet.d。
安装xinet.d。
$ sudo apt-get install xinetd
配置tftpd服务。
打开/etc/xinet.d/tftpd文件,根据下面的样子照猫画虎就行了,需要注意的是disable=yes这一行变成disable=no。另外,默认的配置文件中可能需要增加访问控制选项,即将only_from这个选项固定为局域网。
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
group = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
only_from = 192.168.1.0/24
disable = no
}
使用xinet.d的好处是安全性增强。也是一个比较不错的选择。
–
参考URL:
http://hogeo.jp/blog/memo/2008/07/tftpubuntu.html
http://0×100.com/Gentoo/Server/tftpd.html
相关日志
嘿~,如果您喜欢我的博客,您可以通过RSS.链接将本博客的最新文章传输到您喜欢的阅读器。
