Loading AI tools
Linux作業系統開機早期時載入的臨時根檔案系統 来自维基百科,自由的百科全书
Initrd ramdisk或者initrd是指在启动阶段被Linux内核调用的临时文件系统,用于根目录被挂载之前的准备工作。[1]
同其他Unix系统,Linux首先要将内核加载到内存。initrd通常被压缩成gzip类型,开机时由bootloader(如LILO、GRUB)来告知核心initrd的位置,使其被核心访问,挂载成一个loop类型的文件。在2.6版本内核之后出现了initramfs,它的功能类似initrd,但是它基于CPIO格式,无须挂载就可以展开成一个文件系统。
initramfs是initrd的替代品。initrd是一个被加载的块设备,内部有ext2一类文件系统的存在,于是由于Linux内核的缓存机制,其中的内容还会被缓存到内存上,造成一定的内存空间浪费。而initramfs本身就是一个tmpfs的RAM disk,拥有最小化的设计,绕过了缓存机制,也消除了多余的内存占用。[2]
initramfs的生成方式也远比initrd简单。对于initramfs,只需 geninitramfs() { cd "$1"; find . -depth| cpio -o -H newc | ${3-cat}> "$2"; }
就可以利用cpio生成这样一个文件,同时使用一些程序进行压缩(通过额外的管道实现,其中使用cat仅用于无压缩时转发输出,可省去)。对于initrd,则涉及生成一定大小的空文件,然后创建文件系统,挂载并添加文件等等诸多步骤。
Linux内核 与 initrd/initramfs 必须存储在 bootloader 可以访问的位置,通常是在:
bootloader 会将内核与 initrd 加载到存储器中并将 initrd 的地址传给内核。initrd会被挂载当成 initial root file system。
现在的 Linux 发行版会建立定制只包含必要组件的 initrd 映像档,例如只包含 IDE、SCSI、SATA、SAS 以及文件系统核心模块。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.