网站大量收购独家精品文档,联系QQ:2885784924

initrd映像文档的作用和制作.pptx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
initrd 映像文档的作用和制作 我们在安装新内核的时候,通常都会编辑 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、guzip 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 脚本的能力才行。;[root@linuxsir001 boot]# ll initrd.img lrwxrwxrwx 1 root root 19 5 月 24 13:46 initrd.img - initrd-2.4.20-8.img 也能够用下面的命令 new-kernel-pkg --mkinitrd --depmod --install 2.4.20-8 这个命令执行的结果是会生成 intrd 文档,也会自动改/etc/grub.conf 或 lilo.conf,这样就一步到位使新内核生效。; 然后复制到/boot: cp /usr/src/linux/System.map /boot/System.map-2.4.7-10 下图是System.map 文档的一部分: 在进行程式设计时,会命名一些变量名或函数名之类的符号。Linux 内核是个很复杂的代码块,有很多的全局 符号。 Linux 内核不使用符号名,而是通过变量或函数的地址来识别变量或函数名。比如不是使用 size_t BytesRead 这 样的符号,而是像c0343f20 这样引用这个变量。 对于使用电脑的人来说,更喜欢使用那些像 size_t BytesRead 这样的名字,而不喜欢像c0343f20 这样的名字。 内核主要是用 c 写的,所以编译器/连接器允许我们编码时使用符号名,当内核运行时使用地址。 然而,在有的情况下,我们需要知道符号的地址,或需要知道地址对应的符号。这由符号表来完成,符号表是 任何符号连同他们的地址的列表。上图就是个内核符号表,由上图可知变量名 checkCPUtype 在内核地址c01000a5。 Linux 符号表使

文档评论(0)

万寿无疆 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档