码迷,mamicode.com
首页 > 系统相关 > 详细

linux 笔记--系统启动流程

时间:2015-07-29 06:47:58      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:linux

POST(开机自检)-->BIOS(boot seqvence)-->MBR(boot loader)-->kernel-->initrd-->sbin/init

内核设计:
    单内核:linux  轻量级线程
    微内核:windows 支持多线程
内核位置:/lib/modules 以版本号命名的目录

ldd 路径:显示共享库的依赖关系(which查看命令的绝对路径)

启动的服务不同,运行的级别也不相同:
     0 halt 关机
    6 reboot 重启
    1 Single user mode 单用户模式(可以直接以管理员身份登入)
    2 Multiuser, without NFS 多用户模式,但不启用网络文件系统
    3 Full multiuser mode 多用户模式 文字接口
    4 unused 保留级别
    5 X11 多用户模式 图形接口

boot loader :引导加载
    GRUB:(第一阶段)stagel1(mbr)--->stagel1.5(识别文件系统)--->(第二阶段)stagel2(/boot/grub/)
    /boot/grub/grub.conf :

        default=0  设定默认启动的title,默认为0(从第一个开始)
        timeout=10  等待用户选择的时长 秒
        splashimage=(hd0,0)/grub/linux.xpm.gz  选择菜单的背景图片(默认为                      splash.xpm.gz可以自定义修改)
        # hiddenmenu  隐藏菜单,可以注释掉,显示菜单

        title HuiShao CentOS 6 (2.6.32-504.el6.x86_64)  (title  名字 :名字可以更                     改)
                root (hd0,0)     第一个磁盘的第一个分区
                kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=f12bd5ee-6514-4bc8-a225-a25aa52e491e
         nomodeset rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M LANG=zh_CN.
        UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet  内核所在的位置
                initrd /initramfs-2.6.32-504.el6.x86_64.img

        还可以给grub 加密码,但普通用户就不能在开始选择菜单上修改启动级别,从而不能以管理员身份直接登入
            第一种:password 密码
            第二种:password --md5 加密的密码(可以使用grub-md5-crypt )
                [root@HuiShao ~]# grub-md5-crypt
                Password:
                Retype password:
                $1$25qnL$IIL4Fq1crGaF6T6fWAyLl0  这就是md5加密后的密码
            再次进入启动选择菜单时若要修改启动级别就要先 输入p 再输入密码才可以修改

runlevel命令:查看当前运行级别
    [root@HuiShao ~]# runlevel
    N 5  (N 为前一个级别,没有就为N,5就是当前使用的启动级别)
who -r 也可以查看运行级别 :
    [root@HuiShao ~]# who -r
            运行级别 5 2015-07-26 07:43
uname -r 查看内核
    [root@HuiShao ~]# uname -r
    2.6.32-504.el6.x86_64安装grub

kernel初始化的过程:
    1.设备探测
    2.驱动初始化(可能会从initrd(initramfs)文件中装载驱动模块)
    3.挂在根文件系统(以只读方式挂载)
    4.装载第一个进程init(因为init是第一个装载的进程所以pid永远为1,且是所有进程的父进程)

RH5.8:/sbin/init (/etc/inittab配置文件)
RH6.2:systemd 可以并行启动
RH6.3:upstart (ubuntu 开发 基于d-bus配置 /etc/init/init.d/配置文件脚本的存放位置,相当于inittab的配置文件
    只不过分片化了)
    id:5:initdefault:
    id (标识符) 5 (运行级别) initdefault (在什么情况下执行) 要运行的程序
          respawn (一旦程序终止就重新启动 如logout) 若没有指定级别,表示在所有级别

/etc/rc.d/rc.sysinit 完成的任务:
    1.激活udev和selinux
    2.根据/etc/sysctl.conf文件来设定参数
    3.设定时钟
    4.装载键盘映射
    5.启用交换分区
    6.设置主机名
    7.根文件系统检测,并以读写方式重新挂载
    8.激活RAID和LVM设备
    9.启用磁盘配额
    10.根据/etc/fstab检查并挂在系统文件
    11.清理过期的锁和pid文件

/etc/rc.d/init.d 目录里面是服务类的脚本:
    /etc/rc.d/init.d/某个服务 start/stop/restart/status/reload/configtest  跟某个参数可以开启或关闭某个服务
     /etc/rc.d/init.d/** 服务脚本:
        #!/bin/sh
        #
        # chkconfig: - 91 35
        # description: Starts and stops the Samba nmbd daemon \
        #              used to provide NetBIOS name services.
      #chkconfig 启动级别 启动优先次序(s开头的服务脚本) 关闭的优先次序(k开头的服务脚本)
        -表示没有级别默认为s*开头的连接 (服务先开启的后关闭,后开启的先关闭)
    #description 用户说明此脚本的简单功能 \续行
    #chkconfig 和 #description 虽然为注释行但是仍会被读取
 
chkconfig命令:
    --list 列出查看当前系统上的所有独立守护服务的启动设定
    --list 服务名 指定查看
    --add 服务名 脚本名 添加服务但服务器下次启动才会生效
      service 服务名 start|stop 启动或停止服务
    --del 服务名 删除服务所有链接
    [--level](省略为2345) 24 服务名 on|off 在2、4级开启或关闭服务

/etc/rc.d/rc.local 系统最后启动的一个脚本(可以加入一些命令)

        /etc/rc.d/init.d/    /etc/rc.d/rc.sysinit     /etc/rc.d/rc.local
    /etc/rc.d/rc[0-6].d 表示每个启动级别所要启动服务

RH5 /etc//inittab的任务
    1.设定默认运行级别
    2.运行初始化脚本
    3.运行指定运行级别对立的目录脚本(K* S*)
    4.设定ctrl+alt+delete组合键的操作
    5.定义UPS电源故障恢复时执行后的操作
    6.启动虚拟终端(默认为2345)
    7.启动图形终端(只在5级别)

守护进程类型:
    独立守护进程:xinetd 超级守护进程,管理瞬时守护进程
    瞬时守护进程:不需要关联至运行级别
        当有访问瞬时守护进程A时,xinetd就临时启动A,访问后就立即关闭

本文出自 “笨鸟先辉” 博客,请务必保留此出处http://benniaoxianhui.blog.51cto.com/10463960/1679223

linux 笔记--系统启动流程

标签:linux

原文地址:http://benniaoxianhui.blog.51cto.com/10463960/1679223

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!