uboot引导kernel
时间: 2025-01-03 20:27:39 浏览: 11
### U-Boot 引导 Linux 内核教程和配置方法
#### 准备工作
为了成功使用 U-Boot 来引导 Linux 内核,需要准备几个关键文件:设备树二进制 (Device Tree Blob, dtb),内核镜像 (通常是 zImage 或 uImage),以及根文件系统映像。这些文件通常由开发板制造商提供或通过编译源码获得。
#### 加载内核到内存
U-Boot 提供命令来加载内核和其他必要的组件至 RAM 中。对于大多数平台而言,可以利用 `tftp` 命令从 TFTP 服务器下载所需文件;也可以采用 SD 卡或其他存储介质上的 `fatload` 或者 `ext4load` 等命令读取本地文件[^1]。
```bash
=> tftpboot ${kernel_addr_r} zImage
=> tftpboot ${fdt_addr_r} imx6ul-var-som.dtb
```
上述命令假设环境变量 `${kernel_addr_r}` 和 `${fdt_addr_r}` 已经被设置为合适的地址空间位置用于存放内核和 DTB 文件。
#### 设置启动参数
在实际执行 bootm 指令之前,还需要定义传递给新操作系统的一些重要参数,比如 rootfs 的路径、控制台输出端口等。这可以通过修改 `bootargs` 变量实现:
```bash
=> setenv bootargs console=ttymxc0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait
```
这里指定了串行终端作为调试接口,并告知内核在哪里寻找根文件系统及其挂载选项。
#### 执行 Bootm 操作
当所有准备工作完成后,就可以调用 `bootm` 指令完成最终的引导过程了。该指令会按照指定顺序解析并运行先前加载好的各个部分——首先是解压后的压缩内核映像,接着是初始化 ramdisk(如果有),最后则是应用特定于硬件平台描述符即 device tree blob:
```bash
=> bootm ${kernel_addr_r} - ${fdt_addr_r}
```
此命令中的连字符 `-` 表明没有额外的 initrd/initramfs 需要处理。
---
阅读全文