多语言展示
当前在线:1204今日阅读:11今日分享:19

玩弄Ubuntu的RAM Disk镜像

在Linux发行版操作系统中,OS启动后一般会先加载RAM Disk,该文件一般是保存在/boot目录下,启动器GRUB在启动时会去加载并运行它,最后才加载使用我们的根文件系统,对于该文件,我们将如何探索呢?
工具/原料
1

装Ubuntu操作系统的电脑

2

lsinitramfs工具

3

gzip工具

4

cpio工具

5

file工具

方法/步骤
1

通过file命令可以得知相应的文件格式为:

2

xinu@slam:~$ file /boot/initrd.img-3.13.6

3

/boot/initrd.img-3.13.6: gzip compressed data, from Unix, last modified: Thu Mar 27 20:19:38 2014

4

可以看到是GZIP文件,我们对其解压:

5

xinu@slam:~$ gzip -d /boot/initrd.img-3.13.6

6

gzip: initrd.img-3.13.6: unknown suffix -- ignored

7

按提示是后缀的问题,那么接下来复制一份并修改下文件名:

8

xinu@slam:~$ cp /boot/initrd.img-3.13.6 initrd.img.gz

9

修改文件名后再次解压:

10

xinu@slam:~$ gzip -d initrd.img.gz

11

解压出来的文件是initrd.img,还被包了一层,我们看下它是什么内涵:

12

xinu@slam:~$ file initrd.img

13

initrd.img: ASCII cpio archive (SVR4 with no CRC)

14

原来是cpio格式的,我们先创建一个目录:

15

xinu@slam:~$ mkdir initrd

16

再进入该目录:

17

xinu@slam:~$ cd initrd/

18

再次解压:

19

xinu@slam:~/initrd$ cpio -i < ../initrd.img

20

此时会有如下内容输出:

21

1038959 blocks

22

成功了,我们接下来看看解压出来的是什么?

23

xinu@slam:~/initrd$ ls

24

bin  conf  etc  init  lib  lib64  run  sbin  scripts

25

OK,我们终于看到了initrd.img的真面目了。

26

这也太麻烦了,有时候我不想解压,我只是想知道里面有什么文件,这要怎么办?

27

那么在Ubuntu下,我发现了有lsinitramfs这一命令,该命令如何使用呢?

28

且看HELP:

29

xinu@slam:~/initrd$ lsinitramfs --help

30

Usage: lsinitramfs

31

那么这命令也太简单了吧,我们试试看吧:

32

xinu@slam:~$ lsinitramfs /boot/initrd.img-3.13.6

33

此时一片狂刷而过,没事,我们可以使用管道和more:

34

xinu@slam:~$ lsinitramfs /boot/initrd.img-3.13.6 | more

35

此时看得舒服多了,只需按“空格”或“Enter”来按页或按行刷了。

36

但我们仅仅看到完成的路径和文件名,属性呢?

37

lsinitramfs还可以带-l参数,可以查看到完整的属性,相当于ls加上-l参数后的效果。

38

更详细的帮助信息可以使用man lsinitramfs命令查看。END

推荐信息