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 )
[[email protected] ~]# grub-md5-crypt
Password:
Retype password:
$1$25qnL$IIL4Fq1crGaF6T6fWAyLl0 这就是md5加密后的密码
再次进入启动选择菜单时若要修改启动级别就要先 输入p 再输入密码才可以修改
runlevel命令:查看当前运行级别
[[email protected] ~]# runlevel
N 5 (N 为前一个级别,没有就为N,5就是当前使用的启动级别)
who -r 也可以查看运行级别 :
[[email protected] ~]# who -r
运行级别 5 2015-07-26 07:43
uname -r 查看内核
[[email protected] ~]# 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,访问后就立即关闭