Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4568336
  • 博文数量: 385
  • 博客积分: 21208
  • 博客等级: 上将
  • 技术积分: 4393
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-30 13:40
文章分类

全部博文(385)

文章存档

2015年(1)

2014年(3)

2012年(16)

2011年(42)

2010年(1)

2009年(2)

2008年(34)

2007年(188)

2006年(110)

分类: LINUX

2007-01-14 18:40:28

用户可以将初始RAM磁盘作为一个Linux系统中的回送硬件进行安装,从而对它进行检验。虽然回送硬件是一种虚拟硬件,但是Linux系统可以像访问真实硬件一样访问它。在安装初始RAM磁盘前,用户必须确定当前的内核支持回送硬件设备。对于 2.6内核来说,用户可以通过内核设置编译程序中的Device Drivers→Block Devices→Loopback device support选项为回送硬件提供支持。在2.4内核下,该选项在Block Devices→Loopback device support。

在使用GRUB引导程序的桌面Linux系统中,系统的初始RAM磁盘通常作为一个分离的内核外部文件而存储。该文件一般在/boot目录下,且可以在GRUB设置文件(/etc/grub.conf)中进行识别。在大多数的嵌入式系统中,初始RAM磁盘是作为内核外部文件创建的,但是却作为内核搭建的最后一步与内核捆绑在一起。

桌面Linux系统通常使用在初始RAM磁盘中使用ext 2文件系统,而大多数嵌入式Linux系统作用更小、更简单的文件系统,例如CRAMFS、ROMFS或Minix。无论初始RAM磁盘中包含的是什么类型的文件系统,初始RAM磁盘通常使用gzip对文件进行压缩,以便节省更多的空间。Linux初始RAM磁盘加载程序可以对压缩后的文件进行识别,并在安装前自动对其进行解压缩。

如果用户已有一个初始RAM磁盘并希望将它移植到2.6内核下,那么用户需要解压缩、安装并对其进行检测。因为初始RAM磁盘通常都是处于压缩状态的,所以用户需要对文件进行重命名才能成功解压。初始RAM磁盘常用的解压缩和安装命令如下:

# gunzip initrd.img.gz# mount -t ext2 -o loop initrd.img /mnt/initrd

为了完成文件系统的安装,用户使用的目录必须已作为一个安装点(例如 /mnt/initrd)而存在。安装命令的-t选项用来确定文件系统的类型,除非用户的初始RAM磁盘不是ext 2格式的,否则这一选项是可以选择的。一旦初始RAM磁盘安装完毕,它便会在磁盘列表中显示出来。显示如下:

Filesystem 1K-blocks Used Available Use%
Mounted on/tmp/initrd.img 2948 510 2288 19% /mnt/initrd

同时,初始RAM磁盘也可以像其它文件系统一样被展开、进行研究分析,示例如下:

# cd /mnt/initrd# ls -altotal 13drwxr-xr-x     
9 root     root         1024 Feb 16 13:31 .drwxr-xr-x    
16 root     root         4096 Mar  3 08:58 ..drwxr-xr-x     
2 root     root         1024 Feb 16 13:31 bindrwxr-xr-x     
2 root     root         1024 Feb 16 13:31 devdrwxr-xr-x     
2 root     root         1024 Feb 16 13:31 etcdrwxr-xr-x    
 2 root     root         1024 Feb 16 13:31 lib-rwxr-xr-x     
1 root     root          340 Feb 16 13:31 linuxrcdrwxr-xr-x     
2 root     root         1024 Feb 16 13:31 loopfsdrwxr-xr-x    
 2 root     root         1024 Feb 16 13:31 proclrwxrwxrwx     
1 root     root            3 Feb 16 13:31 sbin -> bindrwxr-xr-x     
2 root     root         1024 Feb 16 13:31 sysroot





Linux启动顺序

内核加载完成后,传统的Unix和Linux系统会执行一个系统应用软件作为初始化进程。该应用软件在系统的/sbin/init目录下。一般情况下,初始化进程是所有进程的第一步,是系统所有进程的铺路石,用户可以使用“ps”命令调出进程状态列表。初始化进程可以对/etc/inittab文件进行读取,从而识别系统启动、进程和程序列表的方法。

使用初始RAM磁盘启动

如果用户系统使用初始RAM磁盘作为根文件系统,系统的启动程序便多了一步。系统的第一步不是执行初始进程,而是对初始RAM磁盘进行解压并安装,并执行/linuxrc文件。该文件必须是可以执行的,可以作为一个提供其它可执行命令列表的命令文件。另外该文件还必须是一个像BusyBox一样的复调用二进制命令,或者作为一个连接复调用二进制命令或/sbin/init进程自身的符号链接。 /linuxrc文件执行完毕便可进入初始RAM磁盘的安装进程。这一进程由内核源代码文件init/do_mounts_initrd.c来指定。 /linuxrc文件实际上是一个命令程序,其形式如下(出自无devfs 文件系统或udev的Red Hat 9.0):

#!/bin/nashecho Mounting /proc filesystemmount -t
 proc /proc /procecho Creating block devicesmkdevices /
devecho Creating root devicemkrootdev /dev/rootecho 0x0100 >
 /proc/sys/kernel/real-root-devecho Mounting root filesystemmount -o defaults
--ro -t ext3 /dev/root /sysrootpivot_root /sysroot /
sysroot/initrdumount /initrd/proc

由此可见,使用初始RAM磁盘的Red Hat系统中的缺省/linuxrc文件可执行一系列系统初始化命令。

如果用户正在对一个拥有本地存储器的Linux系统进行移植,并且该系统并不局限于初始RAM磁盘,那么命令文件中的最后一组命令可将根文件系统安装到存储设备中,并使用“pivot_root”命令改变“/”目录下的系统主旨。 linux-utils套件中的“pivot_root”命令可以将系统的根目录由初始RAM磁盘改为可提供长期存储器的硬件设备。如果用户正在使用 GRUB,该硬件可以通%B
阅读(2538) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~