uboot网络配置脚本化

声明

本博客所记录的关于正点原子i.MX6ULL开发板的学习笔记,(内容参照正点原子I.MX6U嵌入式linux驱动开发指南,可在正点原子官方获取正点原子Linux开发板 — 正点原子资料下载中心 1.0.0 文档,旨在如实记录我在学校学习该开发板过程中所遭遇的各类问题以及详细的解决办法。其初衷纯粹是为了个人知识梳理、学习总结以及日后回顾查阅方便,同时也期望能为同样在学习这款开发板的同学或爱好者提供一些解决问题的思路和参考。我尽力保证内容的准确性和可靠性,但由于个人知识水平和实践经验有限,若存在错误或不严谨之处,恳请各位读者批评指正。

责任声明:虽然我力求提供有效的问题解决办法,但由于开发板使用环境、硬件差异、软件版本等多种因素的影响,我的笔记内容不一定适用于所有情况。对于因参考本笔记而导致的任何直接或间接损失,我不承担任何法律责任。使用本笔记内容的读者应自行承担相关风险,并在必要时寻求专业技术支持。

低版本uboot(不支持交互式设置)

我的U-Boot版本为2016.03版本,不支持交互设置,因此采用独立配置

1. 为每个路由器生成独立配置文件

假设你有两台路由器,分别使用以下配置:

(1) 路由器1(家庭网络)

文件名: net-home.img

脚本内容 (net-home.scr):

(2) 路由器2(办公室网络)

文件名: net-office.img

脚本内容 (net-office.scr):

2. 生成镜像文件

使用命令安装u-boot-tools

sudo apt update

sudo apt install u-boot-tools

# 生成路由器1配置镜像

mkimage -T script -C none -n "Home Config" -d net-home.scr net-home.img

# 生成路由器2配置镜像

mkimage -T script -C none -n "Office Config" -d net-office.scr net-office.img

3. 将镜像文件部署到SD

  1. 将SD卡格式化为FAT32分区。
  2. 将 net-home.img 和 net-office.img 复制到SD卡根目录。

4. U-Boot中设置快捷命令

(1) 定义快捷命令

# 加载并执行家庭网络配置0x80800000uboot的启动地址,不同的板子可能不同

setenv home_net 'load mmc 0:1 0x80800000 net-home.img; source 0x80800000'

# 加载并执行办公室网络配置

setenv office_net 'load mmc 0:1 0x80800000 net-office.img; source 0x80800000'

# 保存环境变量

saveenv

(2) 使用快捷命令

切换至家庭网络:

run home_net  # 自动加载并执行配置,无需手动输入

切换至办公室网络:

run office_net

5. 若需支持更多路由器,只需:

  1. 新增配置文件(如 net-lab.img)。
  2. 定义新的快捷命令:

setenv lab_net 'load mmc 0:1 0x80800000 net-lab.img; source 0x80800000'

saveenv

6. 操作流程图

执行命令后检查环境变量:
printenv gatewayip ipaddr serverip

注:配置需要根据自己的路由器LANipuboot的启动地址配置。

在Windows下使用ipconfig查看当前路由器的LAN ip

乌邦图上的配置应遵循路由器LAN ip确保虚拟机serverip和板子的ipaddr在同一网段

高版本uboot(支持交互式设置)

1. 脚本代码

# 强制要求输入合法网段(格式:XXX.XXX.XXX,如192.168.0)

echo "=== 请输入网段(格式:XXX.XXX.XXX,如192.168.0)==="



# 设置初始值触发输入,并验证格式

while true; do

  setenv subnet "invalid"  # 初始非法值

  setenv subnet           # 清除变量,触发输入

  if test "${subnet}" != "" -a "${subnet#*.*.*}" = ""; then

    break  # 输入合法,退出循环

  fi

  echo "错误:网段格式必须为 XXX.XXX.XXX(如192.168.0)!"

done



# 生成IP地址

setenv ipaddr ${subnet}.100

setenv serverip ${subnet}.200

setenv gatewayip ${subnet}.1

setenv netmask 255.255.255.0



# 清理临时变量

setenv subnet



# 打印配置

echo "=== 配置已更新 ==="

echo "网关IP: ${gatewayip}"

echo "设备IP: ${ipaddr}"

echo "服务器IP: ${serverip}"



# 保存并重启

saveenv

reset

2.生成镜像文件(同上)

mkimage -T script -C none -n "Network Config" -d net-auto.scr net-auto.img

3.在U-Boot中执行

tftp 0x80800000 net-auto.img

source 0x80800000

# 输入示例:

Enter value for 'subnet': 192.168.50  # 必须严格输入三段的网段

如果U-Boot不支持循环和条件判断,改用以下脚本:

# 输入网段(手动重试)

echo "=== 请输入网段(格式:XXX.XXX.XXX,如192.168.0)==="

setenv subnet



# 直接生成IP(假设用户已正确输入)

setenv ipaddr ${subnet}.100 #板子ipaddr

setenv serverip ${subnet}.200 #乌邦图主机ip

setenv gatewayip ${subnet}.1  #gatewayip

setenv netmask 255.255.255.0



# 保存并重启

saveenv

reset

预期输出:

ipaddr=192.168.50.100

serverip=192.168.50.200

gatewayip=192.168.50.1

ping 192.168.50.200  # 应返回 "host is alive"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值