RiverYoung 2012-03-17
一、 启动关机的流程与加载程序
1. Linux启动流程
a) 加载BIOS的硬件信息,并获取第一个启动设备的代号
b) 读取第一个启动设备的MBR的引导加载程序的启动信息
c) 加载核心操作系统的核心信息,核心开始解压缩,并且尝试驱动所有硬件设备
d) 核心执行init程序并获取运行信息(/etc/inittab)
e) init执行/etc/rc.d/rc.sysinit文件(各个版本都不相同,如/etc/init.d/boot和/etc/init.d/rc)
f) 启动核心的外挂模块(/etc/modprobe.conf)
g) init执行运行的各个批处理文件
h) init执行/etc/rc.d/rc.local文件
i) 执行/bin/login程序,等待用户登录
j) 登陆之后开始以Shell控制主机
2. 用户自定义引导启动程序(/etc/rc.d/rc.local)
3. 关于模块的配置/etc/modprobe.conf启动过程中,读取的服务相关设置文件都记录在/etc/sysconfig目录下
核心放在/lib/modules/`uname-r`/kernel中,/etc/modules/`uname -r`/modules.dep文件记录了在核心支持的模块的各项依赖性,可以使用depmod命令建立该文件。
核心模块的观察:lsmod、modinfo
核心模块的加载与删除:modprobe(先解决模块的依赖性,推荐)、insmod、rmmod
4. 引导加载程序(例如Grub)有两种加载方式:
直接指定并取用核心文件,加载到主存储器中
将加载程序的控制权移交给下一个加载程序,链式加载程序(chain loader)的方式
5. 解决启动过程中的问题可能用到chroot,比如先启动一个Linux系统,然后再chroot到另外一个不能正常启动的Linux系统进行修复。
二、 函数库管理
1. ldconfig与/etc/ld.so.conf,将动态函数库加载到内存(高速缓存,cache)中,这样就可以提高动态函数库的读取速度。将动态函数库加载到高速缓存(cache)中的过程如下:
a) 在/etc/ld.so.conf中写下“想要读入高速缓存中的动态函数库所在的目录”
b)利用ldconfig将/etc/ld.so.conf的数据读入到高速缓存中
c) 同时在/etc/ld.so.cache文件中记录数据
2. ldd可以判断某个可执行的二进制文件有什么动态函数库
ldd [-vdr] [filename]
三、 系统守护程序
1. 根据守护程序的启动与管理方式,可以将守护程序分为可独立启动的独立启动守护程序,以及通过统一安全机制管理的超级守护程序。
superdeamon(超级守护程序)通过统一的守护程序(xinet)来负责唤起服务。Xinet的启动脚本写在/etc/init.d/xinet.d里,挂在这个守护程序里面的服务设置项目写在/etc/xinet.d.conf与/etc/xinet.d/*目录的任何文件中。
2. 整个服务开机就能启动的地方有两处,一处是在守护程序启动(/etc/rc.d/rc[0-6].d/*)目录下,另一处是/etc/rc.d/rc.local。
使用chkconfig管理开机启动的相关服务。语法:
chkconfig --list
chkconfig [--add|--del][service_name]
chkconfig --level [0123456][service_name] [on|off]
3. 如何将自己建立的服务加入chkconfig的管理中呢?只要将该服务加入init可管理的脚本中,即/etc/init.d中。
相关阅读: