uBoot以tftp远程加载Linux内核

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命令查看写入的配置:

print

加载启动远程Linux内核:

run bootcmd

你可能感兴趣的:(Linux,linux,运维,服务器)