由 无线电子 于 星期四, 06/11/2009 - 14:14 发表
在安装新内核的时候,通常都会编辑lilo.conf 和grub.conf 文档。里面有一段“initrd=/boot/initrd.gz”(其实就是initrd.img)的我们都很少会注意到,有时候还会发现这一行不要也能够正常开机。那这个initrd.gz究竟是用来干什么的呢?
其实initrd.gz是个映像文档,类似ramdisk,把一段程式打包到img里,然后在开机的时候在内存里开辟一段区域,一般是2m,释放到那里运行,都是一些初始化的程式,比如sisc_mod、ext3、sd_mod等模块和insmod、nash等命令。不同内核初始化的img能够相同,也能够不同,假如没有,能够在grub.conf里加上no initrd,他就跳过initrd的检测和执行了,以前似乎就没有,后来才有的。
他的作用是在没有mount /分区以前,系统要执行一些操作,比如挂载scsi驱动,他就把initrd释放到内存里,作一个虚拟的/,然后执行其根目录下的一个脚本"linuxrc",运行insmod和nash命令挂装模块。为什么有的时候我们在lilo或grub的配置文档中不加入该行都能够正常开机呢?这是因为我们一般的PC机都没有使用scsi硬盘等需要先加载其驱动的设备,所以就算没有initrd***.img也能够正常开机。