initrd镜像文件的作用与制作
2013-04-02 00:54
316 查看
转 http://joecen.yourblog.org/logs/188655.html
我 们在安装新内核的时候,通常都会编辑lilo.conf 和grub.conf 文件。
里面有一段“initrd=/boot/initrd-***.img”(其中的***表示内核的版本号)的我们都很少会注意到,有时候还会发现这 一行不要也可以正常开机。那这个initrd***.img究竟是用来干什么的呢?
其实initrd***.img是一个镜像文件,类似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也可以正常开机。但是如果我们要在服务器 上为其编译新内核那就一定不要忘记也为其新建一个initrd文件呀!
好,下面来看看如何查看initrd***.img里面的内容和如何为你的新内核创建一个新的initrd.img文件。
查看initrd.img: initrd***.img虽然后缀是“img”,但其实它是一个gz格式的文件,我们可以先把它解压,然后载挂装到目录下:
1、cp initrd.img initrd.gz
2、gunzip initrd.gz
3、mount -o loop initrd /mnt/floppy 进入/mnt/floppy目录,
我们就可以看到initrd***.img文件的庐山真面目了。
制作initrd文件 当我们编译了一个新的内核,也不要忘了为我们的scsi设备做一个新的initrd镜像:
语法: mkinitrd 文件名 内核的目录名
示例: mkinitrd initrd-2.4.19.img 2.4.19 initrd-2.4.19.img
文件名是自己任意取的,但最好对应自己的内核版本号。
2.4.19是在/lib/modules中的目录名,对应内核的版本。 当然,我们也可以在挂装了initrd***.img文件后直接添加模块到/lib目录中,然后修改linuxrc脚本让其开机进行挂装。但必须具备一定 的shell脚本的能力才行。
我 们在安装新内核的时候,通常都会编辑lilo.conf 和grub.conf 文件。
里面有一段“initrd=/boot/initrd-***.img”(其中的***表示内核的版本号)的我们都很少会注意到,有时候还会发现这 一行不要也可以正常开机。那这个initrd***.img究竟是用来干什么的呢?
其实initrd***.img是一个镜像文件,类似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也可以正常开机。但是如果我们要在服务器 上为其编译新内核那就一定不要忘记也为其新建一个initrd文件呀!
好,下面来看看如何查看initrd***.img里面的内容和如何为你的新内核创建一个新的initrd.img文件。
查看initrd.img: initrd***.img虽然后缀是“img”,但其实它是一个gz格式的文件,我们可以先把它解压,然后载挂装到目录下:
1、cp initrd.img initrd.gz
2、gunzip initrd.gz
3、mount -o loop initrd /mnt/floppy 进入/mnt/floppy目录,
我们就可以看到initrd***.img文件的庐山真面目了。
制作initrd文件 当我们编译了一个新的内核,也不要忘了为我们的scsi设备做一个新的initrd镜像:
语法: mkinitrd 文件名 内核的目录名
示例: mkinitrd initrd-2.4.19.img 2.4.19 initrd-2.4.19.img
文件名是自己任意取的,但最好对应自己的内核版本号。
2.4.19是在/lib/modules中的目录名,对应内核的版本。 当然,我们也可以在挂装了initrd***.img文件后直接添加模块到/lib目录中,然后修改linuxrc脚本让其开机进行挂装。但必须具备一定 的shell脚本的能力才行。
相关文章推荐
- initrd镜像文件的作用与制作
- initrd镜像文件的作用与制作
- initrd镜像文件的作用
- initrd镜像文件的作用
- linux下制作镜像文件
- 制作根文件系统的EXT2镜像文件
- hi3531 SDK已编译文件系统制作jffs2文件系统镜像并解决这个问题 .
- UltraISO镜像文件の制作
- 磁盘镜像文件的制作
- 嵌入式 制作文件系统的JFFS2镜像
- 教你如何制作镜像文件
- 制作initrd(3):/etc/initramfs-tools/modules配置文件分析
- linux用dd工具制作img镜像文件
- Linux编程中*.so库文件的神奇作用,武师傅说学学怎么制作库文件!
- 用mkfs.jffs2 命令制作jffs2镜像文件 (转)
- 如何制作镜像文件并推送到本地镜像仓库
- 制作initrd.img文件
- mac下制作iso光盘映像文件/镜像文件
- hi3531 SDK已编译文件系统制作jffs2文件系统镜像并解决问题 . 分类: arm-linux-Ubuntu HI3531 2014-06-18 08:45 951人阅读 评论(0) 收藏
- linux下制作软盘镜像文件