系统启动流程

POST->BIOS->MBR->Kernel->initrd->/sbin/init
首先主板加电自检,之后选择启动次序,之后找到硬盘上的MBR,MBR中的BootLoader找到内核,并将内核和(initrd)中间件一并装入内存,内核配合中间件的驱动加载/sbin/init,中间件退出。(中间件:由于内核精简化,不能装载所有设备的驱动,而内核又要读取/sbin/init的分区,所以这时需要一个中间件来提供驱动程序来让内核去加载init。中间件和内核必须在一个分区。红帽5中中间件叫initrd,红帽6中中间件叫initramfs)(这到底对不对。。,不对的话请指点。。)

[root@bogon ~]# ls -l /boot
total 19661
-rw-r--r--. 1 root root    97862 Aug 31  2010 config-2.6.32-71.el6.x86_64
drwxr-xr-x. 3 root root     1024 Mar  8 08:17 efi
drwxr-xr-x. 2 root root     1024 Mar  8 08:21 grub
-rw-r--r--. 1 root root 13831382 Mar  8 08:21 initramfs-2.6.32-71.el6.x86_64.img
drwx------. 2 root root    12288 Mar  8 08:13 lost+found
-rw-r--r--. 1 root root   160542 Aug 31  2010 symvers-2.6.32-71.el6.x86_64.gz
-rw-r--r--. 1 root root  2226490 Aug 31  2010 System.map-2.6.32-71.el6.x86_64
-rwxr-xr-x. 1 root root  3791744 Aug 31  2010 vmlinuz-2.6.32-71.el6.x86_64

内核:vmlinuz-2.6.32-71.el6.x86_64
库文件:/lib/modules/2.6.32/

chroot  目录  /bin/ksh:更换根目录
ldd   二进制文件:显示二进制文件的共享库

 

 

BootLoader(MBR)
  LILO:Linux loader
  GRUB:GRand Unified BootLoader
    Stage1:引导下一个
    Stage1_5:
    Stage2:/boot/grub/

grub:

[root@bogon /]# cat /boot/grub/grub.conf 
default=0       #设定默认启动的title编号,从0开始
timeout=5      #等待用户选择的超时时长,单位是秒
splashimage=(hd0,0)/grub/splash.xpm.gz     #指定背景图片
hiddenmenu    #隐藏菜单
password --md5 $1$RHX0m/$7y7NNuqn3cchnkvem8H5Y0 #进入grub时需要密码,可以使用grub-md5-crypt命令生成加密密码 title Red Hat Enterprise Linux (2.6.32-71.el6.x86_64) #内核标题,或操作系统名称,字符串可自由更改 root (hd0,0) #内核文件所在的设备,对grub而言,所有类型硬盘一律为hd,hd#,#代表第几块硬盘,对应的分区 kernel /vmlinuz-2.6.32-71.el6.x86_64 ro root=UUID=a8e066f8-73e8-452b-a326-100441cf93a9 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet #内核文件的路径,及传递给内核的参数 initrd /initramfs-2.6.32-71.el6.x86_64.img #ramdisk文件路径

 修复grub

当MBR中前446字节损坏,需要修复grub时

1.没有重启的情况下
命令 grub
grub> root (hd0,0)   必须是对应的磁盘,对应的分区
grub> setup (hd0)

2.没有重启的情况下
命令 grub-install  --root-directory=/到boot的父目录   /dev/哪块硬盘

[root@localhost ~]# grub-install  --root-directory=/ /dev/sda
Installation finished. No error reported.
This is the contents of the device map //boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

# this device map was generated by anaconda
(hd0)     /dev/sda

 3.grub.conf配置文件损坏重启情况下
开机后会进入grub模式
grub>find (hd0,0)/    按tab键可以查看这个磁盘这个分区上的内容,假如找到引导项进行下一步
grub>root (hd0,0)
grub>kernel /vmlinuz       指定当前分区下的内核
grub>initrd /initrd
grub>boot

 

kernel

内核初始化过程:
1.设备探测
2.驱动初始化(从initramfs文件中装载驱动模块)
3.以只读方式挂载根文件系统
4.装载第一个进程init(PID=1)

 用户空间访问监控内核的方式:/proc,/sys
设定内核参数值的方法(临时):
  echo  VALUE > /proc/sys/FILE
  sysctl -w  kernel.hostname=***     不用指定/proc/sys这个目录,sysctl已经制定好,后面的路径用点就可以
设定内核参数值的方法(永久):
  vim  /etc/sysctl.conf     对应的更改参数
  sysctl -p :让内核重新读取配置文件,更改完配置文件后可以立即生效

 

lsmod:查看内核模块
modprobe  模块名称:装载模块
modprobe  -r  模块名称:卸载模块
modinfo  模块名称:查看模块具体信息

insmod  模块路径:装载模块,需要填写模块路径
rmmod  模块名称:卸载模块

 

 

 

 

 

 

 

 

 

 

/sbin/init:
init的配置文件在/etc/inittab,每行都是由id:runlevels:action:process组成

[root@bogon ~]# cat /etc/inittab 
id:5:initdefault:

id:标识符
runlevels:在哪个级别运行此行
action:在什么情况下执行此行,空代表所有级别
  initdefault:设定默认运行级别
  sysinit:系统初始化
  wait:等待级别切换完成,只要切换到这个级别就执行
  ctrlaltdel:三个键按下时
  powerfail:停电时
  powerokwait:停电时又来电了
  respawn:一旦程序终止,会重新启动
process:要运行的程序

 

/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/inittab完成的任务:
1.设定默认运行级别
2.运行系统初始化脚本
3.运行指定运行级别对应的目录下的脚本
4.设定ctrl+alt+del组合键的操作
5.定义UPS电源在电源故障或恢复时执行的操作
6.启动虚拟终端(2345级别)
7启动图形终端(5级别)

 

守护进程类型:
  独立守护进程
      xinetd:超级守护进程
  瞬时守护进程

 

/etc/rc#.d指向/etc/rc.d/rc#.d指向/etc/init.d/下的各种脚本,其中各种脚本将在/etc/inittab初始化时,对应级别下启动或者停止,K开头的脚本将会停止,S开头的脚本将会运行

[root@bogon ~]# ls -ld /etc/rc* |head -5
lrwxrwxrwx.  1 root root    7 Mar 15 09:52 /etc/rc -> rc.d/rc
lrwxrwxrwx.  1 root root   10 Mar 15 09:52 /etc/rc0.d -> rc.d/rc0.d
lrwxrwxrwx.  1 root root   10 Mar 15 09:52 /etc/rc1.d -> rc.d/rc1.d
lrwxrwxrwx.  1 root root   10 Mar 15 09:52 /etc/rc2.d -> rc.d/rc2.d
lrwxrwxrwx.  1 root root   10 Mar 15 09:52 /etc/rc3.d -> rc.d/rc3.d
#/etc/rc*.d指向/etc/rc.d/rc*.d
[root@bogon ~]# ls -l /etc/rc.d/rc3.d/ | head -5
total 0
lrwxrwxrwx. 1 root root 16 Mar 15 09:54 K01smartd -> ../init.d/smartd
lrwxrwxrwx. 1 root root 16 Mar 15 09:54 K10psacct -> ../init.d/psacct
lrwxrwxrwx. 1 root root 19 Mar 15 09:53 K10saslauthd -> ../init.d/saslauthd
lrwxrwxrwx. 1 root root 15 Mar 15 09:53 K15httpd -> ../init.d/httpd
#/etc/rc.d/rc*.d内的脚本指向/etc/init.d/下的各脚本
[root@bogon ~]# ls -l /etc/init.d/ | head -5
total 324
-rwxr-xr-x. 1 root root  1708 Aug 26  2010 abrtd
-rwxr-xr-x. 1 root root  1725 Dec  2  2009 acpid
-rwxr-xr-x. 1 root root  2122 Jun  8  2010 atd
-rwxr-xr-x. 1 root root  3378 Jan 14  2010 auditd
#/init.d内的各种脚本

 /etc/init.d/下各种服务脚本

每个服务必须能够接收四个参数start,stop,restart,status

[root@localhost init.d]# cat bluetooth 
#!/bin/sh
#
# chkconfig: 345 50 83
# description: Turn HID adapters into Bluetooth ones
#
### BEGIN INIT INFO
# Short-Description: Trigger bluetoothd start-up
# Description: Trigger bluetoothd start-up
### END INIT INFO

# Source function library.

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

description:用于说明此脚本的简单功能,太长的话要用到\反斜线续行

chkconfig --list  [服务名]:查看所有独立服务;
chkconfig --add  脚本名称:添加服务
chkconfig --del  脚本名称:移除服务
chkconfig  [--level  启动级别]  服务名称  [on | off]:在某个级别启动或关闭服务,如果省略默认为2345级别

 

/etc/rc.d/rc.local:系统最后启动的一个服务,也就是脚本

 

 

 

运行级别:0-6
  0:halt
  1:single user mode,直接以管理员身份接入
  2:multi user mode,no NFS,不启动网络功能
  3:multi user mode,text mode,文本模式,默认模式
  4:reserved,保留级别,没有定义
  5:multi user mode,graphic mode,图形模式
  6:reboot

 级别配置文件/etc/inittab,修改id:#即可修改运行级别

[root@bogon ~]# cat /etc/inittab
id:5:initdefault:

 查看运行级别:

[root@bogon /]# runlevel
N 5
#N代表前一个级别没有切换过 [root@bogon /]# who -r run-level 5 2018-03-14 02:40

转载于:https://www.cnblogs.com/forlive/p/8568086.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值