Linux的引导过程剖析

大家在安装完Linux后,有没有留心过Linux的引导过程呢?本文就尝试以通俗的语言来描述这一过程和相关的各种情况,了解了Linux的引导过程后,您在面对Linux引导过 程的出现的各种问题时就能做到心中有数了。

  Linux的一个吸引人的特性就是用户可以自行定制整个系统,你可是运行一个只有1M的“迷你”Linux,也可以运行一个几G的强大Linux。而无论你运行怎样的Linux,你都是先从引导程序开始运行的。对于普通用户,大多都是在个人电脑上运行Linux的。个人电脑,又叫PC机,是我们常见的使用Intel或AMD的芯片的电脑。当我们接通PC机的电源之后,CPU会执行第一条指令,第一条指令通常是使CPU能跳跃到BIOS的入口地址上,然后BIOS就开始进行开机自检,包括对内存等硬件进行检测,如果存在其它设备的也自带有BIOS(比如SCSI或RAID设置等),也会执行它们。完成自检后的BIOS会根据设定好的启动设备和启动顺序来启动真正的操作系统,如Linux(本文以Linux为例)。

  对于PC机,有以下几种设备可以作为启动设备来使用:

  1) 硬盘
  这是最常用的启动设备,硬盘有IDE接口和SCSI接口的两种,由于IDE硬盘价格比SCSI硬盘要便宜的多,所以,大多数PC机都使用的是IDE硬盘。一台PC机中可能有多个硬盘,用户可以在PC机的CMOS设置哪块硬盘首先启动。

2) 软盘
  软盘是PC机必备的设备之一。常用作安装系统或作为系统应急盘使用。也出现了很多一张软盘上的Linux系统。

  3) 光盘驱动器
  光盘驱动器也是PC机必备的设备之一,包括CDROM、DVDROM、以及各种刻录机等。现在多数用户都是通过光驱来安装Linux的。

  4) USB盘
  随USB盘的出现,许多主板也都开始支持从USB设备上来启动系统了。USB盘的容量远大于软盘,目前有取代软盘的趋势。

  5) 网卡的Boot ROM
  有一些网卡带有Boot ROM芯片,可将引导信息写入Boot ROM,许多主板都支持Boot ROM启动。常用于无盘工作盘环境中。

  无论系统选择了哪一种启动设备,它都将会去将该设备起始地址的内容读入内存,如果你的启动设备是IDE硬盘,系统就会去去读取硬盘的第一个扇区(这个扇区通常被称做主引导扇区,又称MBR),并将这个扇区的内容读入内存,然后运行它。到这一步的时候是引导Linux操作系统的关键了,这一步将尝试去启动Linux的引导程序,如果找不到引导程序,将无法引导Linux。许多人在无法启动Linux的时候,其实大多都是引导程序损坏或是配置不当所造成的。

  那么什么是引导程序呢?其实你每天打开电脑,所接触到的第一个程序就是引导程序。它的责任是载入操作系统内核软件并把控制权转交给它。对于Linux来说引导程序就是负责在启动计算机时装入Linux的Kernel,并将计算机的控制权交给Kernel,然后Kernel再进一步初始化剩余的操作系统,直到Linux显示用户登录画面。由此可见引导程序对于一个操作系统来是非常重要的。Linux的引导程序有很多种,最为常见是lilo和grub。

  1) lilo
  lilo是用于Linux的灵活多用的引导程序。它并不依赖于某一特定文件系统,能够从软盘和硬盘引导Linux内核映像,当然它也能够引导其它操作系统。在grub出现之前,lilo可谓Linux引导程序的最佳选择。而目前仍然也很多人在使用它。

  2) grub
  grub是比lilo新的一个功能强大的引导程序。专门处理Linux与其他操作系统共存的问题。它可以引导的操作系统有Linux、OS/2、Windows系列、BeOS、Solaris、FreeBSD、NetBSD等。它的优势在于支持大硬盘、支持开机画面(能支持到1024x768的画面)、支持菜单式选择,并且分区位置改变后不必重新配置,使用非常方便。较新发行的各版本Linux大多采用grub作为默认的引导程序。

  3) 其它引导程序
  如果你没有安装lilo或grub,或者你的lilo或grub损坏了(比如不小心覆盖了MBR),那么你将无法直接引导Linux。还好,这时候你还可以通过其它方式来引导,比如:Linux的引导盘,或者是利用loadin、syslinux等程序来从ms-dos中载入Linux。

如果引导程序成功后,Linux内核就接管了系统,开始了Linux的启动过程(关于Linux的启动过程将另文介绍)。但如果引导过程的发生错误又将如何处理呢?

  1.首先分析屏幕显示的错误信息

  引导程序本身所显示的错误信息都是有含义的,需要认真阅读。比如:

  lilo的错误信息 

  当lilo启动完成时,会在屏幕上显示字符串"lilo",其实这其中的每个字母背后都对应着特定的操作。如果lilo在某个部分出了错,我们就可以根据屏幕上当前出现的字母推断出故障原因。比如:当屏幕上什么都没出现,就可能表示lilo还未被安装或者lilo所在的分区未被设为active状态。而屏幕显示”li“,则表示lilo引导程序的第一部分能够将lilo引导装入程序的第二部分装入,但却不能执行。这可能是因为硬盘参数设置不当或者是因为在移动/boot/boot.b时没有运行map安装程序。而屏幕显示"lil",则可能是介质故障或硬盘参数设置不当,无法从map文件中装载描述符表......,详细的错误信息解释也可以从相关网站上找到。

  grub的错误信息:

  和lilo相比grub的信息要好理解一些,因为它是直接用英语来表达的,而不是用符号。比如:"Hard Disk Error"、"Read
Error"、"Selected disk doesn't exist"、"Disk geometry error"、"Device
string unrecognizable"、"Attempt to access block outside
partition"、"Partition table invalid or corrupt"等。详细的错误信息解释也可以从相关网站上找到。

  2.通过光盘或软盘引导进入系统,修复原引导程序

  通过分析屏幕显示的错误信息后,应该能大致找到原引导程序的出错原因。这时候可以通过光盘或软盘引导进入系统。许多Linux的发行光盘就是可以启动的,比如:slackware就是很好的引导光盘。进入系统后,可以重装引导程序或者重新设置引导程序。

(0)

相关推荐

  • Linux的引导过程剖析

    大家在安装完Linux后,有没有留心过Linux的引导过程呢?本文就尝试以通俗的语言来描述这一过程和相关的各种情况,了解了Linux的引导过程后,您在面对Linux引导过 程的出现的各种问题时就能做到心中有数了. Linux的一个吸引人的特性就是用户可以自行定制整个系统,你可是运行一个只有1M的"迷你"Linux,也可以运行一个几G的强大Linux.而无论你运行怎样的Linux,你都是先从引导程序开始运行的.对于普通用户,大多都是在个人电脑上运行Linux的.个人电脑,又叫PC机,是我

  • Java Synchronized锁升级原理及过程剖析

    目录 前言 工具准备 对象的内存布局 锁升级过程 偏向锁 轻量级锁 重量级锁 总结 前言 在上篇文章深入学习Synchronized各种使用方法当中我们仔细介绍了在各种情况下该如何使用synchronized关键字.因为在我们写的程序当中可能会经常使用到synchronized关键字,因此JVM对synchronized做出了很多优化,而在本篇文章当中我们将仔细介绍JVM对synchronized的各种优化的细节. 工具准备 在正式谈synchronized的原理之前我们先谈一下自旋锁,因为在s

  • 基于python中pygame模块的Linux下安装过程(详解)

    一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查是否安装了pip 打开一个终端窗口,并执行如下命令: Python2.7中: zhuzhu@zhuzhu-K53SJ:~$ pip --version pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7) Python3.X中: z

  • 通过SSH连接本地linux虚拟机的过程记录

    实验环境: 物理机 Windows 10 x64 物理网卡信息 IPv4地址:192.168.123.205 子网掩码:255.255.255.0 默认网关:192.168.123.1 虚拟机VMware Workstation14 Cent OS 6.7 x64 VMnet8信息: IPv4地址:192.168.21.0 子网掩码:255.255.255.0 默认网关:192.168.21.2 一.修改VMware的网络设置 位置:工具栏->编辑->虚拟网络编辑器[管理员] NAT设置-&g

  • dubbo服务注册到nacos的过程剖析

    目录 前言 简述过程 源码剖析具体实现 服务注册 服务订阅 结语 前言 前面聊到到了我们的dubbo服务从redis迁移到nacos注册中心,迁移后发现,会时不时的抛一个异常 ERROR com.alibaba.nacos.client.naming - [CLIENT-BEAT] failed to send beat:, 所以有了这个剖析过程,当然最后查明异常是我们的SLB网络映射问题,和nacos没有关系. dubbo版本:2.7.4.1 nacos client版本:1.0.0 naco

  • Node交互式的SFTP上传实现过程剖析

    目录 背景 存在问题 查阅资料 最后的实现 总结 背景 由于业务的原因,我们日常的测试环境,都是通过脚本,将本地打包的代码,进行SFTP上传到对应的测试机目录的(这个业务在测试环境没有CI/CD). 最近由于安全问题,测试机的权限被收紧了,需要进行交互式的SFTP(即上传时需要用到令牌做二次校验). 存在问题 此项目用的 ssh2-sftp-client 作为SFTP上传插件,主要是通过自定义的webpack-plugin,在构建完之后进行SFTP上传. 因为原来的stfp配置,是不支持交互式S

  • Linux开机启动过程详解

    计算机开机是一个神秘的过程.我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面.然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或者错误信息.了解计算机开机过程有助于我们修复开机可能出现的问题. 最初始阶段 当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主板上的硬件(硬盘,网络接口,键盘,串口,并口).现在大部分的BI

  • linux安装apache过程中注意的问题

    作为最常用的web服务器,Apache可在大多数的电脑操作系统中使用,而作为自由和开放源码的类Unix操作系统linux来说,它和apache可以说的上是黄金搭档.本篇向大家介绍一下Apache在linux系统下的安装和使用. 一.首先要下载apache软件,大家可以在apache的官网自行下载,我这里下载的是apache目前的最新版本--httpd-2.4.18.tar.gz 二.下载apache以后,接下来要做的并不是马上开始安装,我个人觉得应该先规划一下安装的目录结构.首先明确我们使用ap

  • 安装LINUX的详细过程图解

    步骤二,安装: 重新启动,打开你的光驱,把盘放里面,记得在CMOS里面设置成光驱启动哟,然后就进入第一个画面了(由于LINUX安装时无法抓图,所以我用数码相机拍的,图片质量很差,请见谅.) ,版本不是问题,所有的LINUX安装差不多,出现几排字,上面是要你选择图形界面安装,或是文字界面安装,屏幕最下面有个BOOT:的提示符,在这里直接按回车就是图形安装,输入TEXT然后回车就是文字安装,建议你使用图形的界面进行安装,如果直接能够进入图形安装,说明你的显卡配置不成问题了,文字的其实也差不多,不同的

  • Netty分布式ByteBuf使用SocketChannel读取数据过程剖析

    目录 Server读取数据的流程 我们首先看NioEventLoop的processSelectedKey方法 这里会走到DefaultChannelConfig的getAllocator方法中 我们跟到static块中 回到NioByteUnsafe的read()方法中 我们跟进recvBufAllocHandle 继续看doReadBytes方法 跟到record方法中 章节总结 我们第三章分析过客户端接入的流程, 这一小节带大家剖析客户端发送数据, Server读取数据的流程: 首先温馨提

随机推荐