环境变量 bootargs 概念讲解
bootargs 保存着 uboot 传递给 Linux 内核的参数,并且由 mmcargs 设置,mmcargs 环境变量如下:
"mmcargs=setenv bootargs console=${console},${baudrate} ${mxcfb0} ${mxcfb1} ${ldbmode} ${smp} " "root=
${mmcroot} fec.macaddr=${fec_mac}\0"
其中 console=ttymxc0,baudrate=115200,mmcroot=/dev/mmcblk3p2 rootwait rw,因此将 mmcargs 展开以后就是:
mmcargs=setenv bootargs console= ttymxc0, 115200 root= /dev/mmcblk3p2 rootwait rw
root 用来设置根文件系统的位置,root=/dev/mmcblk3p2 用于指明根文件系统存放在 mmcblk3设备的分区 2 中,而mmcblk3是emmc设备
实际修改流程
1 进入uboot,通过editenv mmcroot 修改为参数,/dev/mmcblk3p3 rootwait rw ,
注:这个操作是将文件系统挂载到emmc分区3,需要你自己添加一个分区
2 saveenv
3 boot
4 可以正常进入文件系统
如果重启或者断电之后uboot的mmcroot变量又变为/dev/mmcblk3p2 rootwait rw ,那么可能是被板级文件写死,修改board/freescale/common/mmc.c文件将下面内容注释或者删掉再者直接将mmcblk%dp2改为mmcblk%dp3重新编译uboot源码替换uboot镜像即可。
/* Set mmcblk env */
sprintf(mmcblk, "/dev/mmcblk%dp2 rootwait rw",
mmc_map_to_kernel_blk(dev_no));
setenv("mmcroot", mmcblk);