news 2026/4/15 11:09:10

Linux内核驱动--U-Boot、内核加载与 rootfs 挂载

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux内核驱动--U-Boot、内核加载与 rootfs 挂载

一、Linux 系统的完整启动过程

  • U-Boot(bootloader)如何初始化硬件
  • 内核镜像如何被加载并启动
  • 根文件系统(rootfs)如何挂载
  • 实际调试中常见的 can't mount root fs 错误分析

二、Linux 启动流程概览

  1. bootloader(如 U-Boot)
  2. Linux 内核(kernel)
  3. 根文件系统(rootfs)

三、存储设备与内存布局详解

设备类型特点
ROM只读存储存放初始引导代码(bootcode),断电不丢失
RAM随机存储临时存储,访问快,断电丢失
Flash/EMMC非易失用于存放操作系统镜像和数据,可擦写

四、Linux 启动三步曲

1. bootloader(U-Boot)——系统的“引路人”

  • 初始化 CPU 和外设(UART、网卡、内存控制器等)
  • 加载内核镜像(zImage)到指定内存地址
  • 设置启动参数(如 kernel command line)
  • 跳转执行内核入口点

2. Linux 内核(kernel)——核心控制中枢

  • 内核是操作系统的核心,负责:
  • 管理进程、内存、设备、网络
  • 提供系统调用接口
  • 初始化驱动模块
  • 挂载根文件系统

3. 根文件系统(rootfs)——应用的“家”

  • 根文件系统是 Linux 运行的基础,包含:
  • /bin, /sbin: 基本命令
  • /etc: 配置文件
  • /lib: 库文件
  • /proc, /sys: 虚拟文件系统
  • /home, /tmp: 用户目录

四、Linux在SD卡与Ubuntu上启动

Linux 启动流程:
SD卡启动
  1. 系统上电后,先执行 imx6 内部 ROM 中的启动程序(根据 boot mode 选择对应的外设)
  2. 拷贝 SD 卡中的 bootloader 前半部分程序到 imx6 内部的 RAM 中-- bootloader 必须在自己的前半部分初始化好内存,并将自己后半部分搬移到内存执行
  3. 内核及根文件系统都在 SD 卡
  4. bootloader 后半部分搬移 SD 卡中的内核(zImage)到内存的 0x80800000 地址处,PC 指向 0x80800000 地址处启动内核
  5. 内核启动完成后挂载 SD 卡上的根文件系统
内核及根文件系统都在 ubuntu 上
  1. 系统上电后,先执行 imx6 内部 ROM 中的启动程序(根据 boot mode 选择对应的外设)
  2. 拷贝 SD 卡中的 bootloader 前半部分程序到 imx6 内部的 RAM 中-- bootloader 必须在自己的前半部分初始化好内存,并将自己后半部分搬移到内存执行
  3. bootloader 通过 tftp 下载 ubuntu 中的 zImage 到内存的 0x80800000 地址处并引导内核启动
  4. 内核启动完成后通过 nfs 挂载 ubuntu 中的 rootfs

五、uboot命令

uboot命令:

  • help/? 查看uboot支持的命令
  • reset uboot阶段重启命令
  • ping 测试网络
  • printenv (print) 打印环境变量
  • setenv name value 设置环境变量(所有环境变量均为字符串类型)
  • setenv name 删除环境变量(将环境变量的值设置为空)
  • saveenv 保存环境变量(一般保存在MMC中)

六、相关环境变量配置

1.TFTP 相关环境变量(用于网络下载镜像)

变量名含义示例值说明
ipaddr开发板的 IP 地址192.168.1.100本机 IP,必须与主机在同一网段
ethaddrMAC 地址00:1A:2B:3C:4D:5E网卡硬件地址,用于网络通信
serveripTFTP 服务器 IP 地址192.168.1.3Ubuntu 主机的 IP,提供文件下载服务
1.setenv ipaddr 192.168.1.100 2.setenv serverip 192.168.1.3 3.setenv ethaddr 00:1A:2B:3C:4D:5E

2.下载 zImage 内核镜像

将服务器上的 zImage 文件下载到内存地址 0x80800000

tftp 0x80800000 zImage

3.下载设备树(Device Tree Blob)

  • 设备树描述了硬件平台信息(如 CPU、内存、外设)
  • 内核依赖它来正确识别硬件
  • 必须与内核版本匹配
tftp 0x83000000 imx6.dtb

4.启动内核时的关键参数(bootargs)

参数含义示例值说明
consol=控制台输出端口ttySAC0,115200指定串口和波特率,便于调试
root=根文件系统类型root=/dev/nfs表示使用 NFS 作为根文件系统
nfsroot=NFS 根目录路径192.168.1.3:/home/linux/nfs/rootfs,nfsvers=3服务器 IP + 共享目录 + 协议版本
ip=开发板 IP 地址192.168.1.100配置开发板静态 IP
init=指定初始化进程init=/linuxrc启动第一个用户程序(通常是/linuxrc
setenv bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.3:/home/linux/nfs/rootfs, nfsvers=3 ip=192.168.1.100 init=/linuxrc

5.启动内核

bootz 0x80800000 - 0x83000000

七、总结

类别变量功能
网络ipaddr,serverip,ethaddr配置网络连接
TFTPtftp 0x... zImage下载内核镜像
启动参数bootargs传给内核的启动选项
根文件系统root=/dev/nfs,nfsroot=...指定 NFS 根目录
初始化init=/linuxrc指定第一个用户进程

七、附录:U-Boot 常用命令速查

help # 查看支持命令 printenv # 查看环境变量 setenv name value # 设置环境变量 saveenv # 保存环境变量到 Flash tftp addr filename # 通过 TFTP 下载文件 bootz addr ramdisk_size size # 启动压缩内核
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 22:44:14

【金融项目实战】4_金融项目 _测试流程

文章目录一、项目测试流程1.1 UI功能测试1.2 接口测试二、测试步骤2.1 需求评审2.2 测试计划2.2.1 测试对象2.2.2 测试准则2.2.3 风险来源2.2.4 人员安排2.2.5 测试实施2.3 设计用例2.4 执行用例2.5 缺陷管理2.5.1 提交方式2.5.2 面试题2.6 测试报告一、项目测试流程 1、需求评…

作者头像 李华
网站建设 2026/4/14 7:08:43

lsblk是什么linux命令

slblk 不是标准的 Linux 命令。您可能是指以下命令之一: 可能的拼写混淆 表格 复制 命令全称功能描述lsblkList Block Devices最可能的意图 - 列出所有块设备(硬盘、分区、USB 等)blkidBlock ID显示块设备的 UUID、文件系统类型等信息blo…

作者头像 李华
网站建设 2026/4/12 22:18:51

lsblk -a磁盘上的新空间如何扩容加到磁盘上

场景一:虚拟机/云服务器磁盘扩容(最常见) 1. 确认新空间已识别 bash 复制 lsblk -a # 或查看详细容量变化 lsblk -fb 2. 扩容分区(以 /dev/sda 为例,假设根分区是 /dev/sda3) 方法 A:使用…

作者头像 李华
网站建设 2026/4/10 0:26:02

<span class=“js_title_inner“>AI 基础概念全景指南</span>

📖 写在前面人工智能(AI)正在重塑我们的世界。从 ChatGPT 到自动驾驶,从医疗诊断到艺术创作,AI 无处不在。但对于初学者来说,AI 领域充满了复杂的概念:机器学习、深度学习、神经网络、Transform…

作者头像 李华
网站建设 2026/4/4 18:53:06

这篇一次讲透!MWORKS 2026a亮点全集

发布概览 历经五年持续的工程实践与打磨,CPS一体化平台已经成型。全新发布的MWORKS 2026a 实现从“功能可替代”到“工程可承载”的跃迁,3大基础环境焕新升级、21个产品大幅更新,新增6个工具箱 / 模型库,合计达40个工具箱含5600函…

作者头像 李华
网站建设 2026/4/12 1:27:29

建议收藏!大模型核心概念全面解析,程序员小白入门必备

想转AI产品经理,但一看术语就头大,什么Token、Embedding、RLHF、Temperature……这都是啥? 说实话,这些词确实唬人。培训机构恨不得每个概念单独开一门课卖你钱,技术文章又写得跟论文似的,看完更懵。今天老…

作者头像 李华