Linux系统启动流程
来源:互联网 发布:淘宝无节操买家秀图片 编辑:程序博客网 时间:2024/05/16 20:29
Centos6启动流程总括
了解系统的启动流程有助于排除系统启动过程中的一些bug,以下是系统启动的流程图:
1. 系统启动步骤:
加载BIOS的硬件信息,获取第一个启动设备
POST: Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、 串并行接口、键盘、 CD-ROM光驱等硬件情况的检测。读取第一个启动设备MBR的引导加载程序(grub)的启动信息
MBR:446字节,bootloader:64字节,分区表:2字节, 55AA:分区标志位加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件信息
核心执行init程序,并获取默认的运行信息
init程序执行/etc/rc.d/rc.sysinit文件
启动核心外挂模块
init执行运行各个批处理文件(scripts)
init执行/etc/rc.d/rc.local
执行/bin/login程序,等待用户登录
登录之后开始以shell控制主机
2. init程序类型
Upstart: init,CentOS 6
配置文件:/etc/inittab, /etc/init/*.confSystemd:systemd, CentOS 7
配置文件:/usr/lib/systemd/system /etc/systemd/system
3. init初始化
init读取其初始化文件: /etc/inittab
初始运行级别(RUN LEVEL)
/etc/inittab 设置系统默认的运行级别–>id:3:initdefault:系统初始化脚本
对应运行级别的脚本目录
捕获某个关键字顺序
定义UPS电源终端/恢复脚本
在虚拟控制台生成getty
在运行级别5初始化X
4. /etc/rc.d/rc.sysinit: 系统初始化脚本
设置主机名
设置欢迎信息
激活udev和selinux
挂载/etc/fstab文件中定义的文件系统
检测根文件系统,并以读写方式重新挂载根文件系统
设置系统时钟
激活swap设备
根据/etc/sysctl.conf文件设置内核参数
激活lvm及software raid设备
加载额外设备的驱动程序
清理操作
5. 启动流程总结
- /sbin/init –> (/etc/inittab) –> 设置默认运行级别 –> 运行系统初始脚本、完成系统初始化 –> (关闭对应下需要关闭的服务)启动需要启动服务 –> 设置登录终端
- CentOS 6启动流程:
POST –> Boot Sequence(BIOS) –> Boot Loader –>Kernel(ramdisk) –> rootfs –> switchroot –> /sbin/init –(/etc/inittab, /etc/init/*.conf) –> 设定默认运行级别 –> 系统初始化脚本rc.sysinit –> 关闭或启动对应级别的服务 –> 启动终端
6. grub legacy
stage1:MBR(如果MBR破坏,系统就找不见启动盘,无法启动)
stage1_5:MBR之后的扇区,让stage1的BootLoader可以识别stage2所在硬盘分区的文件系统
stage2:磁盘分区(/boot/grub/,如果目录下文件损坏启动系统时会直接进入grub模式)
- 配置文件: /boot/grub/grub.conf <– /etc/grub.confstage2及内核等通常放置于一个基本磁盘分区
功用:
(1) 提供启动菜单、并提供交互式接口
a:内核参数
e: 编辑模式,用于编辑菜单
c: 命令模式,交互式接口
(2) 加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏启动菜单
(3) 为菜单提供了保护机制
为编辑启动菜单进行认证
为启用内核或操作系统进行认证- 配置文件: /boot/grub/grub.conf <– /etc/grub.confstage2及内核等通常放置于一个基本磁盘分区
7. grub安装
识别硬盘设备
(hd#,#)
hd#: 磁盘编号,用数字表示;从0开始编号
#: 分区编号,用数字表示; 从0开始编号(hd0,0) 第一块硬盘,第一个分区
grub-install(重新生成/boot/grub/目录下的文件但没有grub.conf文件,得自己写)
安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到 DIR/boot目录下
grub-install –root-directory=DIR /dev/DISK(DISK为安装系统的硬盘,不是分区,要记住!)
grub(在grub命令行执行命令,但依赖/boot/grub/目录下的文件,如果误删或者没有,执行第一种方法)
grub> root (hd#,#) #指出/boot目录在哪里
grub> setup (hd#) #把grub安装在哪个硬盘上
手动在grub命令行接口启动系统(如果/boot/grub/grub.conf文件损坏无法进入系统),grub命令行支持自动补全,只能启动一次,最后还是要写到配置文件里的
grub> root (hd#,#)grub> kernel /vmlinuz-VERSION-RELEASE roroot=/dev/DEVICEgrub> initrd /initramfs-VERSION-RELEASE.imggrub> boot
配置文件: /boot/grub/grub.conf
default=#: 设定默认启动的菜单项;落单项(title)编号从0开始
timeout=#:指定菜单项等待选项选择的时长
splashimage=(hd#,#)/PATH/XPM_FILE:菜单背景图片文件路径,可不写
hiddenmenu:隐藏菜单
password [–md5] STRING: 启动菜单编辑认证,进入单用户模式时要验证密码
title TITLE:定义菜单项“标题” , 可出现多次
root (hd#,#):查找stage2及kernel文件所在设备分区;为grub的根
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核
initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件
password [–md5|–encrypted ] STRING: 启动选定的内核或操作系统时进行认证
- linux系统启动流程
- linux系统启动流程
- Linux系统启动流程
- Linux 系统启动流程
- Linux系统启动流程
- Linux系统启动流程如下
- linux系统启动流程分析
- linux系统启动流程
- Linux系统启动流程
- Linux系统启动引导流程
- Linux系统启动流程
- Linux系统启动流程
- linux系统启动流程
- Linux系统启动流程
- linux系统启动流程一览
- Linux系统启动流程
- Linux系统启动流程分析
- Linux系统启动流程
- 拨开字符编码的迷雾--编译器如何处理文件编码
- 口述H.264编码器框架
- 私服安装以及局域网中资源管理库的访问与使用
- Java中String与byte[]的转换
- 几种生成随机数的方法
- Linux系统启动流程
- 排序算法总结与代码实现
- 611. Valid Triangle Number
- xpath小练习
- Codeforces #269 (Div. 2)D. MUH and Cube Walls(KMP)
- Leetcode算法学习日志-338 Counting Bits
- 装饰者模式
- 抽象类,接口,与类的关系
- bzoj 2346: [Baltic 2011]Lamp spfa