一、Ubuntu端
首先需要在ubuntu上安装好tftp,确定已经安装tftpd-hpa ,tftp-hpa,xineted。
出现timeout问题(整了好久),进行以下步骤:
1、sudo gedit /etc/xinetd.d/tftpd(如果没有文件则创建)
service tftp
{
disable = no
socket_type = dgram
wait = no
user = root
protocol = udp
server = /usr/sbin/in.tftpd
server_args = -s /home/tftpd ------------自己创建的tftp目录(按网上教程做的应该是tftpboot,此目录需要添加权限777)
log_on_success = PID HOST DURATION
log_on_failure = HOST
}
2、sudo gedit /etc/inetd.conf
#tftp dgram udp wait nobody /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot (没有则添加,确保注释)
3、重启tftpd和xineted服务
sudo /etc/init.d/tftpd-hpa restart
sudo /etc/init.d/xinetd restart
4、最后测试
tftp localhost
get filename
二、开发板端
出现u-boot能够ping通ubuntu,但是进入系统后无法ping通,各个参数也在u-boot下设置了。
地址等参数无法传入原因至今不明,
解决办法:进入系统后ifconfig eth0 [yourip],就可以上传下载文件了。
-------------------------------------------------
2018.03.29
根据内核启动流程,
在bootloader配置了initrd的情况下,内核启动分成两个阶段:
1、执行initrd文件系统中的init,完成加载驱动模块等任务
2、执行根文件系统中/sbin/init进程
/sbin/init进程首先读取/etc/inittab文件执行脚本进行系统初始化---》键盘、字体、模块、网络
cat /etc/inittab :
::sysinit:/etc/rc.d/rcS //系统初始化
::respawn:/etc/rc.d/rc_mxc.S
::sysinit:/etc/rc.d/rc_gpu.S
::ctrlaltdel:/sbin/reboot
::shutdown:/etc/rc.d/rcS stop
::restart:/sbin/init
rcS文件:获取 网络环境 与主机地址
打开rcS文件:有一段代码:
/etc/rc.d/init.d/$i $mode
mode 值应该是‘start’,i是按空格分离字符串遍历了 $cfg_services ,cfg_services的值赋给services,再把services值赋给cfg,那么就没有启动network?
再看network中,有一句rm -f /etc/resolv.conf,但是启动开发板发现这个文件还存在,进一步证实了network没有运行?
这个问题,有两种解决办法:1、在rcS文件中添加一句 /etc/rc.d/init.d/retwork start
2、在rc.conf 中的cfg_services 中加network
进行以上步骤后重启板子,然后ifconfig -a 发现 只有loopback有地址和掩码,eth0还是没有。
那么我们转到network看看为什么,发现network里出现IPADDR0等参数的值并没有在rc.conf中赋予,于是解决办法:
rc.conf中加入
#eth0 configure
export SYSCFG_IFACE0=y
export INTERFACE0="eth0"
export IPADDR0="192.168.1.24"
export NETMASK0="255.255.255.0"
export BROADCAST0="192.168.1.255"
export GATEWAY0="192.168.1.1"
重启,ifconfig eth0 ,初始化成功
最后想起来我这里只是从初始化的方向解决的问题,还是不知道为什么uboot没有把参数传给内核。
----------------------------------------------------
下载命令:tftp -g -l test xxx.xxx.x.x test1-c (test是源文件,test1重命名文件)