Fedora12 Linux启动过程
来源:互联网 发布:mysql增删改查 面试 编辑:程序博客网 时间:2024/05/01 15:30
1. 加载BIOS。
BIOS(Basic Input Output System),是固化到计算机内主板上一个ROM芯片上的程序。保存CPU相关信息、设备启动顺序信息、硬盘信息、内存信息等等。
打开计算机电源第一项工作即加载BIOS,进行POST(Power On Self Test自检),对硬件进行检测;第二步进行本地设备的枚举和初始化。
2. 读取MBR 。
MBR(Master Boot Record),位于硬盘第0磁道第一扇区,大小512字节,存放预启动信息、分区表信息。
要引导一个操作系统,BIOS运行时会按照CMOS的设置定义的顺序,搜索处于活动状态可以引导的设备。通常Linux都从硬盘上引导,而MBR中包含主引导加载程序。当MBR被加载到RAM以后,BIOS将控制权交给MBR。
查看MBR内容,可以使用以下语句:
# dd if=/dev/sda of=mbr.bin bs=512 count=1
# od -ax mbr.bin | tail -n 10
001000=0d512 Byte,512B为一个扇区的大小。aa55是MBR结束标志。 1. 运行Boot Loader Grub引导程序不能由仅有512B的MBR完整表示,因此MBR引导程序开始加载第二阶段的引导程序,然后读取/boot/grub/menu.lst组织文件里的数据,menu.lst中列出了所有可用的操作系统和启动参数,grub按照配置信息来启动不同的操作系统。 2. 加载内核 Linux不能直接加载内核,需要首先加载initrd文件。 initrd(initial RAM disk),初始RAM磁盘,是在系统引导过程中挂载的一个临时根文件系统。文件中包含各种可执行程序和驱动程序,与内核绑定并作为内核引导过程的一部分进行加载,然后再将initrd卸载释放内存。 根据grub设定的内核映像所在路径,系统读取内核映像,并进行解压缩操作。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。在start_kernal()的最后调用init()函数,进入下一步设定运行等级。 3. 用户层init依据inittab文件来设定运行等级 init进程是系统中所有进程的父进程,init进程繁衍出完成通常操作所需的子进程,这些操作包括:设置机器名、检查和安装磁盘及文件系统、启动系统日志、配置网络接口并启动网络和邮件服务,启动打印服务等。Linux中init进程的主要任务是按照inittab文件所提供的信息创建进程,由于进行系统初始化的那些进程都由init创建,所以init进程也称为系统初始化进程。 内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。 其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下: 0:关机 1:单用户模式 2:无网络支持的多用户模式 3:有网络支持的多用户模式 4:保留,未使用 5:有网络支持有X-Window支持的多用户模式 6:重新引导系统,即重启 4. Init进程执行rc.sysinit 在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。 5. 执行不同运行级别的脚本程序 根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。 6. 执行etc/rc.d/rc.local程序 让用户在初始化完成之后,登录之前个性化设置启动的东西。 7. 建立终端,Mingetty启动操作系统的登录。 8. 登录Shell,建立用户与操作系统的交互。 注1:简化步骤: 机器上电->BIOS启动->MBR引导->GRUB引导->initrd-> linux内核->各种服务->系统login 注2:用cat /etc/inittab查看inittab中的内容时,显示如下图: 不像网上广泛出现的后面有si::sysinit:/etc/rc.d/rc.sysinit等内容,我的理解为fedora12版本没有将后面的进程加入到inittab中。 Shelley
- Fedora12 Linux启动过程
- linux fedora12 qt4 eclipse
- Fedora12 Linux安装步骤
- fedora12 eclipse3.5 启动异常
- 关于fedora12 NFS启动失败
- Fedora12 Linux命令行提示符设置
- Linux Fedora12 下,安装VIM
- Linux Fedora12 下,安装SAMBA
- fedora12下启动SSH便于远程登录
- linux启动过程
- Linux启动过程综述
- Linux启动过程概述
- Linux启动过程综述
- Linux启动过程综述
- Linux启动过程综述
- Linux启动过程综述
- Linux启动过程
- Linux启动过程详解
- 人生的34个好习惯,共勉
- 希尔排序 实现
- Win7 下 VS2008 SP1 KB945140 安装失败 解决方法
- 将现有的Access数据库升级为SQL数据库
- 内核命令处理
- Fedora12 Linux启动过程
- UNIX环境高级编程学习之第十二章线程控制-可重入(线程安全)的getenv方法
- 正则表达式
- EFF_STL2
- Oracle中的external table和 materialized view学习
- JSON中,java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决
- 常用的键盘ASCⅡ码
- WEB超链分析算法
- JavaScript构造函数