zoukankan      html  css  js  c++  java
  • Linux的引导流程

    原则:给用户最小的权限,开启最少的服务(防止被攻击)

    一、Linux引导流程

    1、固件firmware(CMOS/BIOS)  POST加电自检

    2、自举程序BootLoader(GRUB)  载入内核

    3、载入内核Kernel  驱动硬件

    4、启动进程init

    5、读取执行配置文件/etc/inittab

      a、从默认运行级别运行(initdefault)

      b、执行脚本/etc/rc.d/rc.sysinit  这个脚本任何时候系统启动都会运行

      c、执行脚本/etc/rc.d/rc  这个脚本会判断默认启动级别

      d、执行对应运行级别的/etc/rc.d/rc[0123456].d  启动对应的服务

      e、username password……

    二、Linux运行级别

    Default runlevel. The runlevels used are:
    # 0 - halt (Do NOT set initdefault to this)
    # 1 - Single user mode  没有图形界面,只有root可以登录,类似windows的安全模式
    # 2 - Multiuser, without NFS (The same as 3, if you do not have networking)  NFS(network file system)
    # 3 - Full multiuser mode
    # 4 - unused  没有使用的运行级别,可以用户自定义
    # 5 - X11  系统缺省的运行级别  图形化的多用户级别
    # 6 - reboot (Do NOT set initdefault to this)  重新启动运行级别

    ·init [0123456]  设置从什么启动级别启动

    三、inittab文件的解释

    在inittab中,所有的条目采取以下格式

    id:runlevel:action:process

      id:标示符,一般为两位字母或数字

      runlevel:指定的运行级别,可以指定多个

      action:运行状态

      process:指定要运行的脚本/命令

    1、关键脚本文件介绍

      /etc/rc.d/rc.sysinit  这个脚本只要系统运行,它就会运行一次,如果有什么命令想要在系统一运行就指定,可以写在这个脚本的最后

      /etc/rc.d/rc[0123456].d  这是个目录,对应每种运行级别下要开始和停止的服务

        

      例:S 14 nfslock

        S  start  开始服务

        K  kill  停止服务  (大小写敏感)

        14  后面跟的数字表示运行的优先级

        nfsclock  在后面的字母序列表示运行脚本名称

      /etc/rc.d/init.d  这个目录下存放着你安装Linux系统时安装的启动服务,通过sshd命令来单独启动或关闭

    设置自启动程序:当我们编写了一个脚本文件,想要在某个运行级别下运行时,可以使用软连接,将该脚本文件链接到/etc/rc.d/rc[012345].d这个目录下,重新命名如:msg.script->S100msg.script

    例:

    ln -s /etc/rc.d/init.d/msg.script /etc/rc.d/rc3.d/S100msg.script

    2、action的一些值

    行为 描述
    respawn
     一旦第4项指定的process命令中止,便重新运行该命令。
    wait
    执行第4项指定的process,并等其结束后再运行其它命令。(阻塞)
    once
    执行第4项指定的process,不等待它执行完成,继续运行其它命令。
    boot
    不论在哪个执行等级,系统启动时都会运行第4项指定的process。
    bootwait
    不论在哪个执行等级,系统启动时都会运行第4项指定的process,且一直等它执行完备。
    off
    关闭任何动作,相当于忽略该配置行。
    ondemand
    进入ondemand执行等级时,执行第4项指定的process。
    initdefault
    系统启动后进入的执行等级,该行不需要指定process。
    sysinit
    不论在哪个执行等级,系统会在执行boot及bootwait之前执行第4项指定的process。
    powerwait
    当系统的供电不足时执行第4项指定的 process,且一直等它执行完毕。
    powerokwait
    当系统的供电恢复正常时执行第4项指定的process,且一直等它执行完毕。
    powerfailnow
    当系统的供电严重不足时执行第4项指定的process。
    powerfail
    当出现电源错误时执行第4项指定的process命令,不等待其结束。
    ctrlaltdel
    当用户按下【Ctrl+Alt+Del】时执行第4项指定的 process。
    kbrequest
    当用户按下特殊的组合键时执行第4项指定的process,此组合键需在keymaps文件定义。

    四、父子进程的关系

      1、父进程先于子进程终止:

        此种情况就是我们前面所用的孤儿进程。当父进程先退出时,系统会让init进程接管子进程 。
      2、子进程先于父进程终止,而父进程又没有调用wait或waitpid函数

         此种情况子进程进入僵死状态,并且会一直保持下去直到系统重启。子进程处于僵死状态时,内核只保存进程的一些必要信息以备父进程所需。此时子进程始终占有着资源,同时也减少了系统可以创建的最大进程数。

         僵死状态:一个已经终止、但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占有的资源)的进程被称为僵死进程(zombie)。ps命令将僵死进程的状态打印为Z 。
      3、子进程先于父进程终止,而父进程调用了wait或waitpid函数 
         此时父进程会等待子进程结束。

     五、自举程序grup的配置与应用 

    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE: You have a /boot partition. This means that
    # all kernel and initrd paths are relative to /boot/, eg.
    # root (hd0,0)   
    # kernel /vmlinuz-version ro root=/dev/sda6
    # initrd /initrd-[generic-]version.img
    #boot=/dev/sda
    default=0  定义默认的启动系统
    timeout=5  定义默认的等待时间
    splashimage=(hd0,0)/grub/splash.xpm.gz  定义GURB界面图片
    hiddenmenu  隐藏菜单
    title CentOS (2.6.32-279.el6.x86_64)  定义菜单项名称(标题)可任意修改
    root (hd0,0)   设置GRUB的根设备即内核所在的分区/boot  第一块硬盘的第一个分区
    kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=09614ce3-44c3-46f1-894d-4bb7813d9e9f rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto

    定义内核所在的文件位置

    LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-279.el6.x86_64.img  载入镜像文件

    可以通过修改grub在系统启动时进入单用户模式,用来修复系统(修改用户密码)

  • 相关阅读:
    nyoj999 师傅又被妖怪抓走了 (预处理+bfs+状态压缩)
    使用逆波兰式进行表达式求值
    [moses笔记]编译含有nplm的moses解码器
    菲波那契数列编程实现
    引领网页设计潮流的优秀网页作品赏析
    MFC中获取各个窗口之间的句柄或者指针对象的方法
    UVALive 6529 Eleven 区间dp
    jquery 实现菜单的下拉菜单
    数字图像和视频处理的基础-第4周运动预计matlab练习题
    setjmp与longjmp
  • 原文地址:https://www.cnblogs.com/njupt-Qsimple/p/5387304.html
Copyright © 2011-2022 走看看