Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1183325
  • 博文数量: 232
  • 博客积分: 7563
  • 博客等级: 少将
  • 技术积分: 1930
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-21 11:17
文章分类

全部博文(232)

文章存档

2011年(17)

2010年(90)

2009年(66)

2008年(59)

分类: LINUX

2010-12-26 16:55:12

1、initrd.img文件:

参考:  和

        

1) 什么是initrd?
   initrd的英文含义是 boot loader initialized RAM disk,即由bootloader初始化的内存盘。在linux内核启动前,bootloader会将存储介质中的initrd文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的initrd文件系统。在bootloader配置了initrd的情况下,内核启动被分成了两个阶段:第一个阶段先执行initrd文件系统中的“某个文件”,完成加载驱动模块等任务;第二个阶段才会执行真正的根文件系统中的/sbin/init进程。

  第一阶段启动的目的是为第二阶段的启动扫清一切障碍,最主要的是加载根文件系统存储介质的驱动模块,根文件系统可以存储在包括IDE、SCSI、USB在内的多种介质上,如果将这些设备的驱动都编译进内核,可以想象内核会多么庞大、臃肿。

 

2)initrd的本质:

initrd.img是一个gzip和 cpio双重打包的文件,如果你把他解开就会发现,其实它包含了一个微型的根文件系统:

--------------------------------------------------------
mkdir /myinitrd
cd /myinitrd
cp /boot/initrd.img-2.6.22-14-generic  .
zforce  *
gunzip initrd.img-2.6.22-14-generic.gz
cpio -i -F initrd.img-2.6.22-14-generic
ls
---------------------------------------------------------
可以看到,该目录下包含了一些bin命令目录,etc脚本目录及lib模块目录等等。内核在启动的时候,会将initrd.img-2.6.22-14-generic解压到内存,建立一个临时的用户环境,利用这些工具处理一些必须在这个阶段完成的任务,如加载根设备驱动等等。

重新打包可以这样做:

---------------------------------------------------------
find . | cpio -o -H newc | gzip -9 > ../initrd.gz
---------------------------------------------------------
ubuntu上建议用户使用update-initramfs来维护和生成initrd.img,高级用户可以使用mkinitramfs在内核编译完成后得到该文件。以前的标准工具mkinitrd似乎不再被使用。其实这些工具就是一些脚本。

我们可以通过grub或者lilo给内核传递参数,告诉它应该使用哪一个initrd.img文件:

---------------------------------------------------------
initrd /boot/initrd.img-2.6.22-14-generic
---------------------------------------------------------
2、System.map文件:
参考
 
赵炯编译的文章-《System.map文件的作用》 几乎把什么都说了,我就这里做个摘要吧
1)System.map是在编译内核的时候自动生成的(在内核编译目录下),由于编译器,内核版本,编译平台等因素,每次编译后的System.map都会不同。
2)内核本身并不使用System.map
3)所谓内核符号就是变量、函数名等等,它们在内核中的地址可能是这样的:c03441a0
4)klogd之类的程序使用System.map将内核消息中的地址转换成符号名,以方便人们理解
5)/proc/ksyms在2.6内核中换成了/proc/kallsyms,在内核初始化时创建,是当前内核实时的符号-地址表
6)应用程序如klogd,会自动在相应目录寻找System.map

 

 

 

阅读(1157) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~