Linux开机流程以及运行级别
2014-12-21 17:02
288 查看
Linux开机流程
一、概念
1、boot loader: 领导装载程序,常用的有(Grub, spfdisk)2、Grub: 是一个多操作系统启动管理器,开机时领导不同系统,windows linux等
二、开机的流程
1、加载BIOS(basic input output system)的硬件信息,并进行自我测试2、读取并执行第一个开机装置内MBR(主引导记录扇区)的boot loader即grub spfdisk 等程序!
3、 grub(boot loader)就是一个多操作系统启动管理器,运行之后就是选择系统(boot loader --grup的功能之后在讲)
4、依据 boot loader 的设定加载kernel(也就是在第3步这里选择的系统的内核),加载进来的kernel在存储器中解压并执行,侦测硬件信息加载驱动程序
5、硬件驱动成功之后,kernel会主动呼叫第一个用户级的程序,init, init 会取得运行级别(runlevel) 的信息(run level 信息保存在 /etc/inittab档案中)
6、init 执行 /etc/rc.d/rc.sysinit 档案 来准备软件执行的环境(如 网络 ,时区等信息)具体信息可以 vim /etc/rc.d/rc.sysinit 去查看
7、init 执行 run-level 的各个服务即启动和这个run-level 对应的服务
8、 执行 /etc/rc.d/rc.local 档案 (这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里)
9、 init 执行终端机仿真程序 mingtty 来启动 login 程序,最后等待用户登录
三、Bios(basic input output system)的作用
1、Bios它是一组固化到计算机内主板上一个Rom(read only memory) 芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序,他里面的程序是被厂家烧录进去的,所以只能读不能改2、Cmos是微机主板上的一块可读写的RAM芯片,主要用来保存当前系统的硬件配置和操作人员对某些参数的设置.
3、透过bios 程序去加载cmos 的信息,并且藉由cmos内的设定值取得主机各硬件配置信息,如cup ,接口设备的沟通频率开机装置的顺序,各个接口设备的I/O地址等.
4、获取这些信息之后,Bios 还会进行开机自我测试,然后开始执行硬件侦测的初始化,并设定pnp装置,之后再定义出开机的装置顺序,接下来就会开始进行开机装置的数据读取(MBR相关任务开始) (MBR master boot record 主引导区)
5、由于系统软件大多都被放在硬盘上,所以Bios 会制定开机的装置好让我们可以读取磁盘中的操作系统核心档案。
6、由于不同操作系统的文件系统格式不同,因此我们必须要以一个开机管理程序来处理核心档案加载的问题,因此这个开机管理程序就被称为 boot loader !
7、这个boot loader 就安装在第一个扇区(sector)内,也就是我们说的MBR( master boot record 住引导记录区)
8、每种操作系统的 boot loader 都不同,这样的话Bios怎么读取 MBR中的内的boot loader那?
9、其实 BIOS是通过硬件的INT13中断功能来读取 MBR 中的内容,也就是说只要BIOS在硬件侦测的时候如果能够侦测到你的磁盘(不管是sata 还是ide接口)那就有办法透过INT 13 这条信道来读取该磁盘的第一个扇区你的MBR中的内容,这样的话 boot loader 也就能够被执行了!
四、Boot loader (引导装载程序)
1、Boot loader 的最主要功能就是要认识操作系统的文件格式,并加载选定的系统核心到住住存储器中去执行。2、由于每一种操作系统的文件格式不同,所以每种操作系统都有自己的boot loader
3、这样的话,当在一台机器上装多个操作系统怎么办因为MBR只有一个,而每种操作系统都有自己的boot loader ,其实每个filesystem 或主分割槽都会留Boot sector(引导扇区),来安装自己的boot loader 所以可以安装多系统的问题也就解决了
4、boot loader 的主要功能:
(1)、提供选单: 用户可以选择自己的开机项目,这也就是多重引导的重要功能。
(2)、载入核心档案: 直接指向可开机的程序区段,开始操作系统。
(3)、转交其他的boot loader : 将开机管理功能转交给其他的boot loader 负责。
** 由于具有选单功能因此我们可以选择不同的核心来开机
** 由于具有控制权转交的功能,因此我们可以加载其他boot sector 内的 boot loader !
5、当boot loader 的管理开始读取核心档案后,接下来Linux 就会将核心解压缩到主存储器中,并且利用核心的功能,开始测试与驱动各个周边的装置 如存储装置, cpu, 网卡,声卡等。此时linux 核心会以自己的功能重新侦测硬件信息,而不一定会使用BIOS侦测到的信息,也就是说此时开始 加载进来的Linux 核心 接管了 BIOS的工作!
6、到此内存中已经加载了 kernel 并使用kernel 的功能来侦测硬件以及尝试挂在根目录取得额外的驱动程序,但是现在的内核不认识磁盘,没办法挂在根目录,所以也就没法读取 /lib.modules/内的驱动
7、内核不认识磁盘,那如何挂在跟目录,如何加载驱动,那就得借助 虚拟文件系统(也叫临时文件系统 initrd)来解决
8、虚拟文件系统的特色是,他能够通过 boot loader 加载到内存中, 然后这个档案会被解压并在内存中仿真成为一个根目录,且此仿真目录能够提供一支可执行的程序,透过这个程序来加载开机过程中所需要的模块,而通常这些模块就是 USB RAID SCSI 等文件系统与磁盘接口的驱动程序,等这些程序载入完毕后 会帮助核心重新呼叫 /sbin/init 来开始后续的正常开机流程。
9、到此kernel 加载了需要的驱动程序,因为有了驱动可以找到磁盘,所以就挂载了 根目录文件系统,并释放这个虚拟文件系统。
10、核心主动加载第一个用户级程序 /sbin/init
五、第一个用户级程序init ,及配置文件 /etc/inittab 以及运行等级 run level
1、在核心加载完毕,进行硬件信息这测与驱动程序加载之后,此时你的主机硬件应该已经准备就绪了,此时核心会主动的呼叫第一个用户级程序,那就是 /sbin/init (init 被称为所有进行的祖进程,也是第一个启动的用户级进程)2、 /sbin/ init 最主要的功能就是准备软件执行的环境,包括系统的主机名,网络设定,语系设置,系统文件格式及其他服务的启动, 而所有的动作都会透过 init 的配置文件及 /etc/inittab 来规划。
3、 /etc/inittab 中配置了系统的运行级别 , 这个档案的最下面 有 id : n : initdefault 这就是设置的系统运行级别
4、为何要设置系统的运行级别,这个有什么不同: linux藉由 设定的 run level 来规划,系统使用不同的服务来启动,让linux 的使用环境不同,按照有无网络与有无 xwindow可分为 7 个等级
5、 run level 运行级别
(0)、run level 0: 关机
(1) 、run level 1 : single mode 即单人维护模式,一般忘记 root的密码,系统有问题什么的使用这个模式
(2)、run level 2 : without NFS 即无NFS系统
(3)、run level 3: 完整含有网络功能的纯文本模式
(4)、run level 4: 系统保留
(5)、run level 5: xwinods 与3 是类似的只是纯文本变为窗口模式
(6)、run level 6: 重启 reboot
6、启动时执行一次的文件, /etc/rc.d/rc.sysinit 即系统的数据设定完成!
7、启动系统 服务与 启动配置文件 /etc/rc,d/rc n(你的系统级别,按照不同的级别启动不同的服务) /etc/sysconfig
8、加载核心让整个系统准备接受指令来工作,在经过 /etc/rc.d/rc.sysinit 的系统模块与相关硬件信息的初始化,你的系统应该已经顺利工作了!
六、运行级别的切换
1、事实上不同的运行级别 只是加载的服务不同,,这里已 run level 3 和 run level 5 为列: 只是他们的 /etc/rc.3d 和 /etc/rc.5d 内的Sxxname 和 Kxxname 不同而已2、先对比 /etc/rc.3d 和 /etc/rc.5d 内k 和 s开头的档案
3、在新的 run level 内多的 K 都被关闭掉
4、在新的 run level 内多的S 都被开启,而都存在的就不用管了。
ok 这样运行级别就转化过来了!
相关文章推荐
- Linux开机流程和运行级别
- Linux曲径通幽:Linux启动流程、运行级别、开机自启动、修复
- Linux开机启动流程及运行级别和常用组合键 == 第一次所学知识框架==
- Linux的运行级别与解决开机故障一例 ( by quqi99 )
- [开机启动]Linux开机自启和运行级别
- Linux学习日记 —— 15.1.1 Linux启动管理-启动流程-运行级别
- linux服务的开机启动和运行级别(chkconfig)
- Ubuntu的运行级别与其他的linux不同以及他的修改方法
- Linux CentOS 7 设置开机运行级别为3(文本多用户级别)
- linux 运行级别 以及chkconfig的用法
- Linux系统下的启动流程&运行级别&用户管理
- Linux关机、重启命令以及运行级别
- Linux启动顺序、运行级别及开机启动
- linux 下查看服务和与服务的运行级别以及自动启动相关的配置
- linux运行级别和开机过程
- 系统启动流程 chroot ldd,linux运行级别
- Linux的7中运行级别以及含义
- linux chkconfig命令 开机启动 运行级别 service sysv-rc-conf
- ubuntu以及ubuntu类linux系统的运行级别的理解
- linux 启动流程以及自启动及mini2440开机自启动