内核的ramdisk
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的更多相关文章
- 内核与ramdisk到底是什么关系
转自:http://www.lupaworld.com/forum.php?mod=viewthread&tid=61425 原名:内核与ramdisk到底是什么关系? 个人Notes: ...
- 0.11内核rd_load@ramdisk.c中memcpy函数好像有bug
0.11内核rd_load@ramdisk.c中memcpy函数好像有bug,如:#define memcpy(dst,src,n) \ __asm__("cld;rep;movsl& ...
- 内核移植和文件系统制作(3)Ramdisk简介和常见问题
一,Ramdisk简介: Ramdisk是一种基于内存的虚拟文件系统(并非一个实际的文件系统),它将一部分固定大小(这个大小在编译内核的make menuconfig时配置)的内存当作硬盘一个分区来使 ...
- 从ramdisk根文件系统启动Linux成功,及使用initramfs启动linux
下面两篇文章是ARM9论坛上的讲解ramdisk文件系统的很不错的文章 今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下. 其中涉及的内容较多,很多东西不再详述 ...
- 从ramdisk根文件系统启动Linux 二
今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下.其中涉及的内容较多,很多东西不再详述,如需深入研究请查阅相关资料(百度或谷歌一下一大堆). 开发环境:Fedo ...
- Ramdisk文件系统的制作与调试运行
开发环境:Fedora 9交叉编译工具链:arm-linux-gcc 4.3.2 with EABI嵌入式Linux内核版本:2.6.29.4-FriendlyARM.昨天写贴子的时候具体记不清了,今 ...
- Debian编译内核
转自 yuzibo博客 http://yuzibo.github.io/DebianBuildKernel.html 最终成功一次了 之前又一次编译了好多次.可惜没有一次成功的,说实话.借助Debia ...
- 内核调试工具 — kdump & crash
kdump简介 kdump是系统崩溃的时候,用来转储运行内存的一个工具. 系统一旦崩溃,内核就没法正常工作了,这个时候将由kdump提供一个用于捕获当前运行信息的内核, 该内核会将此时内存中的所有运行 ...
- ramdisk文件系统制作
1. 确保内核支持ramdisk启动.2. 创建根文件系统(应用busybox或拷贝现有文件系统).3. 利用脚本mkroot.sh创建内核镜像:root.img.gz.4. uboot通过t ...
随机推荐
- 第七章习题G题
题意 给出如图案例,要你从某一点开始走,一直走到极限(即无法再进行扩展),这时你走过的点会连成一个数,不同的走法当然会有不同的数,要求是输出最大的数(注意每个方块走过一次就不能再走) 思路 •1.枚举 ...
- [luoguP3390]【模板】矩阵快速幂
传送门 模板不解释. ——代码 #include <cstdio> #include <cstring> #define LL long long int n; LL k; ; ...
- 主席树初探--BZOJ2588: Spoj 10628. Count on a tree
n<=100000的点权树,有m<=100000个询问,每次问两个点间的第k小点权,保证有解,强制在线. 主席上树啦!类似于之前的序列不带修改询问的前缀表示法,现在只要把前缀当成某点到根的 ...
- EditText实时监测内容
editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequ ...
- codevs——1031 质数环
1031 质数环 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 一个大小为N(N<=17 ...
- Minimum Depth of Binary Tree(二叉树DFS)
Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...
- mysql的时间戳说白了就俩问题,自动更新问题和不自动更新问题
mysql的时间戳timestamp说白了就俩问题,自动更新问题和不自动更新问题
- Dell PowerEdge RAID Controller (PERC) | Dell
Dell PowerEdge RAID Controller (PERC) The Dell™ PERC (PowerEdge™ RAID Controller) fami ...
- C#.NET 如何在系统变量中加入新的环境变量
比如我要将C:\Windows\Microsoft.NET\Framework\v3.5这个目录加入环境变量 则在系统的环境变量中点击Path,编辑,然后加入一个分号";",然后粘 ...
- C# .NET using ManagementObjectSearcher提示缺少引用怎么办
在下图中,即使引用了System.Management还是会出现报错 其实只要添加这条引用就可以了