内核的ramdisk
程序员文章站
2022-07-23 23:26:19
ramdisk ramdisk文件的制作: mkinitrd ......
ramdisk
内核中的特性之一,使用缓冲和缓存来加速对磁盘上的文件访问,并加载相应的硬件驱。 ramdisk --> ramfs,提高速度 CentOS 5: initrd 工具程序:mkinitrd CentOS 6 ,7: initramfs 工具程序:mkinitrd, dracut ramdisk在系统初始化中的位置: POST --> BootSequence (BIOS) -->Bootloader(MBR) --> kernel(ramdisk) --> rootfs( 只读) --> init (systemd)
ramdisk文件的制作:
ramdisk文件: /boot/initramfs-2.6.32-696.el6.x86_64.img 这个文件是个gzip压缩文件,解压后是个cpio归档ASCII文档,展开归档文件后发现这里面其实是些类似根文件系统的目录结构,所以我们称为虚拟根目录。 同时可以看到在sbin目录下有个二进制程序叫作switch_root,这个程序功能就是从虚拟的根目录切换到真正磁盘上的根目录。 展开这个文件: cp -a initramfs-2.6.32-696.el6.x86_64.img /root/initramfs-2.6.32-696.el6.x86_64.img.gz mkdir initramfs mv initramfs-2.6.32-696.el6.x86_64.img.gz initramfs gunzip initramfs-2.6.32-696.el6.x86_64.img.gz cpio -id < initramfs-2.6.32-696.el6.x86_64.img 制作ramdisk文件 1.为正在使用的内核重新制作ramdisk文件: mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) or dracut /boot/initramfs-$(uname -r).img $(uname -r) 2.将一堆文件打包制作成ramdisk文件: 在对应的文件目录下执行find 和cpio组合命令进行归档 find . |cpio -o -H --quiet > /boot/myramdisk.img 对归档后的文件进行gzip压缩 gzip /boot/myramdisk.img.gz 重命名压缩文件 mv /boot/myramdisk.img.gz /boot/myramdisk.img
mkinitrd
mkinitrd - is a compat wrapper, which calls dracut to generate an initramfs 用于建立呀载入ramdisk的镜像文件。 mkinitrd [OPTION...] [<initrd-image>] <kernel-version> mkinitrd [-fv][--omit-scsi-modules][--version][--preload=<模块名称>][--with=<模块名称>][映像文件][Kernel 版本] -f 若指定的映像问家名称与现有文件重复,则覆盖现有的文件。 -v 执行时显示详细的信息。 --omit-scsi-modules 不要载入SCSI模块。 --preload=<模块名称> 指定要载入的模块。 --with=<模块名称> 指定要载入的模块。 --version 显示版本信息。 --nocompress 不压缩结果镜像. ex: mkinitrd /boot/initramfs-3.10.0-693.el7.x86_64.img 3.10.0-693.el7.x86_64