LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: georgek

initrd 有什麼用?[附原理详解]

[复制链接]
发表于 2004-7-25 21:46:10 | 显示全部楼层
home_king兄真是够专业精神,
脚本太复杂,还看不懂。
发表于 2004-7-25 21:57:44 | 显示全部楼层
最初由 aaccdd 发表
home_king兄真是够专业精神,
脚本太复杂,还看不懂。

呵呵,不是脚本,而是内核的C源码。
发表于 2004-7-26 02:29:50 | 显示全部楼层
为home_king兄加油!很少看到如此专业的文章!赞!

关于内核初始化时根内存盘的加载过程,偶也找到一篇相关文档,
贴于内核讨论区:
http://www.linuxsir.cn/forum.php?mod=viewthread&tid=128469

各位有空看看。(偶对内核源码也很想深入研读,但总是太忙,太懒。。先搁着吧,呵呵!)

关于initrd文件是否重要,偶觉得主要还是内核备份时才体现出来,内核不能很大,要小到什么程度呢?当然是能让一张软盘能容得下(不能超过1.4M吧?呵呵!)
问题出在很多Linux服务器上运行着SCSI设备,磁盘阵列,千兆网卡等等一古脑设备,如果将上述设备驱动也一古脑编译进内核,很可能就造成内核大小超过一张软盘的容量了,这时就该是initrd文件用上场的时候!


      剖析initrd.img

      如果你是用SCSI硬盘启动,内核必须能装入SCSI驱动程序才能转入你的硬盘根文件系统引
      导系统。
      如果你的内核没有编译进SCSI驱动程序,则需要用mkinitrd创建RAM驱动映像

      想知道你的initrd.img中包含了哪些驱动程序吗?

      cat initrd.img | gunzip > /tmp/myinitrdfs
      mkdir /mnt/tmp
      mount -o loop -t ext2 /tmp/myinitrdfs /mnt/tmp

      然后查看/mnt/tmp中的文件linuxrc中的内容即可知道启动时会装入哪些驱动程序

      你也可以更改其中的内容,假设我们想加另一种SCSI驱动aic7xxx.o进入你的initrd.img

      cd /mnt/tmp
      vi linuxrc 加上一行 insmod /lib/aic7xxx.o
      cp /lib/modules/`uname -r`/scsi/aic7xxx.o lib/

      cd /

      umount /mnt/tmp
      dd if=/tmp/myinitrdfs | gzip > /boot/initrd2.img

      至此,新的initrd文件initrd2.img就包含了aic7xxx的驱动程序了。




如何给工作的系统做LILO(grub)和内核的软盘备份就不多谈了。论坛上有相关的贴子。


蓝色文字引用下面联接:

http://i18n.linux.net.cn/others/BackUp_Fix_LILO.php
发表于 2004-7-26 02:52:20 | 显示全部楼层
最初由 Hauser 发表
我也没有System.map。虽然有initrd但却是bootsplash的东西,似乎并非大家所说的那个initrd;我试了下注释掉grub里initrd那行,启动正常,只是没有bootsplash而已。



你试试不将ext3编进内核,再注释掉grub里initrd那行,启动还能正常吗?!
发表于 2004-7-26 09:25:51 | 显示全部楼层
嗯。有一点大家要注意,新内核提供的内核模块自动加载不是在内核初始化过程即内核态中使用的,而是在用户态进行的(比如说,你要挂载一个ntfs盘,那么内核自动加载ntfs模块),因为要在内核态加载模块,前提是内核必须确定好根文件系统,而确定根文件系统又必须要支持相应的文件系统如ext2,这就是自举的逻辑哲学问题了,所以一定要把相应的文件系统编译进内核才行!


我个人认为,研究内核一定要有方向才能成功。当今的Linux内核很庞大,源码系统可谓盘根错乱,不容易读懂,当针对某一方面来研究,比如说中断系统,显然能事半功倍。

ps:我希望大家在使用Linux系统的空余时间,可以多研读一下内核源码,提高理论层次,知其然而知其所以然。另外,我们现在的内核版区还无人管理,大家努力!:cool:
发表于 2004-7-26 09:57:07 | 显示全部楼层
学习中...
发表于 2004-7-26 17:07:45 | 显示全部楼层
补图,请fish兄将它替换到上面帖子的缺图之处。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2005-1-23 13:15:13 | 显示全部楼层
终于知道什么叫牛X
我要到什么时候才能看懂这张帖
回复 支持 反对

使用道具 举报

发表于 2005-3-1 14:44:52 | 显示全部楼层
看了一下大虾介绍的原理,也想听大虾介绍如何按需定制一个符合自己系统的initrd映像。
回复 支持 反对

使用道具 举报

发表于 2006-8-13 21:15:51 | 显示全部楼层
大虾啊!太专业了!其它论坛难找这么好的文章!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表