如何确定我的内核是否使用 initramfs?

lin*_*tar 6 initramfs

我正在Debian wiki 上阅读Wake on Lan ,其中有一部分说:

如果您的内核使用 initramfs 映像(例如 Debian 库存内核),还可以运行update-initramfs -u(或update-initramfs -u -k all如有必要)重建内核初始 ramdisk。

如何确定我的内核是否使用 initramfs?

我安装了 LMDE v2,64 位,Mate。

mur*_*uru 4

虽然简洁,但 mikeserv 本质上是正确的 - Linux 已经使用了initramfs很长时间,从 2.6 天开始。如果您使用 GRUB(假设您有默认的 LMDE 安装,那么您会使用 GRUB),然后签出/boot/grub/grub.cfg

$ grep initr /boot/grub/grub.cfg 
    initrd  /boot/initrd.img-3.13.0-53-generic
    initrd  /boot/initrd.img-3.13.0-53-generic
    initrd  /boot/initrd.img-3.13.0-52-generic
    initrd  /boot/initrd.img-3.13.0-52-generic
    initrd  /boot/initrd.img-3.13.0-24-generic
    initrd  /boot/initrd.img-3.13.0-24-generic
Run Code Online (Sandbox Code Playgroud)

尽管名称是initrd,但它是一个initramfs存档,您可以通过initramfs作为 CPIO 存档来测试它:

$ file - < /boot/initrd.img-3.13.0-24-generic
/dev/stdin: gzip compressed data, from Unix, last modified: Tue Sep 30 20:07:43 2014
$ gunzip < /boot/initrd.img-3.13.0-24-generic | file -
/dev/stdin: ASCII cpio archive (SVR4 with no CRC)
Run Code Online (Sandbox Code Playgroud)

(镜像的名称initramfs取决于发行版。例如,Arch Linux 简单地称之为initramfs-linux.img。)

  • 这不仅仅是典型的 - initramfs 是一个文件系统。大多数内核附带的映像在启动时被解压到该文件系统中。如果没有外部映像文件,那么是因为所需的映像已经编译到内核本身中。在这两种情况下,内核都会在启动时将其第一个根目录挂载为 initramfs。从 2.6 内核系列开始就是这种情况 - 从那时起它就成为每个 Linux 内核的要求。 (2认同)
  • 出色地。是和否 - 它不是文件系统的映像,因为 initramfs 是一个文件系统,而 initrd 是放置在 ram 磁盘(块开发)上的文件系统映像。但 initramfs 基本上是 tmpfs - 它是 fs 缓存的化身 - 因此根本没有底层块层,并且 initramfs 映像 *(或者说归档可能更正确)* 可以只是一个简单的 cpio 流归档。但我的观点是外部存档/图像文件或没有 - initramfs 不是可选的。 (2认同)