本文共 3097 字,大约阅读时间需要 10 分钟。
OS(Linux)
POST -->BIOS (Boot Sequence)-->MBR (bootloader,446)-->Kernel-->initramfs-->(ROOTFS) /sbin/init(etc/inittab)
文件系统进程管理 内存管理网络管理安全功能驱动程序RAMROM/ 根所在分区系统 rootfs内核设计风格: 模块化核心:动态加载,内核模块内核:/lib/modules/"内核版本号命令的目录"/vmlinuz-2.6.32/lib/modules/2.6.32/RedHat5 :ramdisk -->initrd RedHat6 : -->initramfschroot : 切换根文件chroot /PATH/TO/TEMPROOT [COMMAND...]nashswitch_rootldd : 显示二进制文件所依赖的共享库ldd /PATH/TO/BINARY_FILE单内核:Linux (LWP)核心:ko (kernel object)ARM架构 / X86so ()微内核:Windows,Solaris 支持线程安全模式、VGA模式 维护模式运行级别:0--60:halt1:sigle user mode,直接以管理员身份切入2:multi user mode,no NFS3:multi user mode,text mode4:reserved5:multi user mode,graphic mode6:reboot详解启动过程
bootloader (MBR)LILO :Linux LOaderGRUB:GRand Unified Bootloaderstage1 :MBRstage1_5 :stage2 :/boot/grubdefault=0 #设定默认启动的title的编号,从0开始timeout=5 #等待用户选择的超时时长,单位是秒splashimage=(hd0,0)/grub/splash.xpm.gz #grub的背景图片hiddenmenu #隐藏菜单password redhat 定义密码password --md5 title CentOS 6 (2.6.32-696.el6.x86_64) #内核标题,或操作系统名称,字符串,可自由修改root (hd0,0) #内核文件所在的设备:对grub而言,所有类型硬盘一律hd; 格式为(hd#, N);hd#, #表示第几个磁盘;最后的N表示对应磁盘的分区;kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto LANG=zh_CN.UTF-8 rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet #内核文件路径,及传递给内核的参数initrd /initramfs-2.6.32-696.el6.x86_64.img ramdisk文件路径查看运行级别:runlevel:who -r查看内核release号:uname -r 安装grub stage1:#grubgrub>root (hd0,0)setup (hd0)安装grub第二种方式:
#grub-install --root -directory=path/to/boot's_parent_dir /PATH/TO/DEVICEgrub>find
grub>root (hd#,N)grub>kernel /PATH/TO/KERNEL_FILEgrub>initrd /PATH/TO/INITRD_FILEgrub>bootKernel初始的过程:
1、设备探测2、驱动初始化 (可能会从initrd(initramfs)文件中装载驱动模块)3、以只读挂载根文件系统;4、装载第一个进程init (PID :1);/sbin/init :(/etc/inittab)
upstart :ubuntu,d-bus,event-drivensystemd :id:runlevels:action:process
id:标识符runlevels :在哪个级别运行此行;action :在什么情况下执行此行;process :要运行程序;ACTION:
initdefault :设定默认运行级别sysinit :系统初始化wait :等待级别切换至此级别时执行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文件##:关闭或启动的优化次序,数据越小越优先被选定
先关闭以k开头的服务,后启动以s开头的服务;si::sysinit:/etc/rc.d/rc.sysinitOS 初始化服务类脚本:SysV:/etc/rc.d/init.dstart|stop|restart|statusreload|configtestchkconfig命令chkconfig :runlevels SS KK当chkconfig命令来为此脚本在rc#.d目录创建链接时,runlevels表示默认创建为s*开头的链接,-表示没有级别默认为s*开头的链接除此以外的级别默认创建为k*开头的链接;s后面的启动优先级为SS所表示的数字;K后面关闭优化次序为KK所表示的数字;
description :用于说明此脚本的简单功能;\,续行
chkconfig --list :查看所有独立守护服务的启动设定; 独立守护进程chkconfig --list SERVICE_NAMEchkconfig --add SERVICE_NAMEchkcofnig --del SERVICE_NAMEchkconfig --level RUNLEVELS SERVCIE_NAME {on|off}如果省略级别指定,默认为2345级别;/etc/rc.d/rc.local:系统最后启动的一个服务,准确说,应该执行的一个脚本;/etc/inittab的任务:
1、设定默认运行级别;2、运行系统初始化脚本;3、运行指定运行级别对应的目录下的脚本;4、设定Ctrl+Alt+Del组合键的操作;5、定义UPS电源在电源故障/恢复时执行的操作;6、启动虚拟终端(2345级别);7、启动图形终端(5级别);守护进程的类型:
独立守护进程xinetd:超级守护进程,代理人瞬时守护进程:不需要关联至运行级别转载于:https://blog.51cto.com/14087650/2347704