快速业务通道

linux启动过程详解

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-15
d modprobe nash

  [root@localhost ram]#ls lib

  Buslogic.o ext3.o jbd.o scsi_mod.o sd_mod.o

  [root@localhost ram]ls dev

  console null ram systty tty1 tty2 tty3 tty4

  sbin目录是指向bin目录的一个连接,其他目录是空的.

  [root@localhost ram]cat linuxrc

  #!/bin/nash

  1.echo "Loading scsi_mod.o module"

  2.insmod /lib/scsi_mod.o

  3.echo "Loading sd_mod.o module"

  4.insmod /lib/sd_mod.o

  5.echo "Loading BusLogic.o module"

  6.insmod /lib/BusLogic.o

  7.echo "Loading jbd.o module"

  8.insmod /lib/jbd.o

  9.echo "Loading ext3.o module"

  10.insmod /lib/ext3.o

  11.echo Mounting /proc filesystem

  12.mount -t proc /proc /proc

  13.echo Creating block devices

  14.mkdevices /dev

  15.echo Creating root device

  16.mkrootdev /dev/root

  17.echo 0x0100 > /proc/sys/kernel/real-root-dev

  18.echo Mounting root filesystem

  19.mount -o defaults --ro -t ext3 /dev/root /sysroot

  20.pivot_root /sysroot /sysroot/initrd

  21.umount /initrd/proc

  上面的编号是我为了下面好说明加上去的.

  我们注意的是这里使用的shell是nash而不是bash,nash是专门为linuxrc可执行脚本设计的,因此你有必要看一看nash的man文档.

  1-10行是加载一些必要的模快.11-12行加载proc内核文件系统,13-14行利用nash内建的命令mkdevices创建块设备,mkdevices是根据/proc/partitions文件创建里面列出的所有块设备.15-16行利用nash内建的命令mkrootdev,mkrootdev使它后面的参数/dev/root成为一个块节点从而根分区设备被挂载,其中根分区设备由grub.conf里面的kernel命令后面所带的参数root=决定,如果root=参数没有被指定,/proc/sys/kernel/real-root-

  dev文件将提供根分区设备号.17行将数字256写入到后面的文件里面去.18-19行挂载根文件系统到/sysroot目录下,/dev/root里面的内容就是root=参数所指定的设备里面的内容20行调用pivot_root改变根目录所在地并place旧的根目录到指定的位置.21行卸载旧的根目录里面的proc内核文件系统.

Empire CMS,phome.net

  从这里面我们总结一下linuxrc的作用: (参考/usr/src/linux-2.4/Documentation/initrd.txt文档)

  2)/linuxrc文件决定在挂载真正的文件系统之前所需完成的事情(譬如加载必要的网络驱动或者加载ext3文件系统).

  3)/linuxrc加载必要的模块.

  4)/linuxrc挂载根文件系统

  5)/linuxrc调用pivot_root来改变根目录

  关于initrd的用途可以查考上面提到的文档,想知道linux系统是如何安装的吗?那里面由答案.

  既然linuxrc的主要目的是加载模快用的,那如果我们的内核没有动态的模块而所需的功能都是静态编译进内核的,那么是不是可以不用linuxrc文件呢?

  答案是可以不用,在普通的linux操作系统里面可以加入noinitrd选项以告知boot loader 不使用initrd.如果我们做网关,ram是我们的文件系统的载体,initrd一行当然不能去掉,但是我们可以不用linuxrc文件,sysroot文件夹和initrd文件夹.

  不信的话,试试看吧.

  好了,initrd(linuxrc)已经介绍完了.

  linuxrc执行完毕之后,系统就会以真正的根目录正式init.

  系统在/bin/或者/sbin目录下找到init程式,然后根据它的配置文件/etc/fstab进行初始化,调用mingetty程式启动login完成引导.

  ps:init这一部分网上有很多的详细资料我在这里并没有展开来说.

  终于写完了,希望对你有所帮助.如有错误,还望指正.

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号