免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1143 | 回复: 0
打印 上一主题 下一主题

Linux 系统引导过程解析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-29 16:32 |只看该作者 |倒序浏览

               
       
       
       
       
       
       
Linux在PC引导过程

开机/重置后,系统自检,BIOSCMOS找引导设备(光驱,硬盘,USB设备等)。
               

  • PC机一般使用硬盘作为引导设备,BIOS将硬盘的第一个扇区(512字节)调入内存,MBR剖析图如下
           


  • GRUB
                    STAGE1
    加载完成后,STAGE1加载GRUB
                    STAGE1.5
    ,可以识别文件系统,读取/boot/grub/menu.lst文件。加载内核,和initrd文件,GRUB
                    STAGE2
    完成。
                   

  • 现在linux
                    kernel
    获得系统的控制权,由于在系统引导时候,可要使用一部分设备的驱动如,网卡,SCSI设备,RAIDLVM,或者rootfs
                   
    是在网络文件系统(NFS),USB设备等原因。为了提高系统引导过程的灵活性。引入了临时根文件系统,即initrd或者initramfs,前者是一个文件系统(ext2,cramfs,后者是initramfs。后者有比前者有很多的灵活性,详细稳定请参考Documentation/filesystems/ramfs-rootfs-initramfs.txt
                   

  • 如果有initrd存在,kernel会加载initrd或者initramfs,进行系统硬件初始化等工作,然后mount真的根文件系统,在改变临时的根文件到真的文件系统,然后运行/sbin/init进程。initrdinitramfs实现方法不同(参见initrd和initrainitramfs区别:区别:)。以上过程由/linuxrcinitrd),/initinitramfs)实现。
                   

  • 如果没有initrd,内核安装根文件系统,运行/sbin/init进程。init的配置文件是/etc/inittabinit进程是用户空间(user
                    space
    )的第一个进程(PID=1),所有其他应用程序都是它的子进程。init完成硬件配置,网络等初始化,启动对应运行级别的应用,运行getty启动终端等待用户登录。依照时间顺序起过程如下。
           

        • 系统配置(硬件参数配置,时钟,文件系统检测,设置主机名等),初始化。Debian,
                                 
          si::sysinit:/etc/init.d/rcS,这条语句表示,系统初始化时候运行脚本/etc/init.d/rcS,脚本的内容是按数字顺序(如相同按字母升序)运行/etc/rcS.d/下面的脚本,K字母开头的是/etc/rcS.d/Knum_something
                                  stop
          S字母开头是/etc/rcS.d/Snum_something
                                  start
          。类RedHat的系统是si:S:sysinit:/etc/rc.d/rc.sysinit。
                                 

        • 启动缺省的运行级别,起启动过程如上所述,Debian: l3:3:wait:/etc/init.d/rc
                                  3
          RedHat:
                                 
          l3:3:wait:/etc/rc.d/rc
                                  3。
                                 

        • 启动getty,打开虚拟终端等待用户登录。Debian: 1:2345:respawn:/sbin/getty
                                  38400 tty1
          RedHat:c1:12345:respawn:/sbin/agetty
                                  38400 tty1。
                         

       说明:系统配置(sysinit)初始化在init -b
                    时不运行。init的运行级别一般为(0-6),0:关机,1(S):单用户;6:重启。其他为多用户环境。图行界面的登录由相应运行级别的脚本启动实现如/etc/rc3.d/gdm等。除以上任务,init还有设置ctrl-alt-del的响应,电源响应等。详细过程请参考man
                    inittab,init,getty,login。
        到此,linux的启动过程结束,用户可以在虚拟终端(virtual
    console
    ),显示管理器(Display
    Manager
    )登录。应用的运行级别配置工具:类RedHat:chkconfig
    例子:列出服务的运行级别
    chkconfig
    --list
    name增加服务
    chkconfig
    --add
    name
    删除服务 chkconfig
    --del
    name
    指定运行级别启动或者关闭
    chkconfig
    --level
    level_number
    name
    on|off|rest
    , Debian
    update-rc.d:例子:
    update-rc.d
         apache2 start 25 3 . stop 09 0 1 6
    .
    (设置apache2在运行级别3启动顺序是25,在运行级别0,1,6停止,顺序是09) ;update-rc.d
    -f apache2 remove
    (删除apache2的系统启动); update-rc.d
    apache2 defaults
    (设置apache2在运行级别2345启动,016关闭)。
    说明:
    initrdinitramfs区别:
    • initrd
              是个单独的文件,使用ram
              disk 而initramfs已经链接到内核文件中使用root_fs。
             
             
             
    • initrd
              是压缩的文件系统通常是ext2,其创建过程中要使用dd,mkfs等命令,所以需要将ext2编译到内核中,引导时候使用ram
              disk。而initramfs是压缩的cpio包,内核在引导过程中将其导入到root_fs(一种ramfs或tmpfs)不需要外加的文件系统模
              块。
             
             
    • initrd使用/linuxrc执行系统初始化,不是init,其过程复杂;initramfs使用init执行初始化,后使用exec最后的init替换自己。
             
             
             

    • 在系统转入第二个阶段引导时:initrd需要pivot_root
             
      到最后的根文件系统,然后umount
              ramdisk
      initramfs是用新的根文件系统覆盖安装自己,然后chroot
             
             

           
           
           
           
           
           
    总之initramfs优于initrd。详细文档可可参见:内核文档Documentation/filesystems/ramfs-rootfs-initramfs.txt,或者解压以上两种中间引导文件,查看linuxrc和init脚本。
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/6566/showart_2012240.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP