Ramdisk 大小——内核配置或启动参数?

Ramdisk 大小——内核配置或启动参数?

我需要使用 ramdisk 将文件系统作为 ramfs挂载到嵌入式设备上。但是,这需要我增加 ramdisk 的大小 - 目前根据内核配置,最大大小为 35MB。我可以修改启动参数,但可能无法重新编译内核。

我发现解决了 ramdisk 创建的问题。但是,我不确定两个都 CONFIG_BLK_DEV_RAM_SIZE并且需要更改启动参数。我是否可以通过仅更改启动参数来创建大小为 40MB 的 ramdisk?ramdisk= ramdisk_size=ramdisk= ramdisk_size=

编辑:如果有帮助,描述我试图启动并运行的 ramdisk。

答案1

Kconfig 或启动时选项都可以。但是,选项名称不再是ramdisk=。根据文档/blockdev/ramdisk.txt,您可以使用以下任一方式更改大小:

  • 选项ramdisk_size=,或
  • 选项brd.rd_size=

驱动程序/块/brd.c

无符号长整型 rd_size = CONFIG_BLK_DEV_RAM_SIZE;
模块参数(rd_size,ulong,0444);
MODULE_PARM_DESC(rd_size, "每个 RAM 磁盘的大小(以 KB 为单位)");

[...]

/* 传统启动选项 - 非模块化 */
静态 int __init ramdisk_size(char *str)
{
    rd_size = simple_strtol(str, NULL, 0);
    返回1;
}
__setup(“ramdisk_size=”,ramdisk_size);

你可以看到 Kconfig 值仅用于初始化rd_size变量,并且brd.rd_size=40960ramdisk_size=40960将完全覆盖它并将大小设置为 40 MB。

相关内容