标签:应用程序 ## ack control break lis usr image stream
内核组成部分:核心文件:/boot/vmlinuz-VERSION-release
ramdisk:辅助的伪根系统
CentOS 5: /boot/initrd-VERSION-release.img
CentOS 6,7: /boot/initramfs-VERSION-release.img
initramfs-2.6.32-696.el6.x86_64.img
initramfs-3.10.0-693.el7.x86_64.img
模块文件:/lib/modules/VERSION-release
启动流程
1.加载BIOS的硬件信息,获取第一个启动设备
2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息
3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4.核心执行init程序,并获取默认的运行信息
5.init程序执行/etc/rc.d/rc.sysinit文件
6.启动核心的外挂模块
7.init执行运行的各个批处理文件(scripts)
8.init执行/etc/rc.d/rc.local
9.执行/bin/login程序,等待用户登录
10.登录之后开始以Shell控制主机
Grub
grub的代码分三个阶段被加载.
grub stage 1
存在启动硬盘的0柱面,0磁道,第一个扇区中,即MBR中,MBR的前446个字节为以引导代码,
也就是grub stage 1,所谓的stage1 ,作用只有一个,就是找到grubstage1.5,然后将其加载的
到内存。
grub stage 1.5
它的作用就是用来识别常见的不同类型的文件系统,从而找到"/boot目录所在的分区"对应的文件
系统的驱动,驱动多大、存在于哪些扇区中,这些都是在安装操作系统的时候根据用户的设置自
动生成的,我们有了"/boot目录所在分区"的文件系统驱动,那么/boot/grub/stage2这样的比较
大的文件可以直接操作了。
grub stage 2
grub真正的核心程序,能让用户以菜单方式将操作系统加载、新增参数、修改选项,这些全都是
stage2的功用, 前面的grub stage 1和grub stage 1.5所做的事情就是为了运行grub stage 2
然后由stage 2借助grub.conf再去引导系统启动。
Grub.conf文件格式
? kernel:
自身初始化:
探测可识别到的所有硬件设备
加载硬件驱动程序(借助于ramdisk加载驱动)
以只读方式挂载根文件系统
运行用户空间的第一个应用程序:/sbin/init
init程序的类型:
? SysV: init, CentOS 5之前
配置文件:/etc/inittab
? Upstart: init,CentOS 6
配置文件:/etc/inittab, /etc/init/*.conf
? Systemd:systemd, CentOS 7
配置文件:/usr/lib/systemd/system
/etc/systemd/system
? 运行级别
/sbin/init CentOS6之前
行级别:为系统运行或维护等目的而设定;0-6:7个级别
0:关机
1:单用户模式(root自动登录), single, 维护模式
2: 多用户模式,启动网络功能,但不会启动NFS;维护模式
3:多用户模式,正常模式;文本界面
4:预留级别;可同3级别
5:多用户模式,正常模式;图形界面
6:重启
切换级别:init 数字
查看级别:runlevel ; who -r
修改运行级别:
/etc/inittab的这一行,id:3:initdefault:
centos 7 查看与设置运行级别
# systemctl get-default
systemctl set-default 这里写下面2条中的一条
runlevel 3级别:multi-user.target
runlevel 5级别:graphical.target
在引导菜单中中切换运行模式
开机按ESC键引导至此画面,按a
修改为0-6之间的数字,回车即可。
修改此文件中/etc/inittab的这一行才能保存下来
id:3:initdefault:
常用系统加载时的配置文件
/etc/rc.d/rc.sysinit: 系统初始化脚本
(1) 设置主机名
(2) 设置欢迎信息
(3) 激活udev和selinux
(4) 挂载/etc/fstab文件中定义的文件系统
(5) 检测根文件系统,并以读写方式重新挂载根文件系统
(6) 设置系统时钟
(7) 激活swap设备
(8) 根据/etc/sysctl.conf文件设置内核参数
(9) 激活lvm及software raid设备
(10) 加载额外设备的驱动程序
(11) 清理操作
chkconfig命令
? 查看服务在所有级别的启动或关闭设定情形:
chkconfig [--list] [name]
? 添加:
SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)
chkconfig --add name
#!/bin/bash
#LLLL 表示初始在哪个级别下启动,- 表示都不启动
# chkconfig: LLLL nn mm
? 删除:
chkconfig --del name
? 修改指定的链接类型
chkconfig [--level levels] name <on|off|reset>
--level LLLL: 指定要设置的级别;省略时表示2345
? ntsysv命令
服务脚本中,以下这一行是必须的。
# chkconfig: 2345 10 90
2345 > 指定运行级别
190 > 指定关闭顺序
rc N --> 意味着读取/etc/rc.d/rcN.d/
K*: K##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务
S*: S##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务
xinetd管理的服务
service 命令:手动管理服务
service 服务 start|stop|restart
service --status-all
? 瞬态(Transient)服务被xinetd进程所管理进入的请求首先被xinetd代理
配置文件:/etc/xinetd.conf、 /etc/xinetd.d/<service>
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}
与libwrap.so文件链接
用chkconfig控制的服务:
# chkconfig tftp on
注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向了
/etc/rc.d/rc.local脚本
? 不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于
/etc/rc.d/rc.local文件中
? /etc/rc.d/rc.local在指定运行级别脚本后运行
? 可以根据情况,进行自定义修改
标签:应用程序 ## ack control break lis usr image stream
原文地址:http://blog.51cto.com/191226139/2058878