Linux启动流程

简介:

POST->BIOS(Boot Sequence)->MBR(bootloader,446bytes)->Kernel(initrd)->(rootfs)/sbin/init

1、加电自检(PowerOnSelfTest)

开机自动映射rom中程序到cpu可以寻址的空间中,cpu执行指令检查基本硬件是否正常

2、BIOS(Boot Sequence)

如果正常则按照CMOS中保存的BootSequnece依次寻找对应设备上的MBR

3、MBR(BootLoader)

读取第一个MBR存在的设备中的BootLoader,并交与其控制权。

Linux下的常见BootLoader有两种:

   LILO: LInux LOader    不能引导1024柱面以后的分区内核(嵌入式)

   GRUB: GRand Unified Bootloader

GRUB是个程序,装在MBR的BootLoader当中来引动操作系统,但因为MBR空间有限,无法展示其特性,所以将GRUB分为2阶段程序

Stage1(被装载MBR当中)          主要目的是为了引导第二阶段

Stage1.5(/boot/grub/Stage1_5)  识别常见不同类型的文件系统

Stage2(/boot/grub/Stage2)      引导操作系统(突破了446字节的限制)

                              并借助配置件/boot/grub/grub.conf

/boot/grub/grub.conf配置文件作用

default=0#    设定默认启动的title编号

timeout=5#    等待用户选择的超时时长

splashimage=(hd0,0)/grub/splash.xpm.gz    grub的背景图片

hiddenmenu    隐藏菜单

passwordredhat    定义明文密码

password --md    定义密文密码 生成密文命令grub-md5-crypt修改grub需要密码

title Red Hat Enterprise Linux Server (2.6.18-238.el5)    内核标题或操作系统标题

root (hd0,0)    内核文件所在设备所有硬盘类型一律为hd(磁盘,分区)

kernel /vmlinuz-2.6.18-238.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

               内核文件路径,以及传递内核的参数cat /proc/cmdline

password --md      定义密文密码 生成密文命令grub-md5-crypt 启动此内核需要密码

initrd /initrd-2.6.18-238.el5.img    ramdisk文件路径;操作系统安装最后一步生成的

4、Kernel

设备探测

驱动初始化(可能会从initrd(RHEL6 initramfs)文件中装载驱动模块)

   向内核提供基本驱动能力,此后内核可以访问根文件系统,等待内核丰满之后,逐渐失去作用

以只读挂载根文件系统

装载第一个进程init

5、init(etc/inittab)

/sbin/init    其配置文件(etc/inittab)

   RHEL6.0    upstart    ubuntu    开源项目    并行启动很多进程/etc/init/

   systemd                                  更加快

/etc/inittab    主要任务

   1、设定偶人运行级别

   2、运行系统初始化脚本

   3、运行制定运行级别目录下的脚本

   4、设定Ctrl+Alt+Del组合键的操作

   5、定义UPS电源在电源故障/恢复时执行的操作

   6、启动6个虚拟终端(2345级别)

   7、启动图形终端(5级别)

id:runlevels:action:process

   id标示符

   runlevels在那个级别运行此行

   action什么情况下执行此行

       initdefault设定默认运行级别

       sysinit系统初始化

       wait等待级别切换至次级别时执行

       respawn一段程序终止再重新启动

       ctrlaltdel重启

       powerfail停电

       powerokwait电又来了

   process要运行的程序

si::sysinit:/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文件

/etc/rc.d/rc.local系统最后执行的一个脚本,不是特别麻烦的操作,不希望做成服务的可以在这里声明。



本文转自 ftmoonfans  51CTO博客,原文链接:http://blog.51cto.com/soulboy/1266162


相关文章
|
1月前
|
消息中间件 Unix Linux
Linux进程间通信(IPC)介绍:详细解析IPC的执行流程、状态和通信机制
Linux进程间通信(IPC)介绍:详细解析IPC的执行流程、状态和通信机制
55 1
|
1月前
|
Linux 编译器 Shell
Linux嵌入式系统之Linux嵌入式系统之交叉编译中gcc编译器的工作流程
Linux嵌入式系统之Linux嵌入式系统之交叉编译中gcc编译器的工作流程
18 0
|
1月前
|
存储 Linux Shell
Linux启动流程梳理值得收藏
Linux启动流程梳理值得收藏
43 1
|
2月前
|
Java Shell Linux
Linux下的Shell基础——流程控制(三)
Linux下的Shell基础——流程控制(三)
37 0
Linux下的Shell基础——流程控制(三)
|
3月前
|
缓存 Linux 编译器
Linux系统中u-boot启动流程分析(详解)
Linux系统中u-boot启动流程分析(详解)
51 1
|
3月前
|
Linux 调度 Android开发
分析 Linux 启动流程基本实现
分析 Linux 启动流程基本实现
15 0
|
3月前
|
中间件 Linux 芯片
一张图秒懂嵌入式Linux系统的启动流程
一张图秒懂嵌入式Linux系统的启动流程
72 0
|
3月前
|
运维 算法 Linux
【Linux】启动流程
【Linux】启动流程
33 0
|
3月前
|
监控 网络协议 算法
【Linux】引导流程
【Linux】引导流程
29 0
|
3月前
|
Linux Android开发 芯片
芯片启动:从Bootrom到Linux完整启动流程
芯片启动:从Bootrom到Linux完整启动流程
22 0