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:显示二进制文件所依赖的库