开发阶段部署阶段
uboot镜像(ubootpak.bin) : flash/SD
linux内核镜像(uImage) : tftp下载
根文件系统(rootfs) : nfs挂载
本文操作需要用到uboot命令进行镜像搬移和根文件系统挂载
uboot中常用到的命令可以看这个链接
1、启动uboot,进入uboot的交互界面
2、使用tftp命令下载uImage内核镜像到内存中。
下载之前需要将uImage的镜像拷贝到tftpboot目录下。
tftp 0x48000000 uImage
3、设置uboot的自启动参数:bootargs
bootargs:自启动的环境变量
linux内核启动之后,会从uboot的环境变量的分区,
读取bootargs环境变量的参数。
<特比特别重要, 面试中会经常问到>
setenv bootargs root=/dev/nfs nfsroot=192.168.1.222:/home/hqyj/nfs/rootfs rw console=/dev/ttySAC0,115200 init=/linuxrc ip=192.168.1.250
saveenv
解析:
root=/dev/nfs : 使用NFS网络文件系统
nfsroot=192.168.1.222:/home/hqyj/nfs/rootfs
: 根文件系统所在的路径(修改为自己)
rw:读写权限
console=/dev/ttySAC0,115200:串口,和串口的波特率
init=/linuxrc:内核启动之后运行的1号进程
ip=192.168.1.250:开发板的IP地址(修改为自己)
<只需要设置一次>
ubuntu系统是16.04 64位:
setenv bootargs root=/dev/nfs nfsroot=192.168.1.250:/home/hqyj/nfs/rootfs v4,tcp rw console=/dev/ttySAC0,115200 init=/linuxrc ip=192.168.1.222
ubuntu系统是18.04以上 64位:
setenv bootargs root=/dev/nfs nfsroot=192.168.1.250:/home/hqyj/nfs/rootfs v4,tcp rw console=/dev/ttySAC0,115200 init=/linuxrc ip=192.168.1.222
ubuntu系统是18.04以上版本需要修改ubuntu中的配置文件:
参考文档:
https://www.jianshu.com/p/10e3245f15f3?tdsourcetag=s_pctim_aiomsg
4、启动内核
bootm 0x48000000 : 启动内核的命令
切记:不可以使用go命令启动内核
5> 观察现象
内核是否启动成功,根文件系统是否挂载成功。
6、配置开发板的系统为自启动的模式
借助uboot中的环境变量:bootcmd—》自启动的命令
uboot启动之后,在倒计时减到0之前按任意键,会进入uboot的交互模式。
在倒计时减到0之前,不按任意键,会进入自启动模式,
模式会依次执行bootcmd环境变量后边的命令。
setenv bootcmd uboot命令1 \; uboot命令2\; …
setenv bootcmd tftp 48000000 uImage\;bootm 48000000
saveenv
在uboot的交互界面执行boot命令也会自动执行bootcmd环境变量后边的命令。
7、总结:根文件系统挂载不成功的原因
1)、检查nfs安装和配置是否正确
2)、重启nfs服务
sudo service nfs-kernel-server restart
3)、检查bootargs参数设置是否正确