zoukankan      html  css  js  c++  java
  • Linux系统启动详解(一)

    本篇主要以Centos为例,讲述整个Linux系统启动过程,包括了grub引导,initramfs流程,/sbin/init执行rc.sysinit及rc的大体流程。

    另外,本篇有一个实例来说明,将整个操作系统运行在内存的实例(系统默认是使用一块物理磁盘存储操作系统)。

    1       概述

        Linux系统从软件角度,启动大致过程如下:

    1)         硬件及BIOS加载,通过启动项找到MBR,读取MBR中的boot loader,即我们常用的grub工具。

    2)         boot loader,通过(如grub.conf)指定的root设备,加载kernel(vmlinux)、initramfs,并运行initramfs中的init。

    3)         切换到真正的root fs,执行/sbin/init,执行rc.sysinit。

    4)         执行/etc/rc3.d下服务脚本。

    关于rootfs是什么,参考文档[1]描述得比较易懂。

    [1]: 什么是根文件系统(rootfs)http://www.crifan.com/what_is_root_filesystem/

    2       grub

    grub的启动参数,如title,timeout等,google一搜一大把,就不在此说明。

    关于grub还有一个作用,就是启动内核时,向内核传递参数,如我们常见的root=…,就是向内核传递真正的root fs所在的设备,即root device。

    其它可向内核传递的参数,具体在参考内核源码目录中有文档说明其作用:Documentation/kernel-parameters.txt(以内核src.rpm来说,安装源码包后,其内核源码在/root/rpmbuild/BUILD/kernel-2.6.32-71.el6/linux-2.6.32-71.el6.x86_64/)。

    其作用相当于修改/proc/sys/kernel/下的对应参数值,以/proc/sys/kernel/panic为例。

    [root@localhost ~]# cat /proc/sys/kernel/panic

    0

    [root@localhost ~]# vim /boot/grub/grub.conf

    ……

             root (hd0,0)

             kernel /boot/vmlinuz-2.6.32-71.el6.5.vsds.x86_64 ro root=UUID=212c95a4-56d0-44fc-93ce-73b5f3e8cf2a rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us panic=2

             initrd /boot/initramfs-2.6.32-71.el6.5.vsds.x86_64.img

    ……

    [root@localhost ~]#reboot

    [root@localhost ~]# cat /proc/sys/kernel/panic

    2

    更多说明,参见资料[2]。

    [2]: linux 内核可接受的参数| 通过grub给内核传递参数

    下节将跟小伙伴们来说说initramfs那些事,和本人通过简单修改initramfs将系统从运行在磁盘,修改为运行到ramdisk中。

    有一种女人,叫37℃程序'媛'。平凡但不平庸;严谨但不无趣;不愠不火...
  • 相关阅读:
    前序遍历和中序遍历树构造二叉树
    2014百度之星初赛第一场部分题解
    爬虫小记--抓取过程简要分析
    前端程序猿必知:单页面应用的核心
    swift -类的定义及使用
    【Unity优化】怎样实现Unity编辑器中的协程
    poj 1125 (floyed 最短路径)
    Android API Guides---Tasks and Back Stack
    循环-16. 猴子吃桃问题(15)
    零java基础搞定微信Server
  • 原文地址:https://www.cnblogs.com/fangyuan1004/p/4091737.html
Copyright © 2011-2022 走看看