zoukankan      html  css  js  c++  java
  • linux系统启动过程

    --

     

     

     

     

     centos7 grub配置文件在grub2中

     

    GNU GRUB 和GRUB是GRand Unified Bootloader的缩写,它是一个多重操作系统启动管理器。用来引导不同系统,如windowslinux

    X86架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流。

    Windows也有类似的工具NTLOADER;比如我们在机器中安装了Windows 98后,我们再安装一个Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XP。NTLOADER就是一个多系统启动引导管理器,NTLOADER 同样也能引导Linux,只是极为麻烦罢了。

    PowerPC 架构的机器中,如果安装了Linux的Powerpc 版本,大多是用yaboot 多重引导管理器,比如Apple机用的是IBM PowerPC处理器,所以在如果想在Apple机上,安装Macos 和Linux Powerpc 版本,大多是用yaboot来引导多个操作系统

    因为X86架构的机器仍是主流, 所以GRUB和LILO 仍然是我们最常用的多重操作系统引导管理器。

    引导过程

    编辑

    由硬盘启动时,BIOS通常是转向第一块硬盘的第一个扇区,即主引导记录(MBR)。

    装载GRUB和操作系统的过程,包括以下几个操作步骤:

    装载记录

    基本引导装载程序所做的的事情就是装载第二引导装载程序。

    装载Grub

    这第二引导装载程序实际上是引出更高级的功能,以允许用户装载一个特定的操作系统

    装载系统

    linux内核。GRUB把机器的控制权移交给操作系统

    不同的是,微软操作系统都是使用一种称为链式装载的引导方法来启动的,主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区

    设备名称

    GRUB不区分IDE硬盘和SCSI硬盘,统一使用hdx来标识。软盘使用fdx来标识,x为硬盘号,x从0开始计数。

    GRUB使用(hdx,y)标识某个硬盘中的某个分区,x表示硬盘号,y表示分区号,x和y都从0开始计数。

    在windows中,系统的第一个硬盘驱动器表示为(hd0),其中的第一个分区表示为(hd0,0),以此类推。

    (hd0,0)。表示C盘。

    (hd0,4)。表示D盘。当然这里指的是(第一个逻辑分区,如果D盘也是主分区,应该写成hd0,1)

    由于主分区只能有四个,所以第一硬盘的四个主分区分别用(hd0,0)~(hd0,3)来表示;逻辑分区则从(hd0,4)开始算,即第一逻辑分区用(hd0,4),第二逻辑分区用(hd0,5)来表示,依次类推。

    一般windwos的分区都是一个主分区,其余是逻辑分区。因此C盘用(hd0,0),D盘用(hd0,4)来表示。 光盘用(fd)标识,第一个软驱用(fd0)表示。

    Win7 的引导分两部分:MBR 程序和 BCD (Vista 之前称为 NTLDR ,其实他们是一个东西,但改进了很多)。MBR 程序就是 MBR 里面前 446 字节。Windows 每次用官方安装盘安装系统,都会强行覆盖这里的程序为自己的 MBR 程序,这个 MBR 的程序功能很简单,就是启动分区表里面标记为激活的分区。
    之后 MBR 程序启动激活分区里面的 BCD (BCD 在分区特殊位置安装有特殊程序)。BCD 实现 F8 功能和正式启动 Windows7 。

    Linux 这里不能启动,是因为 MBR 前 446 字节里面本来是 Linux 的引导程序 GRUB 。Win7 安装完,会覆盖 MBR 这里的 GRUB 程序,导致不能启动 GRUB 而是启动 BCD 来启动 Windows。
    但 BCD 本身不支持直接启动 Linux ,所以你的 Linux 现在不能启动了。只能用 BCD 启动一个可以引导 Linux 的程序来过渡。这种软件其实不多现在基本也就 GRUB 可以选择。

    解决办法有两个:
    1、修复 GRUB 的 MBR 程序,这个实现很简单,只要能启动 Linux 就能修复,不管你是启动一个 GRUB for DOS 还是找个 Linux LiveCD 只要进入了 Linux 就能进行修复。这种修复文章网上一大堆。
    2、用 Win7 的 BCD 启动 GRUB 来过渡启动到 Linux 。但 BCD 设置起来很麻烦,不如 XP 直接修改 boot.ini 方便,直观。这里的 GRUB 用 GRUB for NTLDR 版本就可以,但需要单独找 for BCD 的安装方法。不能照抄 XP 的修改 boot.ini 方法。

  • 相关阅读:
    把本地的jar包安装到maven库中
    mybatis 查询
    freemarker
    python——线程相关
    【python-sql】sql操作时遇到的坑
    专项测试——移动app安装包检测
    【Android端 adb相关】adb相关总结
    for 语句
    Python2.x与3​​.x版本区别
    Python 运算符
  • 原文地址:https://www.cnblogs.com/fpcbk/p/12517347.html
Copyright © 2011-2022 走看看