initial ram disk
1 什么是initial ram disk
它就是一个做好了的文件系统,其存储空间是ram。在kernel启动的第一个阶段,会被mount成根文件系统。
2 为什么需要initial ram disk
第一,为了保证kernel image的大小,因此把modules放在initial ram disk中存放。在系统启动的时候再动态加载;
第二,为了对真正装载了根文件系统的外部存储设备进行初始化,等其完全可用了,再把根文件系统切换过去。要让根文件系统能够正常工作起来,必须要准备好环境,然后mount它。
3 linux启动时必须要initial ram disk吗?
也可以用initramfs。
4 debian启动时需要initial ram disk吗?
需要。
5 initrd.img里面的内容
5.1 用户空间使用的一些工具f
比如/bin、/sbin下面的命令等。
5.2 initrd.img的解压
这是一个gzip文件,所以用gzip命令解压,gzip -cd >initrd.ext2
这里-c是把输出重定向到标准输出,d是decompress。
然后生成的initrd.ext2是一个cpio文件,直接用cpio -i <initrd.ext2就可以了。
解压的第二种方法:
zcat initrd.img | cpio -id
5.3 一些内核中的模块
动态链接库,比如libm.so.6、librt.so.1等。
6 为自己的内核制作initrd.image
6.1 命令
制作一个根文件系统的目录结构,里面放入各种需要的文件。然后执行下面的命令:
find . | cpio -H newc --create | gzip -9 > ../initrd.img
6.2 创建最简单的initrd.image
这个initrd.image中只有两个文件:
/dev/console和init文件。
6.2.1 创建myinit
创建文件myinit.c
#include <stdio.h>
int main()
{
printf ("\n");
printf ("hello world from %s!\n", __FILE__);
while (1) {}
return 0;
}
gcc -static myinit.c -l myinit
6.2.2 创建目录结构并且生成initrd.image.gz文件
mkdir initrd
mkdir initrd/sbin
cp myinit initrd/sbin/init
cd initrd
fakeroot
mkdir -p dev
mknod dev/console c 5 1
chown -R root sbin
genext2fs -d . -b 1024 ../initrd.image
exit
cd ..
cat initrd.image | gzip > initrd.image.gz
mv initrd.image.gz initrd.image
使用initial ram disk的时候,要显式的指定root device,即在kernel command line上显式的指定"root=/dev/ram0",否则启动的时候会出错。
使用该ext2类型的image时,编译内核时要打开对ext2文件系统的支持,否则识别不了。
initial ram disk的更多相关文章
- 借助 RAM disk 技术,加快前端工程打包速度
背景以 Jenkins 服务器为例,在构建内部的这个项目时,CE 每部署一次服务,最快 6 分钟,最慢将近 13 分钟左右.遇到多个项目并发打包会因为资源占用等问题时间会延长,甚至出现过几次 20 分 ...
- RAM disk
Linux 系统创建RAM disk 参考: https://blog.csdn.net/linuxdashencom/article/details/52319671 https://www.lin ...
- initial ram filesystem
1 制作最简单的initramfs 1.1 创建init #include <stdio.h> int main() { printf ("\n"); printf ( ...
- uboot环境配置
uboot环境配置 通过配置uboot让它在启动过程中从tftp获取内核和设备树,并从在加载内核之后把通过启动参数将"从nfs挂载根文件系统"传入内核.这个配置主要是通过uboot ...
- Fedora 24中的日志管理
Introduction Log files are files that contain messages about the system, including the kernel, servi ...
- Linux之RHEL6的开机流程分析
开机——很多人觉得很简单的事情,只要按下电源开关,然后系统就会自然启动,没有什么需要学习的.其实不然,如果系统没有什么问题,可以正常登陆的时候,当然开机很简单.但更多的时候,我们需要知道当机子不能正常 ...
- kvm
硬件,os,内核模块,用户空间工具,命令行具体参数,日志 [root@localhost ~]# yum install pciutils [root@localhost ~]# lscpu;lspc ...
- Linux Default Bootup、Startup、Autoload Configuration file(自启动服务脚本)
目录 . Linux初始化init系统 . Linux配置文件自动加载过程 1. Linux初始化init系统 Linux初始化init系统在不同操作系统系列下的区别 . RHEL : SysVini ...
- devices-list
转自:https://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt LINUX ALLOCATED DEVICES ...
随机推荐
- 色码表 Color code table
最近打算更新设计博客页面,需要用到CSS色码表,查了一些资料现转载此处以备以后使用,点击此处查看原文,另外还发现了几个不错的网站: color-hex HTML颜色代码 色碼表 色碼表英文為 Colo ...
- 一次ORA-01555问题分析,及SQL优化。
前言 客户说: 我在数据库上继续运行昨日的脚本,但发现有个子过程在运行10个小时后报错: 烦请协助看看... 错误码是:ORA-01555: snapshot too old: rollback se ...
- Volume 1. Sorting/Searching(uva)
340 - Master-Mind Hints /*读了老半天才把题读懂,读懂了题输出格式没注意,结果re了两次. 题意:先给一串数字S,然后每次给出对应相同数目的的一串数字Si,然后优先统计Si和S ...
- Sublime text 3搭建Python开发环境及常用插件安装 转载
Sublime text 3搭建Python开发环境及常用插件安装 一.环境准备 1.官方网站地址 2.Windows 10 3.Sublime Text 3 + 官网购买license(Just a ...
- Data of Ch5 --Dual rotor
* Results *Conclusion*- little effect of rear rotor on Cp_1- Cp1 is independent of TI** TI effect on ...
- ASP.NET MVC的帮助类HtmlHelper和UrlHelper
在ASP.NET MVC框架中没有了自己的控件,页面显示完全就回到了写html代码的年代.还好在asp.net mvc框架中也有自带的HtmlHelper和UrlHelper两个帮助类.另外在MvcC ...
- 如何使用JDK1.6 API
如何使用JDK1.6 API-------https://jingyan.baidu.com/article/54b6b9c0e39a102d583b47d5.html
- <<编程之美>> -- 队列中取最大值操作的问题
不得不说编程之美是一本好书,虽然很多题目在做acm中的过程中遇到过,不过还是有很多值得思考的地方 这是今天在编程之美上看到的一个问题,对于栈转化成队列的一个思考 平时都太过依赖c++内函数库中的栈和队 ...
- 【NOIP2017练习】怎样更有力气(二分答案,线性扫描)
题意:OI大师抖儿在夺得银牌之后,顺利保送pku.这一天,抖儿问长者:“我虽然已经保送了,但我的志向是为国家健康工作五十年.请问我应该怎样变得更有力气?” 长者回答:“你啊,Too Young T ...
- VS调试STL问题总结
---恢复内容开始--- 以前写代码总觉用自己写的东西比较牛逼,vector?stack?为什么不自己实现.后来才认识到这是个幼稚的想法!首先每次都自己实现是一种重复劳动:其次,自己写的话很难保证没有 ...