linux系统启动流程
2016-08-05 14:54
417 查看
一.硬件引导启动 1.通电之后,设备初始化硬件,显卡,内存,硬盘,时间等 2.接下来,设备会搜索启动介质,USB,光驱,硬盘等 3.系统会装在硬盘上,而接下来设备便会搜索硬盘的第一个分区的第一个扇区,即MBR,共512字节, MBR分为三部分 (1).Bootloader,占446字节,即所谓的GRUB (2).DPT,占64字节,即分区表 (3).Magic Number,占2字节,即校检位 二.GRUB(多操作系统启动程序)引导启动 当电脑启动了磁盘上的MBR之后,并将控制权交给MBR中的程序(stage1),stage1执行,判断自己是否 GRUB,如果是且配置了stage1_5,则加载stage1_5,stage1_5用于识别文件类型(像windows的NTFS, Linux的ext4格式等),这相当于一个桥梁,接着,stage2(存在于磁盘里)被加载并执行,由stage2 借助stage1_5驱动文件系统,并查找grub.conf,显示启动菜单供用户选择,然后根据用户的选择或默 认配置加载操作系统内核,并将控制权交给操作系统内核,由内核完成操作系统的启动。 三.Sysvinit引导启动(内核引导启动) 内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来 进行初始化工作。 其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:” ,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下: 0:关机 1:单用户模式 2:无网络支持的多用户模式 3:有网络支持的多用户模式 4:保留,未使用 5:有网络支持有X-Window支持的多用户模式 6:重新引导系统,即重启 四.init进程执行rc.sysinit(系统初始化) 在 设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做 的工作非常多,包括设定PATH、 设定网络配置(/etc/sysconfig/network)、启动swap分区、设定 /proc等等。而这些内容可以由/etc/rc.d中的rc.sysinit文件查看到。 线程init的最终完成状态是能够使得一般的用户程序可以正常地被执行,从而真正完成可供应用程序运 行的系统环境。它主要进行的操作有: (1) 执行函数do_basic_setup(),它会对外部设备进行全面地初始化。 (2) 构建系统的虚拟文件系统目录树,挂接系统中作为根目录的设备(其具体的文 件系统已经在上一步 骤中注册)。 (3) 打开设备/dev/console,并通过函数sys_dup()打开的连接复制两次,使得文件号0,1 ,2 全部指向 控制台。这三个文件连接就是通常所说的“标准输入”stdin,“标准输出”stdout和“标准出错信息” stderr这三个标准I/O通道。 (4) 准备好以上一切之后,系统开始进入用户层的初始化阶段。内核通过系统调用execve()加载执T子相 应的用户层初始化程序,依次尝试加载程 序"/sbin/initl"," /etc/init"," /bin/init',和 “/bin/sh。只要其中有一个程序加载获得成功,那么系统就将开始用户层的初始化,而不会再回到 init()函数段中。至 此,init()函数结束,Linux内核的引导 部分也到此结束。 五.启动内核模块 具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。 六.执行不同运行级别的脚本程序 根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,具体由/etc/rc.d/rc?.d来完成 相应的初始化工作和启动相应的服务。 七.执行etc/rc.d/rc.local 你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然: # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don’t # want to do the full Sys V style init stuff. rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东 西放到这里。 八.执行bin/login程序,进入登陆状态 此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系 统了。
相关文章推荐
- 操作系统的一些基础知识和linux系统启动流程
- Linux系统裁剪(1)之Linux系统启动流程
- Linux系统启动流程
- linux系统启动流程
- CentOS5和6的系统启动流程
- 系统启动流程
- Linux系统之启动流程
- Linux系统启动流程
- linux 定时任务的设置
- 伴随 Linux 成长的职业生涯
- Linux内核设计与实现 (二) 内核开发的准备
- rsync 同步centos源
- linux命令之vmstat
- Kali Linux渗透基础知识整理(三):漏洞利用
- Linux内核设计与实现 (一) 内核简介
- devm_regmap_init_i2c
- 如何成为优秀的驱动开发工程师
- win10 / linux计划任务
- LINUX c++线程池框架
- centos_6.7_系统初始化