从网络启动linux调试方法
目录
一、目的
从网络启动 linux 系统的唯一目的就是为了调试!我们可以设置 linux 从网络启动,也就是将 linux 镜像文件和根文件系统都放到 Ubuntu 下某个指定的文件夹中,这样每次重新编译 linux 内核或者某个 linux 驱动以后只需要使用 cp 命令将其拷贝到这个指定的文件夹中即可,这样就不用需要频繁的烧写 EMMC,这样就加快了开发速度。
二、SSH和TFTP环境创建
1.连接开发板和电脑/路由器
用网线连接开发板和路由器(或者开发板和电脑),建议开发板和主机 PC 都连接到同一个路由器上
2.设置板卡环境变量
设置步骤如下:
setenv ipaddr 192.168.2.115 //开发板 ip 地址
setenv ethaddr 00:04:9f:04:d2:35 //开发板网卡 mac 地址
setenv gatewayip 192.168.2.1 //开发板默认网关
setenv netmask 255.255.255.0 //开发板子网掩码
setenv serverip 192.168.2.102 //服务器地址,也就是 ubuntu 地址
saveenv //保存环境变量
3.测试网络通信是否正常
ping 192.168.2.102
注意!只能在 uboot 中 ping 其他的机器,其他机器不能 ping uboot,因为 uboot 没有对 ping命令做处理,如果用其他的机器 ping uboot 的话会失败!
4.网络调试之NFS调试方法
(1)在ubuntu中安装NFS服务
sudo apt-get install nfs-kernel-server rpcbind
(2)创建共享目录
在ubuntu用户目录下./linux/nfs
,此文件夹供nfs服务器使用,后面可以通过开发板的网络文件系统来访问nfs文件夹
(3)配置nfs
sudo vi /etc/exports
打开/etc/exports 以后在后面添加如下所示内容:
/home/hujing/linux/nfs *(rw,sync,no_root_squash)
(4)重启NFS服务:
sudo /etc/init.d/nfs-kernel-server restart
(5)SSH服务开启
Ubuntu下开启SSH服务:
sudo apt-get install openssh-server
上述命令安装 SSH 服务, SSH 的配置文件为/etc/ssh/sshd_config,使用默认配置即可。
(6)开发板uboot命令格式
nfs [loadAddress] [[hostIPaddr:]bootfilename]
- loadAddress 是要保存的 DRAM 地址
- [[hostIPaddr:]bootfilename]是要下载的文件地址。
- 使用 nfs 命令来将 zImage 下载到开发板 DRAM 的 0X80800000 地址处:
nfs 80800000 192.168.2.102:/home/hujing/linux/nfs/zImage
4.网络调试之TFTP调试方法
(1)ubuntu搭建tftp服务器
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
(2)创建服务器目录
mkdir /home/hujing/linux/tftpboot
chmod 777 /home/hujing/linux/tftpboot
(3)配置tftp
- 新建文件/etc/xinetd.d/tftp
如果没有/etc/xinetd.d 目录的话自行创建, 然后在里面输入如下内容:
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/hujing/linux/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
- 启动tftp服务
sudo service tftpd-hpa start
- 打开/etc/default/tftpd-hpa 文件,将其修改为如下所示内容:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/hujing/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
- 重启tftp服务
sudo service tftpd-hpa restart
- 将 zImage 镜像文件拷贝到 tftpboot 文件夹中,并且给予 zImage 相应的权限,命令如下:
cp zImage /home/hujing/linux/tftpboot/
cd /home/hujing/linux/tftpboot/
chmod 777 zImage
- 在uboot中使用tftp命令:
格式:tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
loadAddress 是 文 件 在 DRAM 中 的存 放 地 址
[[hostIPaddr:]bootfilename]是要从 Ubuntu 中下载的文件
- 将 tftpboot 文件夹里面的 zImage 文件下载到开发板 DRAM 的 0X80800000 地址处 :
tftp 80800000 zImage