Linux initrd机制与代码优化相关技术咨询
Linux initrd 机制技术问题
我正在研究Linux initrd机制,研读了如下内核代码:
bool __init initrd_load(void) { if (mount_initrd) { create_dev("/dev/ram", Root_RAM0); /* * Load the initrd data into /dev/ram0. Execute it as initrd * unless /dev/ram0 is supposed to be our actual root device, * in that case the ram disk is just set up here, and gets * mounted in the normal path. */ if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) { init_unlink("/initrd.image"); handle_initrd(); return true; } } init_unlink("/initrd.image"); return false; } int __init rd_load_image(char *from) { // ... out_file = filp_open("/dev/ram", O_RDWR, 0); in_file = filp_open(from, O_RDONLY, 0); // ... for (i = 0; i < nblocks; i++) { // ... kernel_read(in_file, buf, BLOCK_SIZE, &in_pos); kernel_write(out_file, buf, BLOCK_SIZE, &out_pos); // ... } // ... }
目前我了解到ramdisk内容会从/initrd.image读取到/dev/ram设备(一种RAM模拟磁盘),现提出以下技术问题:
/dev/ram和/initrd.image的file_operations实现位于何处?/dev/ram设备后续如何使用?我未找到其他使用该设备的位置。- 上述逻辑中内容先从
/initrd.image读取再写入/dev/ram,存在两次内存拷贝,能否移除一次以提升启动性能?
问题解答
1. file_operations实现位置
/dev/ram:对应内核的RAM磁盘驱动,其file_operations结构体ramdisk_fops定义在drivers/block/ramdisk.c中,包含open、release、read、write等核心操作的实现。/initrd.image:该文件是启动阶段加载到内存的initrd镜像,早期通过rootfs文件系统访问,rootfs的file_operations定义在fs/rootfs/inode.c中。实际读取时,会直接关联到内核启动时加载镜像的内存区域,底层通过内存直接访问完成,核心逻辑绑定在initrd初始化流程中。
2. /dev/ram设备的后续使用
rd_load_image完成镜像写入后,后续逻辑在handle_initrd()中展开:
- 系统会将
/dev/ram(实际对应/dev/ram0)挂载为临时根文件系统,执行initrd中的init程序,完成硬件驱动加载、根文件系统切换等初始化任务。 - 当initrd的
init执行完毕,系统会切换到真正的根文件系统,此时/dev/ram会被卸载,除非用户手动重新挂载,否则内核不会再主动使用它。 - 如果
ROOT_DEV被指定为Root_RAM0,/dev/ram会直接作为系统的永久根文件系统,所有后续文件操作都基于这个RAM磁盘。
3. 移除内存拷贝的可行性
可以通过优化减少一次内存拷贝,核心思路如下:
- 直接将
/initrd.image对应的内存区域映射到/dev/ram的内存空间,跳过中间缓冲区的kernel_read和kernel_write操作——因为/initrd.image本身已经在内存中,无需额外读取到临时缓冲区。 - 现代Linux内核中,initrd通常以
initramfs形式存在,它直接打包进内核镜像,启动时直接挂载内存中的文件系统,完全避免了这类拷贝操作。 - 针对传统initrd机制,可修改
rd_load_image函数,直接获取/initrd.image的内存地址和大小,调用RAM磁盘驱动的直接内存写入接口,跳过中间拷贝。不过这种修改需要适配RAM磁盘驱动的内部接口,确保内存地址的合法性和对齐要求。
内容的提问来源于stack exchange,提问作者doexcellence
相关产品推荐
相关产品推荐

