文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>initrd man

initrd man

时间:2010-05-02  来源:walker_wu

Initrd man

NAME

Initrd – boot loader initialized RAM disk

CONFIGURATION

/dev/initrd 是一个只读的块设备,分配major number号为1,minor number号为250。典型的/dev/initrd是root.disk 以0400拥有的(只能被root读)。如果Linux系统没有创建/dev/initrd,下面的命令可以用来创建:

              mknod –m 400 /dev/initrd b 1 250

              chown root:dick /dev/initrd

也同时支持RAM disk和Initial RAM disk(例如,CONFIG_BLK_DEV_RAM=y 和CONFIG_BLK_DEV_INITRD=y)必须被直接编译到Linux内核来使用/dev/initrd。当使用/dev/initrd时,RAM disk驱动不能作为一个模块加载。

FILES

/dev/initrd

/dev/ram0

/linuxrc

/initrd

DESCRIPTION

特殊文件/dev/initrd是一个只读文件。设备/dev/initrd是一个RAM disk,在内核开始之前被boot loader初始化(例如,加载时)。之后内核可以使用块设备/dev/initrd的内容分两部系统启动。

在启动的第一步,内核启动并从/dev/initrd的内容中挂载一个初始化根文件系统(initial root file-system)(例如,RAM disk被boot loader初始化)。在第二步,额外的驱动或是其它模块从初始化根设备的内容中加载。在加载额外模块之后,一个新的根文件系统(例如,正常根文件系统)被从不同的设备挂载。

Boot-up Operation

当使用initrd启动时,系统如下启动:

1.       boot loader加载内核程序和/dev/initrd内容到内存。

2.       在内核启动时,内核解压、复制设备/dev/initrd的内容到设备/dev/ram0,然后使用/dev/initrd释放内存。

3.       之后内核以读写方式挂载设备/dev/ram0作为初始化根文件系统。

4.       如果指定的正常根文件系统也是初始化根文件系统(例如,/dev/ram0),则内核跳到最后一步以安照正常启动顺序。

5.       如果可运行文件/linuxrc在初始化文件系统中,则以UID 0运行。(文件/linuxrc必须有可运行权限。文件/linuxrc可以是任何可运行的内容,包括shell脚本)

6.       如果/linuxrc没有被运行获知当/linuxrc终止,正常根文件系统被挂载。(如果/linuxrc退出时,任意文件系统挂载在初始化根文件系统,那内核的行为就是UNSPECIFIED)

7.       如果正常文件系统有目录/initrd,设备/dev/ram0被从/ 移动到/initrd。否则,如果目录/initrd不存在,设备/dev/ram0没有挂载。(当从/ 移动到/initrd时,/dev/ram0不是未挂载,因此程序仍然可以从/dev/ram0运行。如果目录/initrd没有存在在正常根文件系统,而且当/linuxrc退出时任何程序仍然从/dev/ram0运行,内核的行为就是UNSPECIFIED)

8.       正常引导顺序(例如,启动/sbin/init )是在正常根文件系统开始的。

Option

下面的boot loader选项是当使用initrd时影响内核的启动操作:

initrd=filename

       指定文件作为/dev/initrd的内容去加载。

noinitrd

这个引导时的选项关闭两部引导过程。内核运行正常启动顺序,假设/dev/initrd没有初始化。通过这个选项,任何通过boot loader加载到内存的/dev/initrd内容被保留。这个选项允许/dev/initrd内容称为任何数据,也不需要限制为一个文件系统镜像。但是,设备/dev/initrd是只读的,在系统引导后只能读一次。

root=device-name

       指定设备作为正常根文件系统。

Usage

主要应用initrd是为了允许在系统安装时,模块化内核配置。

一个可能的系统安装顺序如下:

1.       loader程序从软盘或者是其它介质中引导一个小型内核(例如,支持/dev/ram,/dev/initrd和ext2文件系统)并加载/dev/initrd通过一个gizipped版本的初始化文件系统。

2.       可运行的/linuxrc决定哪些是需要去做的:(1)挂载正常根文件系统(如,设备类型,设备驱动,文件系统)和(2)分布介质(如,CD-ROM,网络,磁带,……)。这些可以被通过询问用户的方式实现,通过自动探测,或者是混合方法。

3.       可运行的/linuxrc从初始化根文件系统中加载必要模块。

4.       可运行的/linuxrc创建并转移根文件系统。(在一阶段时,正常根文件系统并没有完整的系统。)

5.       可运行的/linuxrc设置/proc/sys/kernel/real-root-dev,解除挂载/proc、正常根文件系统和其它挂载的文件系统,然后终止。

6.       内核挂载正常根文件系统。

7.       现在文件系统是可进入的并完整的,boot loader可以被安装。

8.       boot loader被配置加载到/dev/initrd一个文件系统中,这个系统包括一系列可以用于启动系统的模块。(例如,设备/dev/ram0可以被修改,然后解除挂载,最后,镜像被从/dev/ram0写成一个文件。)

9.       系统现在是可引导的,额外的安装可以实现。

在以上过程中,/dev/initrd的关键角色是在正常系统操作时,不需要询问初始化内核选择,大的兼容的内核,或是重新编译内核,就可以重新使用配置数据。

第二种过程是在一个单一的管理网络中,安装一个linux运行系统依靠不同的硬件配置。在这种情况下,需要使用只有一小部分内核,保持系统配置信息尽量的小,创建一个普通文件带有所有需要的模块。然后只有/linuxrx文件或者被/linuxrc运行的文件不同。

第三种过程是更方便的恢复盘。因为在引导时根文件系统分区的位置信息是不需要的,系统可以通过加载/dev/initrd使用对话或者自动检测依靠。

最后一点,Linux CD-ROM发行版可能使用initrd使得从CD-ROM安装更容易。

NOTES

1.       对于现在的内核,文件系统在/dev/ram0从/ 移动到/initrd 时,仍然是挂载的,并可以访问。但是,/proc/mounts并没有更新。

2.       对于现在的内核,如果目录/initrd不存在,那么,如果/dev/ram0被任何程序使用或者是任何文件系统挂载它的时候,/dev/ram0将不会完全的解除挂载。如果/dev/ram0没有被完全的解除挂载,那么/dev/ram0就仍然在内存中。

3.       /dev/initrd用户不应该仅仅依赖于上述给定的行为。在以后的linux内核版本中,行为可能会发生改变。

相关阅读 更多 +
排行榜 更多 +
崩溃大陆2鱼竿如何获取

崩溃大陆2鱼竿如何获取

冒险解谜 下载
狙击手行动

狙击手行动

冒险解谜 下载
狙击突围行动最新版

狙击突围行动最新版

冒险解谜 下载