首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux基础>安装配置>正文

Linux系统内存磁盘初始化技术详细解析

http://www.oklinux.cn  2007-03-23  来源:           会员收藏  游客收藏  【 】 

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 创建initrd的工具。


现在,让我们回到一开始的讨论:initrd的镜像是如何被创建的?在传统的linux系统中,initrd是在linux build的时候被创建的。像mkinitrd这样的许许多多的工具,都能够用于通过必须的库和模块来自动构建一个用于过渡到真实根文件系统的initrd。事实上,mkinitrd工具是一个脚本文件,因此,我们能够很清楚得看到,这个过程是如何进行的。同样的,YAIRD (Yet Another Mkinitrd)工具,也允许我们自定制每一个initrd被构建的阶段。

共2页: 上一页 1 [2] 下一页

上一篇: Linux操作系统下如何开启硬盘DMA   下一篇: Linux操作系统对逻辑卷的创建与管理


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
· Linux操作系统对逻辑卷的创建与管理
· Linux操作系统下如何开启硬盘DMA
· Linux如何加载(优)U盘
· 在Linux下使用DOS/Windows磁盘
· 深入理解和管理Linux文件系统
· 优化Linux系统硬盘
· 深入理解硬盘的 Linux 分区
· 为Linux操作系统安装第二个硬盘
· Raid教程:全程图解手把手教你做RAID
· Linux 文件系统精通指南
· 分区指南 实例解说fdisk工具的使用
· Linux中的分区和文件系统
· Linux主流文件格式
· ext2、ext3及reiserfs文件系统概述
· Windows fat32/ntfs 与 Linux ext2/ext3 互访问
· AutoFS
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·将Linux加入到WindowsNT/2000的启动选
·UbuntuLinux系统帐户密码找回功能
·一行命令在Ubuntu上装好Firefox 3 Beta
·小企鹅(FCITX)输入法快速安装笔记
·如何清理Ubuntu系统中的无用软件包
·Ubuntu 7.10 (Gutsy) 下安装 Tor 的过
·Ubuntu Linux系统下硬盘ISO启动方法介
·将Ubuntu Linux系统放到你的移动硬盘中
·重装Windows操作系统后修复Fedora的Gru
·Ubuntu 7.0下配置安装VirtualBox .5.4
·Linux操作系统下如何配置Qt(4.3.2)环境
·利用Boot Manager让Vista与Linux双启动
  阅读排行
·Redhat5 Server下载、序列号以及相关介
· 在U盘上安装Damn Small Linux
·Linux的GRUB引导程序配置方法大全
·新手学堂 详细讲解Ubuntu Server安装过
·从硬盘安装RHEL 5(Red Hat Enterprise
·新手入门 Fedora Linux 7系统的安装指
·RedHat AS 4.0 硬盘安装图解一
·什么是Linux?Linux与UNIX之间的关系
·Linux不是Windows
·Intel 845集成显示驱动
·简介 PLAYSTATION 3 上的 Linux
·安装大型Linux 集群: 配置服务和安装
·Linux操作系统配置基础祥解:GRUB入门
·tagfile帮你定制安装slackware
·介绍Linux操作系统下添加新硬盘的方法
网摘收藏: