zoukankan      html  css  js  c++  java
  • Linux入门——开机启动过程浅析

    Linux开机启动过程浅析

    Introduction

    开机启动过程分为以下6个步骤,分别是BIOS, MBR, GRUB, Kernel, Init, RunLevel, RunDefinition

    BIOS

    按下电源开关那一刻,开始加载BIOS,并且执行MBR(Master Boot Record)

    BIOS表示基本输入输入系统(Basic Input/Output System),完成一些系统的完整性检查、搜索、
    加载并且执行引导程序(boot loader), 它在软盘,CD-ROM或者硬盘上寻找引导程序。你可以在
    系统启动时按下键盘(通常是F12或者F2,但是因系统而异)来修改启动顺序

    一旦引导程序被检测到并且加载到内存,BIOS会将控制权移交给它

    MBR

    MBR表示主引导记录(Master Boot Record)

    用于加载并执行GRUB

    GRUB

    GRUB是多重引导管理器(GRand Unified Bootloader)

    执行 /etc/grub.conf, 加载内核镜像

    vim /etc/grub.conf

    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS 6 (2.6.32-504.el6.x86_64)
            root (hd0,0)
            kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_ddz-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_ddz/lv_root crashkernel=128M LANG=zh_CN.UTF-8 rd_LVM_LV=vg_ddz/lv_swap  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
            initrd /initramfs-2.6.32-504.el6.x86_64.img
    

    Kernel

    执行内核首个进程 /sbin/init, 进程号为1, 是接下来所有其它进程的父进程

    initrd表示Initial RAM Disk

    initrd被内核用作临时的根目录,直到内核启动完成并且真正的根目录挂载成功。
    它也包括一些编译好的必要的驱动程序,这些程序有助于它访问硬盘和其他硬件

    Init

    1. 执行 /etc/inittab, 来确定启动级别

      vim /etc/intttab
    # Default runlevel. The runlevels used are:
    #   0 - halt (Do NOT set initdefault to this)
    #   1 - Single user mode
    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    #   3 - Full multiuser mode (终端模式)
    #   4 - unused
    #   5 - X11(图形用户界面)
    #   6 - reboot (Do NOT set initdefault to this)
    #
    id:5:initdefault:
    
    1. 执行 /etc/rc.d/rc.sysinit, 来启动系统进程,比如说NetWork

    RunLevel

    执行启动级别相对应的一系列系统服务

    对应启动级别的目录如下

    ll /etc/rc.d/

    drwxr-xr-x. 2 root root  4096 11月 29 09:49 rc0.d
    drwxr-xr-x. 2 root root  4096 11月 29 09:49 rc1.d
    drwxr-xr-x. 2 root root  4096 3月  10 17:18 rc2.d
    drwxr-xr-x. 2 root root  4096 3月  10 17:18 rc3.d
    drwxr-xr-x. 2 root root  4096 3月  10 17:18 rc4.d
    drwxr-xr-x. 2 root root  4096 3月  10 17:18 rc5.d
    drwxr-xr-x. 2 root root  4096 11月 29 09:49 rc6.d
    

    RunDefinition

    最后执行 /etc/rc.d/rc.local, 来运行自定义的服务

    vim /etc/rc.d/rc.local

      1 #!/bin/sh
      2 #
      3 # This script will be executed *after* all the other init scripts.
      4 # You can put your own initialization stuff in here if you don't
      5 # want to do the full Sys V style init stuff.
      6
      7 touch /var/lock/subsys/local
      8 if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
      9    echo never > /sys/kernel/mm/transparent_hugepage/enabled
     10 fi
     11 if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
     12    echo never > /sys/kernel/mm/transparent_hugepage/defrag
     13 fi
     14
     15 /bin/bash /usr/local/apps/kylin/bin/kylin.sh start
    

    其中第15行为自定义启动脚本

    Final

    进入登录界面

    参考文献

    http://blog.csdn.net/napolunyishi/article/details/18710971

    http://blog.chinaunix.net/uid-26495963-id-3066282.html

  • 相关阅读:
    jquery flot详解
    AngularJS例子 ng-repeat遍历输出
    JS正则表达式
    jQuery Validate验证框架详解
    解决IE6下png图片不透明
    IT经理,你在这个位置吗
    如何做一个好的前端重构工程师
    noi1816 画家问题(技巧搜索Dfs)
    codevs1380 没有丧尸的舞会
    2016年春季大学先修课考试
  • 原文地址:https://www.cnblogs.com/dzqk/p/8545623.html
Copyright © 2011-2022 走看看