首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 应用>文章内容
Linux系统内存磁盘初始化技术详细解析
来源:www.unix5.com 作者:riechelr_hl 发布时间:2007-05-30  

Linux内存初始化技术(initrd)用于支持两阶段的系统引导过程,是在系统启动过程中被挂载的临时root文件系统(译者注:这里的root文件系统是指的根文件系统)。initrd包含很多可执行程序和驱动,并允许在临时的内存磁盘根文件系统被卸载,内存被释放后挂载真实的root文件系统。在许多嵌入式Linux文件系统中,initrd是最终的根文件系统。这篇文章主要讲解了linux2.6内核的initrd技术,包括在内核中的创建及使用。

 

1 什么是内存磁盘初始化?

 

initrd挂载优先级高于真实根文件系统,它被邦定在内核上,做为内核启动过程的一部分被加载(load)。然后,做为两阶段引导过程的第一部分,内核挂载(mount)initrd,用于获得并加载真实有效的文件系统。

 

为了达到这个目的,initrd包含有最起码的目录与程序,例如insmod,来安装内核模块到内核中。

 

对于桌面或服务器linux,initrd是临时文件系统,它的生存周期很短,仅仅是做为到达真实根文件系统的桥梁。但对于没有存储设备的嵌入式系统来说,它才是永久性的根文件系统。本篇文章对这两方面均有涉及。

 

2 深入分析initrdL

 

initrd包含有必须的程序和系统文件,用于支持系统的启动的第二阶段过程。创建初始化内存的方法,是随着你所使用的系统版本而改变的。从Fedora Core3以后,initrd就由回送设备(loop device)建立。什么是回送设备?它是一个设备驱动,允许你将一个文件挂载为块设备,并对其文件系统做出描述。也许loop device并不存在与你的内核中,但是你能够通过内核的配置工具(make menuconfig)打开它。路径是:Device Drivers-》Block Devices-》LoopBack Device support。下面为检查命令:

 

# mkdir temp ; cd temp 

# cp /boot/initrd.img.gz . 

# gunzip initrd.img.gz 

# mount -t ext -o loop initrd.img /mnt/initrd 

# ls -la /mnt/initrd 

#

 

 

现在,你可以通过查看/mnt/initrd的子目录来查看initrd的内容。需要注意的是,即使你的initrd镜像文件并不是以.gz做为后缀名,但是你同样可以通过增加此后缀名来让gunzip打开它。

 

从Fedora Core3开始,默认的initrd镜像就是一个压缩的gpio归档文件。除了用挂载文件的方式以外,你同样可以通过cpio归档的方式来将其挂载成使用了回送设备的压缩镜像。你可以通过以下的指令来检查这个cpio归档文件的内容:

 

 

# mkdir temp ; cd temp 

# cp /boot/initrd-2.6.14.2.img initrd-2.6.14.2.img.gz 

# gunzip initrd-2.6.14.2.img.gz 

# cpio -i --make-DirectorIEs < initrd-2.6.14.2.img

 

你看到的结果将是一个小型根文件系统,如下所示:

 

# ls -la 

# 

drwxr-xr-x 10 root root 4096 May 7 02:48 . 

drwxr-x--- 15 root root 4096 May 7 00:54 .. 

drwxr-xr-x 2 root root 4096 May 7 02:48 bin 

drwxr-xr-x 2 root root 4096 May 7 02:48 dev 

drwxr-xr-x 4 root root 4096 May 7 02:48 etc 

-rwxr-xr-x 1 root root 812 May 7 02:48 init 

-rw-r--r-- 1 root root 1723392 May 7 02:45 initrd-2.6.14.2.img 

drwxr-xr-x 2 root root 4096 May 7 02:48 lib 

drwxr-xr-x 2 root root 4096 May 7 02:48 loopfs 

drwxr-xr-x 2 root root 4096 May 7 02:48 proc 

lrwxrwxrwx 1 root root 3 May 7 02:48 sbin -> bin 

drwxr-xr-x 2 root root 4096 May 7 02:48 sys 

drwxr-xr-x 2 root root 4096 May 7 02:48 sysroot 

#

 

一些小的,但是很有必要的程序组合能在./bin目录下得到,包括nash(它不是一个shell,而是一个脚本解释工具),用于加载内核模块的insmod,以及lvm等。

 

上面所示目录中,相对比较有趣的是root目录下的初始化文件。这些文件,和传统的linux启动过程中一样,是在initrd镜像被解压缩到RAM中时生成的。待会我们将继续探讨这个问题。

共3页: 上一页 1 [2] [3] 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·Linux系统调用列表(详解)
·MBR如果被覆盖了怎麽办?
·Linux系统下用户和用户组所有权
·Linux操作系统下配置IPTables方
·linux应用技巧集囊(新手遍)
·Linux操作系统配置基础祥解:GRU
·Linux循序渐进 进程管理及作业控
·Linux操作系统Gaim玩转QQ与MSN--
·Linux内存映射技术
·UNIX系统操作入门篇
·linux系统管理--从头开始对ubunt
·UNIX系统应急响应工具上(初级)
  相关文章
·Linux系统开启Telnet服务的详细
·Linux内存映射技术
·linux inittab详解
·Linux操作系统:LVS ipvsadm命令
·在 Linux 上进行自动备份
·使用 ssh 进行安全的连接
·Linux系统:让内存不再泄漏的实
·shell编程技巧
·Linux操作系统的日志管理常用技
·Linux系统调用列表(详解)
·Linux操作系统配置基础祥解:GRU
·linux应用技巧集囊(新手遍)

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!