装好Linux后无法安装windows的解决方法

By admin in 3522vip on 2019年5月30日

解决办法:

1 背景

之前安装过Win7和Ubuntu的双系统,安装的过程是先安装Win7,然后安装Ubuntu,在安装Ubuntu时将GRUB引导程序安装在硬盘的主引导扇区中。按这样的安装顺序是因为Windows系统的引导程序无法自动检索Ubuntu系统的引导程序,而且安装Win7系统时,默认会将Windows系统的引导程序安装在硬盘的主引导扇区,这样就会造成无法进入Ubuntu系统。

将GRUB引导程序安装在主引导扇区固然方便,但是每当我们
要重新安装Windows系统时,就要重新安装Ubuntu系统或者GRUB引导程序。通过网上的一些资料,知道可以修改Win7系统的引导文件来引导Ubuntu系统,这样每次要重装Win7系统时只要再修改一些Win7系统的引导文件即可正确引导已安装的Ubuntu系统。过去的两天重装系统就打算用这种方式,然而折腾了一天一夜,最终还是没有成功。下面是我重装系统时做的一些功课,以及我的失败情况。

用一张dos启动盘,启动到dos下运行fdisk /MBR

2 主引导记录

这个命令就是重写0扇区引导程序。当你碰到Lilo无法删除的时候,就可以应用这个命令。

2.1 主引导记录MBR

参考资料:主引导记录 –
维基百科

主引导记录(Master Boot
Record,MBR),又称为主引导扇区,是计算机硬盘的第一个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)。主引导记录记录着硬盘本身的相关信息以及硬盘各个分区的大小以及位置信息。

主引导记录的组成包括:启动代码、硬盘分区表和魔数(0x55AA,表示主引导扇区的结束)。启动代码占据主引导扇区的前446个字节,其中的硬盘引导程序的主要作用是检查分区表是否正确并且在硬件完成自检以后将控制权交给硬盘上的引导程序。硬盘分区表占据主引导扇区的64个字节(偏移01BEH—偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。具体每个字节的定义可以参考下面的硬盘分区结构信息。

偏移

长度(字节)

意见

00H

1

分区状态:00Hà非活动分区;80Hà活动分区;其他数据没有意义

01H

1

分区起始磁头号(HEAD),用8位

02H

2

分区起始扇区号(SECTOR),占据02H的位0-5;该分区的起始磁柱号(CYLINDER),占据02H的位6-7和03H的全部8位

04H

1

文件系统标志位

05H

1

分区结束磁头号(HEAD),用8位

06H

2

分区结束扇区号(SECTOR),占据06H的位0-5;该分区的结束磁柱号(CYLINDER),占据06H的位6-7和07H的全部8位

08H

4

分区起始相对扇区号

0CH

4

分区总的扇区数

 

原因是0扇区的引导程序在安装linux之后成为linux的引导程序。格式化之后,引导程序仍然不变。必须将0扇区的引导程序变为MS的程序才行!图片 1

2.2 引导程序读取流程

当系统开机或重启时,

  1. BIOS加电自检(Power On self Test –
    POST)。BIOS执行的内存地址为FFFF:0000H处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
  2. 读取主引导记录。当BIOS检查到硬件正常并与CMOS中的设置相符后,按照CMOS中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(即主引导扇区)读入内存地址为0000:7C00H处。
  3. 检查0000:7DFEH-0000:7DFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示“NO
    ROM BASIC”,然后死机。
  4. 当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处,然后继续执行。
  5. 根据MBR中的引导代码启动相应分区的引导程序。

3 Win7引导过程基本知识

Xp系统的引导文件是boot.ini。如果存在多个系统,那么需要在该文件中进行设置。当MBR的引导代码启动xp系统所在分区的引导程序后,将读取boot.ini文件来显示启动选项。在Win7系统中没有了boot.ini文件,而是通过bootmgr和BCD(Boot
Configuration Data,启动配置数据)来进行引导配置。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2020 3522vip 版权所有