郑州到首尔怎么去:initrd

来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 19:15:19
 

initrd

维基百科,自由的百科全书跳转到: 导航, 搜索 此条目需要补充更多来源(2007年6月)
请协助添加来自可靠来源的引用以改善这篇条目。无法查证的内容会被提出异议而移除。

Initrd ramdisk或者""initrd""是指一个临时文件系统,它在启动阶段被 Linux 内核调用。initrd主要用于当 “根”文件系统被挂载之前,进行准备工作。

目录

[隐藏]
  • 1 基本原理
  • 2 initramfs 与 initrd
  • 3 End-user implementation
  • 4 参考
  • 5 更多链接

[编辑] 基本原理

同其他Unix系统一样,Linux操作系统首先要将内核引导入内存。内核驻留于操作系统与应用程序的整个活动周期,其中应用程序(软件)在“用户空间”内运行,位于内核控制之下。

为了使加载内存最小化,一些核心 Linux 程式转化成模组形式,可以动态加载系统中。

initrd 系统中的档案在开机阶段可以被核心存取,里面的内容会被挂载成一个 loop 型态的档案,早期是将 initrd 放在小的软碟片内。initrd 通常被压缩成 gzip 类型,在开机的时候由 bootloader(LILO, GRUB) 来告知核心 initrd 的位置。

[编辑] initramfs 与 initrd

[编辑] End-user implementation

核心与 initrd 必须储存在 bootloader 可以存取的位置,通常是在:

  • root 档案系统内
  • 一个小的 ext2 或 FAT 格式的分割区(通常挂载到 /boot)
  • TFTP server 内(系统必须使用网络开机)

bootloader 会将核心与 initrd 加载内存中并将 initrd 的位址传给核心,在开机的最后核心会试着去决定 initrd 的格式

如果 initrd 是档案系统的映像档,则将会被当一个特殊的区块档案(/dev/ram),会被挂载当成 initial root file system, 这个档案系统格式的驱动程式会被静态连结到核心内,许多发行版使用 ext2 格式的 initrd 档案系统,也有些发行版(Debian 3.1)使用 cramfs 格式在一些内存受限的系统上,因为 cramfs 格式被挂载并不需要解压缩。一但 initial root file system 建立,则核心会用 /sbin/init 去执行 /linuxrc 当成第一个程序。在 initramfs 中,核心执行 /init script 当成第一个程序。

有一些 Linux 发行版将会建立客制化只包含必要元件的的 initrd 映像档,例如只包含 ATA, SCSI以及档案系统核心模组。

有一些 Linux 发行版(例如 Fefora 或 Ubuntu)会建立较一般化的 initrd,他们会用装置档来启动档案系统(或是使用 UUID),大部分的装置都在开机阶段来做寻找,如此,开机会造成较复杂的开机挂载档案系统过程:

  • 任何硬件驱动程式的加载与否是在开机时期来决定,一般的作法是将常见的储存装置的核心模组放在 initrd,接着呼叫 hotplug 来决定加载侦测到的硬件所对应的驱动程式。
  • 若是档案系统采用 NFS 方式:
    • 启动主要的网络接口
    • 启动 DHCP 客户端,取得 DHCP lease
    • 取得 NFS server 的位址
    • 挂载 NFS 档案系统
  • 大部分的根档案系统会有 /linuxrc 或 /init 的 script 以及包含最小的 shell(通常是 /bin/ash)与一些必要的 user-space 工具程式(通常是 BusyBox 工具),所使用的一些空间用量较小的的函式库(例如用 gcc -Os 选项编译的函式库),例如一些 c 函式库, dietlibc 或 klibc。

[编辑] 参考

  • Landley, Rob, Introducing initramfs, a new model for initial RAM disks, linuxdevices.com. 15 March 2005 

[编辑] 更多链接

  • A detailed comparison of initrd-generating toolkits
  • Kernel documentation on initrd
  • 分析linux initrd文件
来自“http://zh.wikipedia.org/wiki/Initrd”1个分类: Linux kernel modules2个隐藏分类: 小写标题 | 自2007年6月需补充来源的条目