Linux开发板u-boot以tftp的方式远程加载Linux内核
环境
开发板:STM32MP157
tftp服务器系统:Ubuntu18.04
开发板以网线直接连接至电脑。
服务器部分
tftp服务搭建
在Ubuntu系统上安装tftp服务,执行以下命令:
sudo apt-get install tftp-hpa tftpd-hpa
安装完成后,新建一个文件夹作为tftp服务的工作目录(用于存放所需远程加载的Linux内核等文件):
mkdir tftpboot
修改tftp服务配置:
sudo vim /etc/default/tftpd-hpa
将TFTP_DIRECTORY
修改为刚刚创建的目录的路径,TFTP_OPTIONS
增加"-c"选项,修改后的配置为:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure -c"
TFTP_DIRECTORY:文件上传和下载的目录。
TFTP_OPTIONS:增加“-c”,-c代表可以往服务器上传文件。
tftpd-hpa服务配置文件修改完成后,重启tftpd-hpa服务:
sudo service tftpd-hpa restart
准备内核和设备树文件
将需要远程加载的内核文件(uImage
)和设备树文件(.dtb
)拷贝至tftpboot目录:
cp {PATH}/uImage /home/tftpboot/
cp {PATH}/*.dtb /home/tftpboot/
{PATH}:内核文件和设备树文件的路径。
开发板u-boot环境配置
启动开发板,敲回车进入uboot。
设置IP地址(与电脑在同一网段):
setenv ipaddr 192.168.137.10
设置网关地址:
setenv ipaddr 192.168.137.1
设置子网掩码:
setenv netmask 255.255.255.0
设置服务器地址(Ubuntu(tftp服务器)的IP地址):
setenv serverip 192.168.137.135
保存前面的网络配置:
saveenv
查看开发板与服务器的网络是否通畅:
ping 192.168.137.135
若出现
host 192.168.137.135 is alive
,则表示网络通畅(可能会需要多ping两次)。
设置加载的linux内核和设备树:
setenv bootcmd “tftp c2000000 uImage;tftp c4000000 stm32mp157a-itop.dtb;bootm c2000000 - c4000000”
保存配置:
saveenv
可以使用print
命令查看写入的配置:
加载启动远程Linux内核:
run bootcmd