博客
关于我
详解linux的initrd
阅读量:326 次
发布时间:2019-03-04

本文共 1416 字,大约阅读时间需要 4 分钟。

作者: easylife

在Linux操作系统中,内核支持初始化内存盘(INITRD)技术,同时也支持压缩的文件系统映像。通过这两项功能,我们可以实现从小型内存盘启动Linux系统,并利用系统内存的一部分作为根文件系统挂载。

Ramdisk是将内存的一部分作为硬盘使用的功能。在编译内核时,需要在块设备中选择Ramdisk的支持选项。其中,default number of RAM disks默认设置为16,default RAM disk size (kbytes)默认为4096k。如果需要使用initrd功能,还需在内核配置中选择相应的支持。

内核配置路径如下:

Linux Kernel Configuration > Device Drivers > Block devices > RAM block device support

在编译内核时,可以通过以下命令行参数配置Ramdisk的大小:ramdisk_sizeramdisk,默认块大小为1024字节。当Ramdisk以模块形式加载时,可以通过模块参数rd_sizerd_blocksize进行设置。

在启动时,如果Ramdisk直接编译进内核,可通过grub配置文件设置参数如ramdisk=8192来指定Ramdisk大小。例如,设置为8M时,可在grub.conf中添加相应配置。若Ramdisk以模块形式加载,则需在etc/modules.conf中添加参数options rd rd_size=8192,并在加载时使用insmod rd rd_size=8192

创建initrd ramdisk映像需要先格式化Ramdisk并加载文件系统。以ext2文件系统为例,可通过以下步骤制作initrd:

1. 格式化Ramdisk:mkfs.ext2 /dev/ram0

2. 挂载并复制文件:mount /dev/ram0 /mnt/rdcp /your/files /mnt/rd

3. 将Ramdisk内容备份到文件:dd if=/dev/ram0 of=/tmp/initrd

4. 压缩initrd文件:gzip -9 /tmp/initrd

或者通过loop设备制作initrd:

1. 创建空白文件:dd if=/dev/zero of=/tmp/initrd bs=1024 count=4096

2. 映射到loop设备:losetup /dev/loop0 /tmp/initrd

3. 格式化文件系统:mkfs.ext2 /dev/loop0

4. 挂载并复制文件:mount /dev/loop0 /mnt/rdcp /your/files /mnt/rd

5. 卸载并删除loop设备:umount /mnt/rdlosetup -d /dev/loop0

6. 压缩initrd文件:gzip -9 /tmp/initrd

此外,还可以使用cpio格式制作initrd。通过以下命令可以实现:

cd /path/to

find . |cpio -o -H newc |gzip -c > ../initrd.gz

以上方法均可生成适合内核启动的initrd映像。通过合理配置Ramdisk大小和文件系统类型,可以根据实际需求优化系统性能。例如,当需要更大容量的Ramdisk时,可以通过修改内核配置或模块参数实现。

转载地址:http://tjpq.baihongyu.com/

你可能感兴趣的文章
Nginx配置TCP代理指南
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NI笔试——大数加法
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
查看>>
NR,NF,FNR
查看>>
nrf开发笔记一开发软件
查看>>
NSDateFormatter的替代方法
查看>>
NSSet集合 无序的 不能重复的
查看>>
ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
查看>>
nullnullHuge Pages
查看>>
numpy 用法
查看>>
Numpy如何使用np.umprod重写range函数中i的python
查看>>
oauth2-shiro 添加 redis 实现版本
查看>>
OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
查看>>
OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
查看>>
OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
查看>>
OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
查看>>