郑州到首尔怎么去: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文件