仓酷云
标题:
来看看:Linux 2.4内核下的initrd.img机制剖析
[打印本页]
作者:
仓酷云
时间:
2015-1-16 11:10
标题:
来看看:Linux 2.4内核下的initrd.img机制剖析
不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令。
1.甚么是initrd
initrd的英文寄义是bootloaderinitializedRAMdisk,就是由bootloader初始化的内存盘。在linux内核启动前,bootloader会将存储介质中的initrd文件加载到内存,内核启动时会在会见真实的根文件体系前先会见该内存中的initrd文件体系。在bootloader设置了initrd的情形下,内核启动被分红了两个阶段,第一阶段先实行initrd文件体系中的某个文件,完成加载驱动模块等义务,第二阶段才会实行真实的根文件体系中的/sbin/init历程。
2.Linux2.4内查对initrd的处置流程
Linux2.4内核的initrd的格局是文件体系镜像文件initrd.img,罕见的文件体系格局为EXT2。
linux2.4内查对initrd的处置流程以下:
1)bootloader把内核和/dev/initrd的内容加载到内存,/dev/initrd是由bootloader初始化的设备,存储着initrd。
2)在内核初始化过程当中,内核把/dev/initrd设备的内容解紧缩并拷贝到/dev/ram0设备上。
3)内核以可读写的体例把/dev/ram0设备挂载为原始的根文件体系。
4)假如/dev/ram0被指定为真实的根文件体系,那末内核跳至最初一步一般启动。
5)实行initrd上的/linuxrc文件,linuxrc一般是一个剧本文件,卖力加载内核会见根文件体系必需的驱动,和加载根文件体系。
6)/linuxrc实行终了,真实的根文件体系被挂载。
7)假如真实的根文件体系存在/initrd目次,那末/dev/ram0将从/挪动到/initrd。不然假如/initrd目次不存在,/dev/ram0将被卸载。
8)在真实的根文件体系长进行一般启动历程,实行/sbin/init。
linux2.4内核的initrd的实行是作为内核启动的一其中间阶段,也就是说initrd的/linuxrc实行今后,内核会持续实行初始化代码。
3.initrd文件的创立及修正
传统initrd的制造历程对照烦琐,必要以下六个步骤
#假定以后目次位于筹办好的initrd文件体系的根目次下
/*初始化内存文件体系块*/
bash#ddif=/dev/zeroof=../initrd.imgbs=512kcount=5
/*创立文件体系*/
bash#mkfs.ext2-F-m0../initrd.img
/*挂载新文件体系*/
bash#mount-text2-oloop../initrd.img/mnt
/*拷贝文件体系所需的/bin、/dev等目次文件*/
bash#cp-r*/mnt
/*卸载文件体系*/
bash#umount/mnt
/*打包为.gz格局*/
bash#gzip../initrd.img
为了复杂起见,我们次要针关于完成关于现有体系中initrd.img文件机制的修正:
体系中的initrd.img文件年夜多位于/boot目次下,此文件为initrd.gz的标记链接。
为完成修正,我们起首将initrd.gz拷贝到用户目次下。
gunzipinitrd.gz解压后天生initrd的文件
fileinitrd可知,initrd:Linuxrev1.0ext2filesystemdata
为了检察其文件内容,mount-oloopinitrd/mnt/initrd(想要挂载的目次,可恣意选择)
cd/mnt/initrd,接上去就可以检察initrd内存文件体系中的内容了
其文件体系的中心事情流程为linuxrc的剧本文件,此剧本完成以下功效:
1)挂载体系启动所必需的设备驱动
2)挂载真实的文件体系
这个时分,我们就可以够对此文件体系举行必需的修正了,假如设置完全的话,在这里也可以构成不亚于Linux的一个新体系呢。。
修正完后,umount/mnt/initrd,所作修正就可以够保留进initrd的文件中
gzipinitrd,天生新的initrd.gz文件
创立软毗连new.initrd.img
修正lilo大概grub的启动项,使之失效
reboot后,就可以启动新的initrd文件体系了
4.nashcommand
nash是initrd中的命令注释器,次要为了运转/linuxrc剧本,其经常使用命令有:
echo:将字符串输入到尺度输入,只是功效上没有体系内里echo那末多。
find:显现指定路径下所婚配称号的文件,即只撑持linux体系里find命令中的-name参数。
losetup:将文件帮定到回环设备/dev/loopdev上
mkdevices:指定创立的块设备文件寄存路径,如:mkdevices/dev
mknod:创立设备文件
mkrootdev:创立根文件体系的设备节点,依据内核传送参数傍边的“root=”来创立对应当设备的节点,节点的称号是/dev/root,它不但可以依据root=/dev/xxx来天生对应的设备节点,还可以在碰着root=LABEL=/的情形下探测一切的硬盘分区,以便找到对应着卷标为/的分区。
pivot_root<newroot><oldroot>:把挂载在<newroot>下的文件体系当做新的/文件体系,而以后的/文件体系被挪动到<oldroot>下
raidautorun:主动检测一切的raid设备
showlabe
12下一页
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
作者:
仓酷云
时间:
2015-1-16 12:30
标题:
来看看:Linux 2.4内核下的initrd.img机制剖析
网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup
ls:显现设备的LABEL和UUIDsw</P> itchroot:与pivot_root功效相似,用于转换根文件体系。但只能用于2.6或今后的内核
</p>
上一页12
无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。
作者:
飘飘悠悠
时间:
2015-1-18 15:34
对于英语不是很好的读者红旗Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。
作者:
若天明
时间:
2015-1-27 07:15
感谢老师和同学们在学习上对我的帮助。
作者:
不帅
时间:
2015-2-5 06:05
如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。
作者:
小魔女
时间:
2015-2-11 07:45
现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。
作者:
老尸
时间:
2015-3-2 01:01
安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果Linux说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。
作者:
只想知道
时间:
2015-3-11 02:03
学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]
作者:
兰色精灵
时间:
2015-3-17 19:09
编程学习及开发,Linux是免费,开源的操作系统,并且可开发工具相当多,如果您支持自由软件,一定要同广大热爱自由软件人士一同为其不懈努力。
作者:
金色的骷髅
时间:
2015-3-24 22:12
写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2