Linux 开机启动顺序及一些常见无法开机情况排错(centos6)

Linux开机启动顺序


这个图就很完整的介绍了Linux的开机启动顺序
下面我就跟大家详细介绍下开机的一个启动流程
第一步,加载BIOS
当你打开计算机电源的时候,计算机就会首先加载BIOS信息,也就是所谓的加电自检。由此可见BIOS信息是如此的重要,计算机必须首先就找到它。这是因为BIOS中包含了CPU的相关信息、硬盘信息、内存信息、时钟信息、PnP特性等等。加电自检主要由硬件的部分来完成,BIOS被设计为用来初始化硬件组成,POST作为BIOS的组成部分,用于检验电脑硬件基本功能是否正常。如果POST失败,那么这个电脑也就不能使用。
第二步,读取MBR
BIOS加点自检如果确认硬件的基本功能正常后,会产生一个 BIOS 中断 INT 13H,该中断指向某个接入的可引导设备的引导扇区。
众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小为512字节。里面存放了预启动信息,分区表信息。系统找到MBR后,就会复制0X7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
第三步,Boot Loader
而BIOS所找到的包含有效的引导记录的第一个引导扇区将被装载到内存中,并且控制权也将从引导扇区转移到此段代码。

引导扇区是引导加载器真正的第一阶段。大多数 Linux 发行版本使用的引导加载器有三种:GRUB、GRUB2 和 LILO。GRUB2 是最新的,也是相对于其他老的同类程序使用最广泛的。系统通过读取内存中的grub配置信息,并依照此配置信息来启动不同的操作系统。
第四步,加载内核
内核的相关文件位于 /boot 目录下,这些内核文件可以通过其文件名进行识别,其文件名均带有前缀 vmlinuz。你可以列出 /boot 目录中的内容来查看操作系统中当前已经安装的内核。
在选定的内核加载到内存中并开始执行后,在其进行任何工作之前,内核文件首先必须从压缩格式解压自身。
系统会根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。
第五步,设定运行等级
内核被加载后,第一个运行的程序便是/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/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块
第八步,执行运行级别目录下rcX.d下的脚本
执行/etc/rc.d/rc和/etc/rc.d/rcX.d目录下的脚本。 X为缺省运行级别。用来完成相应的初始化工作和启动相应的服务。
第九步,执行/etc/rc.d/rc.local
执行用户自定义启动脚本。你可以把你想设置和启动的东西放到这里
第十步,执行/bin/login程序,等待用户登录
此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了

一些因为误操作导致系统无法启动的恢复方法

我们已经了解到了Linux系统的启动流程,而很多重要的启动文件及内核都是放在/boot分区下的,所以/boot分区下的文件很大程度决定了系统能不能正常启动。所以在这里我就跟大家讲几个在centos6中因为误操作导致系统无法正常启动的恢复方法。
1.MBR扇区前446字节被破坏。

当我们使用dd if=/dev/zero of=/dev/sda命令时一不小心破坏了前446字节,当时是没有任何影响的,但是你再次启动机器时会发现变成了这样

它会找不到系统又进入到装系统界面,这时候我们需要进入到救援模式也就是光盘系统


到这里时,系统询问你是否需要启用网络,我们这里不需要就选择NO

这里选择continue

系统会临时把根分区挂载到/mnt/sysimage

到这里我们选择启用shell

进入bash下我们把原来的系统挂载到/mnt/sysimage

输入grub-install命令来修复sda扇区
接着重启系统就能进入系统了
但是我们使用grub-install只能对主引导程序进行修复,而446到512是分区表信息,所以我们如果破坏了512字节必须有备份才能修复,如果没备份那呵呵
2.删除/etc/fstab文件的修复方法

系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。
而如果我们删了/etc/fstab/文件后再次启动系统就会变成这样

同样,我们也需要进入救援模式,和上个步骤一样,进入shell后我们要临时把主分区挂载到一个目录下

我们再在/etc下创建fstab表

我们在底行模式输入r!blkid把各分区信息调出来在进行编写

因为我已经测试过多次所以对自己分区所挂载的目录都了如指掌,但如果你不清楚也不要紧,也可以手动挂载分区,完成后进入目录下查看文件,就可以知道这个分区所对应的挂载点了。
文件编写完后,重启系统就能进入系统了。
3.删除/boot/目录下的所有文件后的修复

我们知道/boot下存放的是启动Linux的一些核心文件,如果把这些文件删除后是肯定起不来系统的,那么如何修复呢。
删除后我们再次启动机器是这个界面

我们需要明确的是要恢复什么文件,能让系统启动我们需要boot下的内核文件,initd映象文件,以及grub配置文件。
首先我们先来恢复grub目录,这个时候还是要进入救援模式
步骤和前边都一样,这里我们同样需要用grub-install命令去在boot下恢复grub目录

之后我们来恢复内核文件,内核文件可以在我们光盘的rpm包中安装

接着我们用mkinitrd命令去生成initrd映像文件

最后在grub目录下写grub的配置文件grub.conf

我们为了能让系统启动可以只写这些就行了,当然我们也可以在GRUB启动菜单中写,但那个每次开机都需要重新写,所以还是写在配置文件中一劳永逸。
这样我们的系统就能正常启动了。

PS:我们每一次恢复大家进入系统时都会卡一段时间,那是因为系统正对我们新生成的文件进行重打标签,所以会比较慢,如果不想让系统打标签,可以把/etc/selinux/config文件中的SELINUX改为disabled就可以啦

原文地址:http://blog.51cto.com/13438667/2093438

时间: 2024-10-07 20:49:01

Linux 开机启动顺序及一些常见无法开机情况排错(centos6)的相关文章

Linux开机启动顺序简述

Linux的开机启动顺序 第一步:当然是加电了 第二步:加载BIOS设置,选择启动盘.这是因为因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了.在BIOS将系统的控制权交给启动硬盘第一个扇区之后,就开始由Linux来控制系统了. 第三步:加载磁盘中MBR中的grub MBR(Master Boot Record):即主引导分区,是启动盘的前512字节,里面存放了预启动信息和分区信息.前

Linux引导启动顺序

1.所有的__init函数在区段.initcall.init中还保存了一份函数指针,在初始化时内核会通过这些函数指针调用这些__init函数,并在整个初始化完成后,释放整个init区段(包括.init.text,.initcall.init等).注意,这些函数在内核初始化过程中的调用顺序只和这里的函数指针的顺序有关,和这些函数本身在.init.text区段中的顺序无关.在2.4内核中,这些函数指针的顺序也是和链接的顺序有关的,是不确定的.在2.6内核中,initcall.init区段又分成7个子

linux修改启动顺序,登录后提示,启动级别

修改启动顺序 # vim  /etc/inittab ....... d:3:initdefault: #找到这一行,d:3:initdefault:最小化启动 d:5:initdefault:图形界面启动 #去掉开机等待的5s vi /boot/grub/menu.lst timeout=5    #设置开机选项描述,默认为5秒 设置登录成功之后的提示信息 /etc/motd文件设置成功登录后的提示信息,默认情况下,此文件里是没有内容的. 成功登录后立刻显示/etc/motd文件里的所有内容,

linux驱动启动顺序

首先,我们可以查看Linux内核编译完成后的System.map文件,在这个文件中我们可以看到macb(dm9161驱动模块)链接到了dm9000驱动之前,如下所示: c03b6d40 t __initcall_tun_init6 c03b6d44 t __initcall_macb_init6 c03b6d48 t __initcall_dm9000_init6 c03b6d4c t __initcall_ppp_init6 c03b6d50 t __initcall_ppp_async_in

linux开机启动顺序

1.加载BIOS 2.读取MBR 3.Boot Loader(引导程序加载) 4.加载内核 5.依据inittab文件来设定运行等级  0:关机 1:单用户模式 2:无网络支持的多用户模式 3:有网络支持的多用户模式 4:保留,未使用 5:有网络支持有X-Window支持的多用户模式 6:重新引导系统,即重启 6.init进程执行rc.sysinit 设定PATH.设定网络配置(/etc/sysconfig/network).启动swap分区.设定/proc 7.启动内核模块 8.执行不同运行级

linux的开机启动顺序概述

1 加载BIOS硬件信息, 并获取第一个启动设备的代号;2 读取第一个启动设备的MBR的引导加载程序的启动信息;3 加载核心操作系统的核心信息, 核心开始解压缩, 并且尝试驱动所有的硬件设备;4 核心执行init程序并获取运行信息;5 init执行/etc/init.d的脚本;6 启动核心的外挂模块/etc/modeprobe.d/中的脚本;7 init执行运行各个批处理脚本;8 init执行/etc/init.d/rc.local文件;9 执行/bin/login程序, 等待用户登录;10 登

linux的启动顺序

http://sunjiehui.blog.51cto.com/

监听器启动顺序和java常见注解

3、linux启动顺序以及grub.conf文件详解

本节课主要讲解了linux的启动顺序以及grub.conf文件的详细讲解,后期的课程会更详细讲解linux的启动过程. 更多视频试听课程:http://yunpan.cn/cVSrHAk8ExAd9  访问密码 aa19