linux系统启动流程

PC:OS(Linux)

POST(加电自检)-->BOIS(Boot Sequence)-->MBR(Bootloder,446字节)-->Kernel(内核)-->initrd-->/sbin/init


运行级别:0-6 启动的服务不同

    0:halt    关机

    1:single user mode    单用户模式,直接以管理员身份登入

    2:muli user mode    多用户模式,不启用NFS

    3:multi user mode    多用户模式,文本模式不启用图形界面

    4:reseved    保留级别,尚未启用

    5:muti user mode    多用户模式,图形界面

    6:reboot    重启


查看运行级别

runlevel

who -r

[root@localhost ~]# runlevel
N 3

N:表示前一个级别


查看内核release号

    uname -r

详解启动过程

bootloader(MBR)

    LTLO:LInux LOader

    GRUB:GRand Unified Bootloader

        Stage1:MBR    第一阶段

        Stage1.5:识别文件系统

        Stage2:/boot/grub/    第二阶段


grub.conf的每项意义

default=0    设定默认启动的title的编号,从0开始
timeout=5    等待用户选择的超时时长,单位是秒
splashimage=(hd0,0)/grub/splash.xpm.gz    grub的背景图片
hiddenmenu    隐藏菜单

#为grub加密

password --md5 密码
title CentOS (2.6.18-308.el5)    内核标题或操作系统名称,字符串,可自由修改
        root (hd0,0)    内核文件所在的设备,对grub而言,所有类型硬盘一律为hd,格式为(hd#,N):hd#表示第#号磁盘,N表示对应磁盘的分区
        kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet    内核文件路径以及传递给内核的参数(可以查看/proc/cmdline)
        initrd /initrd-2.6.18-308.el5.img    ramdisk文件路径


grub-md5-crypt可以生成一个密码

  

破坏grub:

dd if=/dev/zero of=/dev/sda count=1 bs=400 

sync

安装grub stage1

#grub

grub>root (hd0,0)

grub>setup (hd0)   #安装

grub>quit


安装grub第二种方式

#grub-install --root-directory=/boot的父目录 硬盘


系统/boot/grub/grub.conf文件丢失

grub>find (hd#    TAB键   

    >root (hd#,N)

    >kernel /vm... ro root=/dev/sda#

    >initrd /init...

    >boot


kernel初始化的过称

1、设备探测

2、驱动初始化(从initrd文件中装载驱动模块)

3、以只读挂载根文件系统

4、装载第一个进程init(PID:1)


/sbin/init    (/etc/inittab)

    upstart: ubuntu开发

    systemd:


cat /etc/inittab

    id:3:initdefault:

id:runleves:action:process

id:标识符

runlevels:在哪个级别运行此行

action:在什么情况下执行此行

process:要运行的程序


action的种类

initdefault:设定默认运行级别

sysinit:系统初始化

wait:等待级别切换至此级别时执行

ctrlaltdel:重启

powerfail:断电

powerokwait:断电之后又来电

respawn:一旦程序终止会重新启动


/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文件


[root@localhost init.d]# less abrtd 

#!/bin/bash

# chkconfig: 35 82 16

# description: Saves segfault data, kernel oopses, fatal exceptions


chconfig:runlevels SS KK

    当chkconfig命令来为此脚本在rc#.d目录创建链接时,runlevels:-表示,没有级别默认为S*开头的链接,runlevels表示默认创建为S*开头的链接,除此之外的级别默认设置为K*开头的链接;S后面的启动优先级为SS所表示的数字;K后面关闭优先次序为KK所表示的数字。

description:用于说明此脚本的简单功能:\,续行


chkconfig --list 查看所有独立守护服务的启动设定

chkconfig --add  SERVER_NAME 添加服务

chkconfig --del SERVER_NAME 删除服务

chkconfig --level RUNLEVELS SERVER_NAME {on|off}


创建独立守护进程(

vim myserver.sh

#!/bin/bash

#chkconfig:2345 77 22

#description:test server


lockfile=/var/lock/subsys/mychkconfig


status() {

if [ -e $lockfile ]; then

    echo "Running.."

else

    echo "Stopped."

fi

}


usage() {

echo "`basename $0` (start|stop|restart|status)"

}

case $1 in

start)

    echo "starting..."

    touch $lockfile

;;

stop)

    echo "stoping..."

    rm -f $lockfile &> /dev/null

;;

status)

    status

;;

restart)

    echo "restarting..."

;;

*)

    usage

esac


mv myserver.sh /etc/rc.d/init.d/myserver

chckconfig --add myserver


/etc/rc.d/rc.local:系统最后启动执行的一个脚本


/etc/inittab的任务:

1、设定默认运行级别

2、运行系统初始化脚本

3、运行指定运行级别对应的目录下的脚本

4、设定Ctrl+Alt+Del组合键的操作

5、定义UPS电源在电源故障/恢复时执行的操作

6、启动虚拟终端(2345级别)

7、启动图形终端(5级别)


守护进程的类型

    独立守护进程

    xinetd:超级守护进程

        瞬时守护进程:不需要关联至运行级别

yum install xinetd -y    安装超级守护进程


chroot:切换根

ldd:显示二进制文件所依赖的库

你可能感兴趣的:(kernel,grub,inittab,init.d,系统启动过称)