initrd 剖析

本文详细介绍了在不同Linux版本下如何创建和查看initrd文件,从FedoraCore3之前的loop设备方法到FC3及以后版本的cpio归档文件方式,并通过清单展示了具体操作步骤和默认目录结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


根据我们运行的 Linux 的版本不同,创建初始 RAM磁盘的方法也可能会有所不同。在 Fedora Core 3 之前,initrd 是使用 loop设备 来构建的。loop 设备是一个设备驱动程序,利用它可以将文件作为一个块设备挂载到系统中,然后就可以查看这个文件系统中的内容了。在您的内核中可能并没有 loop设备,不过这可以通过内核配置工具(make menuconfig)选择 Device Drivers > Block Devices> Loopback Device Support 来启用。我们可以按照下面的方法来查看 loop 设备的内容(initrd文件的名字可能会稍有不同):

清单 1. 查看 initrd 的内容(适用于 FC3 之前的版本)

  mkdir temp ; cd temp
  cp /boot/initrd.img.gz .
  gunzip initrd.img.gz
  mount -t ext -o loop initrd.img /mnt/initrd
  ls -la /mnt/initrd
  现在我们就可以查看 /mnt/initrd 子目录中的内容了,这就代表了 initrd文件的内容。注意,即使您的 initrd 映像文件不是以 .gz 结尾,它也可能是一个压缩文件,您可以给这个文件添加上 .gz后缀,然后再使用 gunzip 对其进行解压。
  从 Fedora Core 3 开始,默认的 initrd 映像变成了一个经过压缩的cpio 归档文件。我们不用再使用 loop 设备来将 initrd 作为压缩映像进行挂载,而是可以将其作为 cpio 归档文件来使用。要查看cpio 归档文件的内容,可以使用下面的命令:
  清单 2. 查看 initrd 的内容(适用于 FC3 及其以后的版本)
  mkdir temp ; cd temp
  cp /boot/initrd-2.6.14.2.img initrd-2.6.14.2.img.gz
  gunzip initrd-2.6.14.2.img.gz
  cpio -i --make-directories < initrd-2.6.14.2.img
  结果会生成一个很小的根文件系统,如清单 3 所示。在 ./bin 目录中有一组很少但却非常必要的应用程序,包括 nash(即 not a shell,是一个脚本解释器)、insmod(用来加载内核模块)和 lvm(逻辑卷管理工具)。
  清单 3. 默认的 Linux initrd 目录结构
  ls -la
  drwxr-xr-x 10 root root 4096 May 7 02:48 .
  drwxr-x--- 15 root root 4096 May 7 00:54 ..
  drwxr-xr-x 2 root root 4096 May 7 02:48 bin
  drwxr-xr-x 2 root root 4096 May 7 02:48 dev
  drwxr-xr-x 4 root root 4096 May 7 02:48 etc
  -rwxr-xr-x 1 root root 812 May 7 02:48 init
  -rw-r--r-- 1 root root 1723392 May 7 02:45 initrd-2.6.14.2.img
  drwxr-xr-x 2 root root 4096 May 7 02:48 lib
  drwxr-xr-x 2 root root 4096 May 7 02:48 loopfs
  drwxr-xr-x 2 root root 4096 May 7 02:48 proc
  lrwxrwxrwx 1 root root 3 May 7 02:48 sbin -> bin
  drwxr-xr-x 2 root root 4096 May 7 02:48 sys
  drwxr-xr-x 2 root root 4096 May 7 02:48 sysroot
  #
  清单 3 中比较有趣的是 init 文件就在根目录中。与传统的 Linux 引导过程类似,这个文件也是在将 initrd 映像解压到 RAM 磁盘中时被调用的。在本文稍后我们将来探索这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值