LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3208|回复: 2

怎样查看initrd.img文件

[复制链接]
发表于 2007-5-13 10:40:32 | 显示全部楼层 |阅读模式
看到这样的文章

以下引用:
“initrd-x.x.x.img文件分析-制作安装程序不支持的根文件系统

grub007
2003年08月26日13:30分  北京

1、initrd img文件分析
Linux不能启动的很多原因都直接或者间接与initrd-x.x.x.img文件有关系,以我的系统为例(具有通用性):initrd-2.4.21-AS.2smp.img,为多CPU内核。
我不打算详细分析LINUX的具体启动过程,这样的文章网上很多,只是说说initrd-x.x.x.img文件的作用:initrd-x.x.x.img主要是加载文件系统及scsi设备的驱动。
等我们看完了initrd-x.x.x.img文件包含的具体的内容就知道了:

initrd-x.x.x.img首先是一个用gzip压缩的文件,因为内核里包含解压缩的代码,这主要是为了制作启动盘,因为启动盘只有1.44M,这个文件的原始大小
是2.9M左右,压缩后大概3、4百K。这个文件使用mkinitrd命令产生。
要看到initrd-x.x.x.img里面的内容,首先是解压该文件,由于gunzip解压的文件有扩展名要求,所以:
mv initrd-x.x.x.img initrd-x.x.x.img.gz
gunzip initrd-x.x.x.img.gz
这样得到一个解压过后的img文件:
[root@localhost root]# file initrd-2.4.21-AS.2smp.img
initrd-2.4.21-AS.2smp.img: Linux rev 1.0 ext2 filesystem data
然后可以mount该文件了:
mount -o loop initrd-2.4.21-AS.2smp.img /mnt/floppy/
到/mnt/floppy/看看:
[root@localhost root]# cd /mnt/floppy/
[root@localhost floppy]# ls
bin  dev  etc  lib  linuxrc  loopfs  proc  sbin  sysroot
这是大家熟悉的LINUX根目录的部分列表,其中主要目录的列表如下:
bin:
[root@localhost bin]# ls
insmod  modprobe  nash
这些文件是用来加载模块,nash用来执行脚本linuxrc ;

dev:
[root@localhost dev]# ls
console  null  ram  systty  tty1  tty2  tty3  tty4
是一些主要的设备;

lib:
[root@localhost lib]# ls
ips.o  jbd.o  scsi_mod.o  sd_mod.o  xfs.o
这是系统启动前必需要加载的模块,因机器不同而不同;

其他目录是空的

下面看看linuxrc这个脚本的内容:(行号是自己添加的)

1   #!/bin/nash
2   echo "Loading scsi_mod.o module"
3   insmod /lib/scsi_mod.o
4   echo "Loading sd_mod.o module"
5   insmod /lib/sd_mod.o
6   echo "Loading ips.o module"
7   insmod /lib/ips.o
8   echo "Loading jbd.o module"
9   insmod /lib/jbd.o
10 echo "Loading xfs.o module"
11 insmod /lib/xfs.o
12 echo Mounting /proc filesystem
13 mount -t proc /proc /proc
14 echo Creating block devices
15 mkdevices /dev
16 echo Creating root device
17 mkrootdev /dev/root
18 echo 0x0100 > /proc/sys/kernel/real-root-dev
19 echo Mounting root filesystem
20 mount -o defaults --ro -t xfs /dev/root /sysroot
21 pivot_root /sysroot /sysroot/initrd
22 umount /initrd/proc


我做出来的是:

--------------------------------------------------------------------------------zjc@zjc:~$file initrd.img
initrd.img: gzip compressed data, from Unix, last modified: Thu May  3 00:10:38 2007, max compression
--------------------------------------------------------------------------------zjc@zjc:~$gunzip -S .img initrd.img
--------------------------------------------------------------------------------zjc@zjc:~$file initrd
initrd: ASCII cpio archive (SVR4 with no CRC)
--------------------------------------------------------------------------------zjc@zjc:~$



然后cpio怎么也解压缩不出来?求解。我的是 initrd.img-2.6.18-4-686
发表于 2007-5-13 12:02:00 | 显示全部楼层
cpio -id <initrd
回复 支持 反对

使用道具 举报

发表于 2007-5-13 16:26:39 | 显示全部楼层
用cpio小心哈,注意不要从根下展开,把你系统重要文件覆盖了
回复 支持 反对

使用道具 举报

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

本版积分规则

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