linux kernel CMDLINE初始化

本文介绍了如何向Linux Kernel添加CMDLine参数,包括通过DTS的bootargs、Kernel配置以及从bootloader获取参数。详细阐述了不同方式的实现过程,并以uboot为例展示了CMDLine参数的传递机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cmdline是由bootloader传给kernel,如uboot,将需要传给kernel的参数做成一个tags链表放在ram中,将首地址传给kernel,kernel解析tags来获取cmdline等信息。

向linux kernel中添加cmdline有下面三种方式:

1、 在dts中的bootargs中添加,CONFIG_MIPS_CMDLINE_FROM_DTB

/ {
    chosen {
        name = "chosen";
        bootargs = "rd_start=0x8B992000 rd_size=0x2000000 root=/dev/ram0 rootfstype=squashfs ro init=/init console=ttyS0,115200N8 earlycon=uart8250,mmio,0x18018300,115200n8 no_console_suspend";
        bootargs_recover = "rd_start=0x8B992000 rd_size=0x2000000 root=/dev/ram0 rootfstype=squashfs ro init=/init console=ttyS0,115200N8 earlycon=uart8250,mmio,0x18018300,115200n8 no_console_suspend";
        stdout-path = "serial0:115200n8";
        mtdids = "nand0=NAND_flash@0";
.

.
    };
};

2.直接在kernel config中定义cmdline;

//待更新

3.从bootloader arg中获取(uboot/bootloader),CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER

### Linux 系统硬件初始化过程 #### 宏观理解与学习路径 对于Linux系统的硬件初始化,建议先从宏观角度了解其工作原理再逐步深入细节[^1]。这有助于建立整体概念框架。 #### 启动阶段概述 当计算机开机时,BIOS/UEFI会执行自检并加载引导程序(bootloader),之后由引导程序负责加载操作系统内核镜像至内存中。一旦内核被加载完毕,便开始了真正的硬件检测与初始化流程。 #### 内存子系统初始化 针对DDR3这样的外部存储器,在基于ARM架构如Cortex-A系列处理器上,由于片上SRAM容量有限无法满足需求,因此需要额外连接DDR3 RAM芯片作为主存扩展[^3]。这部分操作通常是在U-Boot等固件层完成初步配置后再交给Linux内核处理更复杂的设置。 #### 文件系统挂载前准备 在进入用户空间之前,内核还需要确保根文件系统能够正常访问。为此,`systemd-remount-fs.service`会在适当时候介入,依据`/etc/fstab`描述的信息调整初始只读模式下的根分区属性为可读写形式,并应用必要的挂载选项比如`rw`, `noatime`等等[^2]。 ```bash cat /proc/cmdline ``` 上述命令可以查看启动参数,其中可能包含了有关临时ramdisk(`initrd`)以及rootfs的相关信息。 #### 设备树支持 现代嵌入式平台普遍采用设备树(Device Tree, DT)机制来描述硬件资源布局情况给内核知晓。DTB文件会被传递给正在启动中的kernel以便后者据此枚举各类外围组件并实施相应的驱动匹配动作。 ```c #include <linux/of.h> struct device_node *np; for_each_child_of_node(root_node, np){ //遍历节点... } ``` 这段伪代码展示了如何利用API函数迭代解析device tree结构体内的各个成员项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值