arm linux嵌入式sd卡启动 并sd卡作为根文件系统
平时最常使用的时候 系统从nandflash启动 当从sd启动的时候,一般用于程序的烧录
有时候为了需要 文件系统也要从sd卡启动 也就是说 整个系统 都是从sd卡启动
一、修改启动参数
这里指的了bootenv是从欧冠uEnv.txt加载 所以文件镜像制作的时候 就要把uEnv.txt放进去 和设备树 imag等放在一起 大包镜像
也就是环境变量 uEnv.txt内容如下:
bootargs=console=ttyO0,115200n8 init=/sbin/init noinitrd root=179:2 rw rootdelay=3 rootfstype=ext4 mem=512M vram=12M
bootcmd=fatload mmc 0 ${fdtaddr} am335x-sbc-.dtb;fatload mmc 0 ${loadaddr} zImage;bootz ${loadaddr} - ${fdtaddr}
uenvcmd=boot
改好的 uEnv.txt 要在SD镜像制作的时候一同拷贝到镜像中,然后直接按照正常方式吧SD卡镜像烧录到SD卡,下一步就是在分区,然后在分区中复制进去文件系统
二、SD卡分区
root : 指的文件系统 我这里是、dev/mmcblk0p2 或者179:2 这个是自己在lubuntu系统中 用fdisk工具分区的
具体的分区,直接参考:https://blog.csdn.net/yj4231/article/details/8537640
分出 /dev/sdb2 节点
拔掉SD卡重新插上,就会看到了
ls /dev/sdb*
uEnv.txt的rootfstype格式 要和格式化sd卡分区的格式一致
三、拷贝文件系统到SD卡分区
在电脑分区完成后 ,把文件复制到sd卡的时候 一定要 sudo cp rootfs/* /mnt/ -arf , 否则就会出错
使用如下命令,拷贝,大约十几秒钟
接下来就是插上SD卡 ,直接可以启动