Linux 开机流程
来源:互联网 发布:蚁群算法例子 编辑:程序博客网 时间:2024/05/21 15:09
这里以RHEL 6 64bit为例,开机的大致流程;
- 加载 BIOS 的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置;
- 读取并执行第一个开机装置内 MBR 的 boot Loader (亦即是 grub等程序);
- 依据 boot loader 的设定加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序;
- 在硬件驱动成功后,Kernel 会去自动调用 init 程序,而 init 会取得 run-level 信息;
- init 执行 /etc/rc.d/rc.sysinit 档案来准备软件执行的作业环境 (如网络、时区等);
- init 执行 run-level 的各个服务之启动 (script 脚本);
- init 执行 /etc/rc.d/rc.local 档案;
- init 执行终端机仿真程序 mingetty 来启动login 程序,最后就等待用户登入啦;
加载 BIOS 的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置
开机首先会去加载BIOS(Basic Input Output System),并透过BIOS程序去加载CMOS的信息,并且CMOS内设定的信息取得主机的各项硬件配置。(e.g. CPU与接口的沟通频率),取得了这些信息之后,BIOS还会进行开机自我检测(Power-On Self Test, POST)。然后开始执行硬件侦测的初始化,之后再定义可开机的装置顺序
读取并执行第一个开机装置内 MBR 的 boot Loader (亦即是 grub等程序)
BIOS会指定开机的装置让我们可以读取磁盘中的操作系统核心档案。由于不同OS有不同的文件系统格式,因此我们必须要以一个开机管理程序来处理核心档案加载(load)的问题,开机因此这个程序就被称Boot Loader了。这个Boot Loader在开机装置的第一个扇区内(MBR Master Boot Record)。BIOS是透过硬件的INT 13中断功能来读取MBR的,也就是说BIOS能够侦测到你的磁盘,它就可以通过硬件INT 13号中断来读取该磁盘的第一个扇区内的MBR
一个电脑上装多重操作系统,为什么要先装Windows OS,因为装多重操作系统的时候,每一个系统都会保留一块启动扇区(boot sector)以便到时候启动操作系统,而且还会把启动程序(boot loader)放到系统的MBR,每一块硬盘就只有一个MBR,装第二个操作系统的时候会覆盖第一个操作系统放到系统的MBR的值,Windows系统的Loader预设不具有控制权的转交功能
boot loader的主要功能;
提供选单:用户可以选择不同的开机项目,在这个是多重引导的重要功能。
载入核心档案:直接指向可开机的程序区段来启动操作系统。
转交其他Loader: 将开机管理功能转交给其他的Loader来负责。
boot loader最终功能就是加载kernel文件。
依据 boot loader 的设定加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序
通过boot loader的管理而开始读取内核文件后,接下来,Linux就会将内核解压缩到内存中,并且利用内核的功能,开始测试和驱动周边设备。此时Linux内核会以自己的功能重新检测一次硬件,而不一定会使用BIOS检测到的硬件信息。内核此时才开始接管BIOS后的工作了。内核文件一般会放置在/boot里面,并且取名为/boot/vmlinuz
在硬件驱动成功后,Kernel 会去自动调用 init 程序,而 init 会取得 run-level 信息
在内核加载完毕进行完硬件检测与驱动程序加载后,此时主机硬件就准备就绪了,此时内核会主动调用第一个进程,就是/sbin/init。/sbin/init最主要的功能就是准备软件执行的环境,包括系统的主机名、网络设置、语系处理、文件系统格式及其他服务的启动。配置文件为/etc/inittab。而inittab内还有一个很重要的设置选项,就是默认的run level(启动执行等级)。
执行等级:Linux通过设置run level来规定系统使用不同的服务来启动,让Linux的使用环境不同。依据有无网络与有无X Window而将run level分为7个等级
0 - halt 系统直接关机
1 - single user mode 单用户维护模式,用在系统出问题是的维护
2 - Multi-user, without NFS 类似下面的runlevel3,但无NFS服务
3 - Full multi -user mode 完整含有网络功能的纯文本模式
4 - Unused 系统保留功能
5 - X11 与runlevel3类似,但加载使用X Window
6 - reboot 重新启动
由于runlevel 0/4/6不是关机、重新启动就是系统保留的,所以不能将默认的run level设置成这三个值,否则系统就会不断自动关机或者自动重启
/etc/inittab语法
[设置选项]:[run level]:[init的操作行为]:[命令选项]
设置选项:最多四个字符,代表init的主要工作项目,只是一个简单的说明
run level:该项目在哪些run level进行的意思。如果是35则代表runlevel3与5都会执行
init的操作行为:主要可以进行的动作项目意义有
init设定值
代表后面字段的指令可以无限制的再生(重新启动)。举例来说,tty1的mingetty产生的可登入得画面,在你注销而结束后,系统会再开一个新的可登入画面等待下一个登入
更多的设置可以参考man inittab的说明
init处理系统初始化流程(/etc/rc.d/rc.sysinit)
这个脚本主要是设定系统的环境
启动系统服务与相关的启动配置文件(/etc/rc.d/rc & /etc/sysconfig)
用户自定义开机启动程序(/etc/rc.d/rc.local)
参考来自鸟哥私房菜第三版
- linux开机流程分析
- Linux 开机流程分析
- Linux开机流程
- Linux开机流程--读书笔记
- Linux 开机启动流程
- linux开机流程
- LINUX开机流程详解
- linux开机启动流程
- LINUX开机流程详解
- Linux开机启动流程
- Linux 开机流程
- Linux 开机流程详解
- Linux开机流程详解
- Linux开机启动流程
- linux开机启动流程
- Linux的开机流程
- linux开机流程
- linux开机流程详解
- 无法与域Active Directory域控制器(AD DC)连接(虚机加域出错问题)
- J2SE之正则表达式验证QQ号
- Linux中环境变量文件及配置
- Redis学习手册(Sorted-Sets数据类型)
- 点亮屏幕和屏幕解锁
- Linux 开机流程
- SQL Server导入、导出、备份数据方法
- IOS 真机调试
- asp.net 伪静态 IIS设置后 直正HTML无法显示
- hbase解决海量图片存储
- android 计时器,倒计时
- 面向 C++ 的测试驱动开发
- 学习网址记录~~~~~~~~~~~~~~~~~~~·
- 经纬财富:南京现货白银新手入门投资须知