【系统移植】SD卡烧录uboot、linux内核、根文件系统

您所在的位置:网站首页 根文件系统制作工具 【系统移植】SD卡烧录uboot、linux内核、根文件系统

【系统移植】SD卡烧录uboot、linux内核、根文件系统

2024-06-03 10:09:19| 来源: 网络整理| 查看: 265

目录

一、SD卡分区

二、SD卡烧录uboot

三、SD卡烧录linux内核

四、SD卡烧录根文件系统

五、修改uboot环境变量

1、设置 bootcmd

2、设置 bootargs

 参考链接:IMX6Q的SD卡启动使用教程_mayue_csdn的博客-CSDN博客

一、SD卡分区

无论是EMMC还是SD卡启动,总体流程是

先运行uboot引导程序,一般是对内存做一些初始化操作uboot再引导加载linux内核镜像以及设备树文件linux 内核在运行的时候需要一些配置文件,这些配置文件保存在根文件系统中,所以最后会加载根文件系统

为了方便 uboot 找到镜像文件、设备树文件 以及根文件系统,我们可以把zImage、imx6null.dtb 放在分区 sdb1,分区格式为 vfat;将根文件系统放在 sdb2,分区格式为 ext4。

具体分区操作参考: 【系统移植】SD卡 分区_仲夏夜之梦~的博客-CSDN博客

二、SD卡烧录uboot

烧录uboot需要用到dd命令,我们的目的是将uboot-imx 文件中的内容拷贝到SD卡中,拷贝时需要注意,我们得跳过前两个扇区,每个扇区是512个字节。

dd命令参考:dd 命令详解 

sudo dd if=uboot-imx of=/dev/sdb bs=512 seek=2 conv=sync if:uboot源文件of:输出文件或设备bs:块的大小(这里和扇区大小保持一致)seek:跳过一定数量的块再开始拷贝(imx6null 要跳过2个扇区,跳过1个扇区似乎会出错)conv:输入输出同步,输出时可能会和输入有差异,不足部分用NULL补全

到这一步可以先测一下,如果无法载入uboot,后续的便也无法进行,如果看到如下内容说明uboot加载成功。

三、SD卡烧录linux内核

这里说的 linux内核包含两部分:linux 内核镜像、设备树。现在我们要把Linux内核拷贝到 sdb1 分区

mkdir tmpdir # 挂载点必须存在 sudo mount /dev/sdb1 tmpdir/ # 将外部设备 /dev/sdb1 挂载到 tmpdir sudo cp zImage imx6null.dtb tmpdir/ # 将linux内核拷贝到 /dev/sdb1 sudo umount tmpdir # 使用完以后,取消挂载

zImage 和 uImage 的区别:        

        zImage是一般情况下默认的压缩内核映像文件,加上一段解压启动代码得到

        uImage则是使用工具mkimage对普通的压缩内核映像文件(zImage)加工而得,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息

四、SD卡烧录根文件系统

一般根文件系统是放在 nfs 服务端,因为我们可能时常需要修改文件系统中的文件。我们可以通过设置uboot环境变量让uboot在启动的时候可以找到nfs服务端上的根文件系统。

这里烧录到SD卡的目的是为了熟悉SD卡分区以及学习如何操作uboot环境变量来加载根文件系统。其实根目录就是我们所熟知的根文件系统

sudo mount /dev/sdb2 tmpdir # 将外部设备 /dev/sdb2 挂载到 tmpdir sudo cp -r rootfs/* tmpdir/ # 将rootfs下的所有内容拷贝到 /dev/sdb2 sudo umount tmpdir # 使用完以后,取消挂载

五、修改uboot环境变量

假设现在uboot 可以正常启动,我们在倒计时之前按下任意键进入到uboot的交互模式,接下来我们要修改环境变量来让uboot找到linux内核、设备树文件、根文件系统的位置。

uboot 中有两个很重要的环境变量,一个是 bootcmd,另一个是 bootargs。修改环境变量使用的是setenv 命令

1、设置 bootcmd

设置该环境变量的目的是找到 Linux 内核和设备树文件。

setenv bootcmd 'mmc dev 0; fatload mmc 0:1 80800000 zImage; fatload mmc 0:1 83000000 imx6null.dtb; bootz 80800000 - 83000000'

接下来依次解读上述命令:

mmc dev 0:

        mmc dev表示切换设备,0 表示 SD卡,1 表示 EMMC

fatload mmc 0:1 80800000 zImage:

fatload 用于加载 vfat 文件系统的文件mmc 表示接口0:1 表示SD卡上的第1分区(前者的 0 是设备编号,后者的 1 代表分区)80800000:表示要加载到DDR的哪个位置zImage:表示要加载分区中的哪个文件(文件名必须和SD卡中保存的文件名一致)

fatload mmc 0:1 83000000 imx6null.dtb:

        加载SD卡中第一分区的 imx6null.dtb 文件,保存到DDR的0x83000000位置

bootz 80800000 - 83000000:

        bootz 表示运行 zImage 内核文件,原本的格式是“bootz  内核  根文件系统  设备树”

        但是根文件系统以其他方式加载,所以使用“-” 填充

2、设置 bootargs setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw'

接下来依次解读上述命令:

console=ttymxc0,115200  

        通过串口打印控制台信息,串口波特率为115200

root=/dev/mmcblk0p2 rootwait rw

        指定根文件系统的位置

        mmcblk0p2 表示从SD卡的第2分区加载根文件系统

                - mmcblk         表示设备类型为mmc

                - 0                    指定了设备(0 表示 SD卡,1 表示 EMMC)

                - p2                  指定分区,这里表示第2分区       

        rootwait         表示等待 mmc 设备初始化完成以后再挂载

        rw                  指定文件系统的权限可读可写

最终启动的效果如下:



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭