码迷,mamicode.com
首页 > 其他好文 > 详细

内核的ramdisk

时间:2018-02-14 00:18:33      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:模块名   命名   指定   name   generate   modules   切换   位置   img   

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

内核的ramdisk

标签:模块名   命名   指定   name   generate   modules   切换   位置   img   

原文地址:https://www.cnblogs.com/shenxm/p/8447740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!