欢迎来到天天文库
浏览记录
ID:28446465
大小:78.04 KB
页数:6页
时间:2018-12-10
《initrd镜像文件的作用与制作》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、initrd镜像文件的作用与制作initrd镜像文件的作用与制作转自:http://hi.baidu.com/9linux/blog/item/9e81f49bf400a9b2c9eaf49e.html转http://joecen.yourblog.Org/logs/188655.html我们在安装新内核的时候,通常都会编辑lilo.conf和grub.conf文件。里面有一段“initrd=/boot/initrd-***.img”(其中的***表示内核的版本号)的我们都很少会注意到,有时候还会发现这一行不要也可以正常开机。那这个
2、initrd***.img宄竟是用来干什么的呢?其实initrd***.img是一个镜像文件,类似ramdisk,把一段程序打包到img里,然后在开机的时候在内存里开辟一段区域,一般是2m,释放到那里运行,都是一些初始化的程序,比如sisc_mod、ext3、sd_mod等模块和insmod、nash等命令。不同内核,初始化的img可以相同,也可以不同,如果没有,可以在grub.conf里加上noinitrd,它就跳过initrd的检测和执行了,以前好像就没有,后来才有的。它的作用是在没有mount/分区以前,系统要执行一些操作,比
3、如挂载scsi驱动,它就把initrd释放到内存里,作一个虚拟的/,然后执行其根目录下的一个脚本"linuxrc",运行insmod和nash命令挂装模块。为什么有的时候我们在lilo或grub的配置文件中不加入该行都可以正常开机呢?这是因为我们一般的PC机都没有使用scsi硬盘等需要先加载其驱动的设备,所以就算没有initrd***.img也可以正常开机。但是如果我们要在服务器上为其编译新内核那就一定不要忘记也为其新建一个initrd文件呀!好,下面来看看如何查看initrd***.img里面的内容和如何为你的新内核创建一个新的i
4、nitrd.img文件。查看initrd.img:initrd***.img虽然后缀是“img”,但其实它是一个gz格式的文件,我们可以先把它解压,然后载挂装至
5、J目录下:1、cpinitrd.imginitrd.gz2、gunzipinitrd.gz3、mount-oloopinitrd/mnt/floppy进入/mnt/floppy目录,我们就可以看到initrd***.img文件的庐山真面目了。制作initrd文件当我们编译了一个新的内核,也不要忘了为我们的scsi设备做一个新的initrd镜像:语法:mkinitrd文件名内
6、核的目录名示例:mkinitrdinitrd-2.4.19.img2.4.19initrd-2.4.19.img文件是自己任意取的,但最好对应自己的内核版本号。2.4.19是在川b/modules中的目录名,对应内核的版本。当然,我们也可以在挂装了initrd***.img文件后直接添加模块到川b目录中,然后修改linuxrc脚本让其开机进行挂装。但必须具备一定的shell脚本的能力才行。Linux下的Initrd映像文件初探byfalcon<zhangjinw@gmail.com>2008-04-19如果自己制作过嵌入
7、式Linux文件系统,那么应该比较了解initrd映像文件是个什么东西了?initrd即initialRAMdisk,在内核解压之后,在真正的rootfilesystem被启动之前,它被加载到内存中,做一些系统初始化的操作,比如加载内核模块,挂载新的root文件系统等[1,2]oinitrd本身是一个文件,内核启动时可以把它展开成一个文件系统。在2.6版本的内核以前,initrd基于一种特殊的loop设备[4],在展开成一个文件系统前需要通过一种loop设备挂载起来,因为涉及到挂载操作,所以会涉及到一些操作权限。不过在2.6版本内核
8、之后出现了initramfs,它和initrd实现同样的功能,但是它基于一种cpio档,无须挂载就可以展开成一个文件系统,因此省去了各种相关的权限,在自动化方面更方便了[2,3]oinitrd的一个特别有趣的应用是LiveCD,比如Knoppix[6],它通过initrd启动一个初始化的文件系统,然后再通过一个Cloop设备冋挂载一个特别的压缩文件,展开为一个新的Root文件系统,这样一个700M左右的光盘就能够装下几个G的东西,包含大部分的软件和相应的内核模块,进而支持各种各样的功能。下面简单介绍一下这两种初始化文件系统(init
9、rd和initramfs)的制作过程。先准备一个测试的目录。$cd/tmp$mkdirinitrd$mkdirinitrd/loopinitrd/cpio
此文档下载收益归作者所有