博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
系统启动流程
阅读量:6352 次
发布时间:2019-06-22

本文共 3097 字,大约阅读时间需要 10 分钟。

OS(Linux)

POST -->BIOS (Boot Sequence)-->MBR (bootloader,446)-->Kernel-->initramfs-->(ROOTFS) /sbin/init(etc/inittab)

文件系统
进程管理
内存管理
网络管理
安全功能
驱动程序
RAM
ROM
/ 根所在分区系统 rootfs
内核设计风格: 模块化
核心:动态加载,内核模块
内核:/lib/modules/"内核版本号命令的目录"/
vmlinuz-2.6.32
/lib/modules/2.6.32/
RedHat5 :ramdisk -->initrd
RedHat6 : -->initramfs
chroot : 切换根文件
chroot /PATH/TO/TEMPROOT [COMMAND...]
nash
switch_root
ldd : 显示二进制文件所依赖的共享库
ldd /PATH/TO/BINARY_FILE
单内核:Linux (LWP)
核心:ko (kernel object)
ARM架构 / X86
so ()
微内核:Windows,Solaris 支持线程
安全模式、VGA模式 维护模式
运行级别:0--6
0:halt
1:sigle user mode,直接以管理员身份切入
2:multi user mode,no NFS
3:multi user mode,text mode
4:reserved
5:multi user mode,graphic mode
6:reboot

详解启动过程

bootloader (MBR)
LILO :Linux LOader
GRUB:GRand Unified Bootloader
stage1 :MBR
stage1_5 :
stage2 :/boot/grub
default=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:
#grub
grub>root (hd0,0)
setup (hd0)

安装grub第二种方式:

#grub-install --root -directory=path/to/boot's_parent_dir /PATH/TO/DEVICE

grub>find

grub>root (hd#,N)
grub>kernel /PATH/TO/KERNEL_FILE
grub>initrd /PATH/TO/INITRD_FILE
grub>boot

Kernel初始的过程:

1、设备探测
2、驱动初始化 (可能会从initrd(initramfs)文件中装载驱动模块)
3、以只读挂载根文件系统;
4、装载第一个进程init (PID :1);

/sbin/init :(/etc/inittab)

upstart :ubuntu,d-bus,event-driven
systemd :

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.sysinit
OS 初始化
服务类脚本:
SysV:/etc/rc.d/init.d
start|stop|restart|status
reload|configtest
chkconfig命令
chkconfig :runlevels SS KK

当chkconfig命令来为此脚本在rc#.d目录创建链接时,runlevels表示默认创建为s*开头的链接,-表示没有级别默认为s*开头的链接除此以外的级别默认创建为k*开头的链接;s后面的启动优先级为SS所表示的数字;K后面关闭优化次序为KK所表示的数字;

description :用于说明此脚本的简单功能;\,续行

chkconfig --list :查看所有独立守护服务的启动设定; 独立守护进程
chkconfig --list SERVICE_NAME
chkconfig --add SERVICE_NAME
chkcofnig --del SERVICE_NAME
chkconfig --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

你可能感兴趣的文章
三星电子出售希捷和夏普等四家公司股份
查看>>
任志远:当云计算遇上混合云
查看>>
思科联手发那科 用物联网技术打造无人工厂
查看>>
智慧城市首要在政府利用大数据的智慧
查看>>
2015年物联网行业:巨头展开专利大战
查看>>
以自动化测试撬动遗留系统
查看>>
网络安全初创公司存活之道
查看>>
《图解CSS3:核心技术与案例实战》——1.2节浏览器对CSS3的支持状况
查看>>
《Android应用开发》——2.4节应用类
查看>>
继 One Step 后,锤子科技 Big Bang 正式开源
查看>>
《数据科学:R语言实现》——2.5 使用Excel文件
查看>>
《淘宝店铺设计装修一册通》一2.5 抠图工具的简单运用
查看>>
《音乐达人秀:Adobe Audition实战200例》——实例4 收音机音乐节目转录到电脑里...
查看>>
《JavaScript应用程序设计》一一3.1 过时的类继承
查看>>
千万PV是什么意思?
查看>>
Amazon 推出 API 网关使用计划
查看>>
互联网流量超出路由器上限 或致全球断网
查看>>
《基于ArcGIS的Python编程秘笈(第2版)》——2.5 限制图层列表
查看>>
GNOME 地图 3.20 加入更多新特性 可用性得到加强
查看>>
《代码整洁之道:程序员的职业素养》导读
查看>>