bootargs概要介绍
在U-Boot启动过程中,bootargs是传递给Linux内核的一个关键参数,它包含了内核启动时所需要的各种配置选项。U-Boot通过设置环境变量bootargs来指定这些启动参数。
bootargs的作用
bootargs的作用是将内核启动所需的参数传递给内核,通常包括以下内容:
- **根文件系统(Root Filesystem)**的路径及类型。
- 内核启动时的设备信息,比如CPU架构、内存、串口等。
- 调试信息,例如内核启动时输出的日志级别、串口设置等。
- 其他驱动或功能的启用/禁用配置。
常见的bootargs参数格式
bootargs一般以空格分隔多个键值对,常见的启动参数包括:
-
根文件系统:
root=/dev/mmcblk0p2: 指定根文件系统所在的分区,这里假设根文件系统位于/dev/mmcblk0p2(比如SD卡的第二个分区)。rootfstype=ext4: 指定根文件系统的类型,这里是ext4。
-
根文件系统的挂载方式:
rootwait: 在根文件系统未准备好时,内核会等待直到设备准备好。
-
启动模式和控制台配置:
console=ttyS0,115200: 配置内核的控制台,表示使用串口ttyS0,波特率为115200。console=tty1: 指定内核使用tty1作为控制台,通常用于显示登录界面。
-
内核调试:
quiet: 关闭大部分内核启动时的日志输出,减少调试信息。loglevel=3: 设置内核日志级别,3表示普通的错误日志输出。
-
内存配置:
mem=512M: 指定内核可用的内存大小,通常用于调试或内存受限的环境。
-
CPU架构信息:
arch=arm: 用于指定CPU架构,arm表示ARM架构的处理器。
-
其他内核选项:
earlyprintk: 启用早期内核打印功能,用于调试早期启动过程。
-
驱动相关配置:
rootdelay=10: 根文件系统设备启动延迟时间,通常用来等待存储设备的初始化。
-
网络配置:
ip=dhcp: 启动时自动获取IP地址,通常用于通过网络启动(比如TFTP)。
配置bootargs
U-Boot会根据环境变量bootargs来传递这些参数给Linux内核,通常的步骤是:
-
通过
setenv命令设置bootargs变量。- 例如,在U-Boot命令行中输入:
setenv bootargs "root=/dev/mmcblk0p2 rootfstype=ext4 console=ttyS0,115200 rootwait"
- 例如,在U-Boot命令行中输入:
-
在U-Boot中启动内核时,U-Boot会将
bootargs传递给内核,通常是通过bootm或bootz命令将bootargs的内容传递给内核。- 例如,使用:
其中bootm ${kernel_addr} - ${fdt_addr}kernel_addr是内核镜像的加载地址,fdt_addr是设备树文件的加载地址。
- 例如,使用:
传递给内核的参数
内核在启动时会解析这些bootargs参数,并根据参数的值来配置系统。例如,内核会根据root=参数找到根文件系统,使用console=参数配置控制台输出,利用mem=参数设置内存。
小结
bootargs是一个非常重要的环境变量,用于在启动过程中向Linux内核传递关键配置参数。通过在U-Boot中正确设置bootargs,可以影响内核的启动行为、调试输出、文件系统挂载、控制台配置等多个方面。在嵌入式开发中,理解并灵活配置这些参数,对于调试和优化启动过程至关重要。
如何查看u-boot的环境变量bootargs的内容是什么?
在U-Boot的命令行界面,可以使用printenv命令查看所有环境变量,包括bootargs。执行以下命令会输出当前设置的bootargs值:
printenv bootargs
我对我的1号开发板运行命令printenv bootargs,结果如下:

这说明并没有设置这个环境变量。
如何设置u-boot的环境变量bootargs
可以使用setenv命令来设置u-boot的环境变量,比如下面这条命令:
setenv bootargs "console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
但是要注意,由于u-boot的运行机制,很有可能你这个设置会无效,具体的原因见博文 https://blog.youkuaiyun.com/wenhao_ir/article/details/145902134 【搜索关键词“而不是直接去修改环境变量”】
如何保存自己设置的环境变量值
参看博文 https://blog.youkuaiyun.com/wenhao_ir/article/details/145902134 【搜索“如何对修改后的环境变量进行保存”】
2336

被折叠的 条评论
为什么被折叠?



