小程序授权登录全量避坑!手机号授权、静默登录、自动登录失效解决
2026/6/6 3:22:21
| 工具/环境 | 版本/配置要求 | 核心功能 |
|---|---|---|
| IMX6开发板 | 支持U-Boot(如官方移植版) | 硬件载体,运行U-Boot和内核 |
| Ubuntu主机 | 任意支持TFTP/NFS的版本(本文以18.04为例) | 搭建TFTP服务器(提供内核/设备树)、NFS根文件系统 |
| 串口工具 | SecureCRT/Xshell/Minicom | 连接开发板U-Boot,执行命令 |
| TFTP服务器 | tftpd-hpa(Ubuntu软件包) | 快速下载zImage和imx6.dtb到开发板内存 |
| NFS服务 | nfs-kernel-server(Ubuntu软件包) | 提供根文件系统,内核启动后挂载使用 |
/home/linux/tftp),将zImage内核和imx6.dtb设备树放入该目录;/etc/exports中添加配置(如/home/linux/nfs *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)),重启NFS服务;192.168.1.3)。U-Boot的网络功能依赖IP/MAC等环境变量,必须先配置才能通过TFTP下载文件。
| 环境变量 | 作用 |
|---|---|
| ipaddr | 开发板U-Boot阶段的IP地址(需与Ubuntu同网段,如192.168.1.100) |
| serverip | TFTP服务器IP地址(即Ubuntu主机IP,如192.168.1.3) |
| ethaddr | 开发板网卡MAC地址(自定义,如00:11:22:33:44:55,避免与其他设备冲突) |
# 设置开发板IPsetenv ipaddr192.168.1.100# 设置TFTP服务器IP(Ubuntu主机IP)setenv serverip192.168.1.3# 设置MAC地址(可选,若开发板无默认MAC需配置)setenv ethaddr 00:11:22:33:44:55# 保存环境变量(写入开发板MMC,避免重启丢失)saveenv# ping Ubuntu主机,成功会显示“host 192.168.1.3 is alive”ping192.168.1.3setenv修改内存中的变量,saveenv将其写入持久化存储;bootargs是U-Boot传递给Linux内核的启动参数,内核会根据这些参数初始化系统(如指定控制台、根文件系统)。
完整参数示例(对应笔记中的配置):
setenv bootargsconsole=ttymxc0,115200root=/dev/nfsnfsroot=192.168.1.3:/home/linux/nfs/imx6/rootfs,nfsvers=3ip=192.168.1.100init=/linuxrc各参数含义:
| 参数 | 作用 |
|---|---|
| console=ttymxc0,115200 | 指定Linux控制台为串口ttymxc0(IMX6默认串口),波特率115200 |
| root=/dev/nfs | 声明根文件系统类型为NFS(网络文件系统) |
| nfsroot=… | 指定NFS根文件系统路径:UbuntuIP:共享目录,nfsvers=3指定NFS协议版本3 |
| ip=192.168.1.100 | 指定Linux内核启动后的IP地址(与U-Boot的ipaddr一致即可) |
| init=/linuxrc | 指定Linux的1号进程(初始化进程)为/linuxrc(根文件系统中的初始化脚本) |
# 设置bootargs参数(一行完整输入,注意路径替换为自己的NFS目录)setenv bootargsconsole=ttymxc0,115200root=/dev/nfsnfsroot=192.168.1.3:/home/linux/nfs/imx6/rootfs,nfsvers=3ip=192.168.1.100init=/linuxrc# 保存参数saveenv# 验证参数是否设置成功(会显示当前bootargs的值)printenvbootargsLinux内核(zImage)和设备树(imx6.dtb)需下载到开发板内存中才能运行,TFTP是U-Boot下最常用的下载方式。
0x80800000);0x83000000;# 下载zImage到内存0x80800000地址tftp 0x80800000 zImage# 下载imx6.dtb到内存0x83000000地址tftp 0x83000000 imx6.dtbbootz是U-Boot中用于启动压缩内核(zImage)的命令,需指定内核地址、initrd地址(无则用“-”)、设备树地址。
# bootz 内核地址 - 设备树地址(initrd未使用,用“-”占位)bootz 0x80800000 - 0x83000000/ #),表示系统启动成功;df -h,会显示192.168.1.3:/home/linux/nfs/imx6/rootfs已挂载到/目录。sudo ufw disable);sudo systemctl start tftpd-hpa);nfsroot路径是否正确,NFS服务是否正常;init=/linuxrc是否存在于根文件系统中;console配置一致。本文从前期环境搭建到最终内核启动,完整覆盖了IMX6开发板U-Boot阶段的核心配置流程: