第3章 安装windows与Linux双系统

来源:互联网 发布:手机淘宝充值中心 编辑:程序博客网 时间:2024/05/29 23:44

1 UEFI+GPT与Legacy+MBR的区别

  更多信息请参考我的另一篇文章——第2章 主机规划与磁盘分区。

1.1 磁盘分区格式

  一般来说,磁盘分区表有两种格式:MBR和GPT。

1.1.1 MBR格式

  磁盘的0号扇区也叫主引导扇区(512B),它包含主引导记录(MBR,446B)、分区表(DPT,64B)、硬盘有效标志(2B)。

  主引导记录中存放的是引导加载程序(boot loader)。由于boot loader太大,所以分为两部分,MBR中存放的叫做初级程序加载程序(IPL)。IPL通过活动分区中的启动文件来定位二级引导加载程序。
  分区表大小为64B,最多有四个记录,记录了各个主分区的起始和结束柱面号。因此,最多支持4个主分区或3个主分区+1个扩展分区(包含多个逻辑分区),扩展分区必须划分为逻辑分区才能使用,1个扩展分区可以划分多个逻辑分区。

这里写图片描述
  MBR分区表不支持容量大于2.2TB的分区(一些硬盘制造商将他们的容量较大的磁盘升级到了4KB的扇区,这意味着MBR的有效容量上限提升到了16 TB)

1.1.2 GPT格式

  在GTP磁盘的第一个数据块中同样有一个与MBR(主引导记录)类似的标记,叫做PMBR。PMBR的作用是,当使用不支持GPT的分区工具时,整个硬盘将显示为一个受保护的分区,可让MBR类磁盘管理软件把GPT看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘。UEFI并不从PMBR中获取GPT磁盘的分区信息,它有自己的分区表,即GPT分区表。

    这里写图片描述 这里写图片描述

  GPT的分区方案之所以比MBR更先进,是因为在GPT分区表头中可自定义分区数量的最大值,也就是说GPT分区表的大小不是固定的。在Windows中,微软设定GPT磁盘最大分区数量为128个。另外,GPT分区方案中逻辑块地址(LBA)采用64位二进制数表示,可以计算一下2^64是一个多么庞大的数据,以我们的需求来讲完全有理由认为这个大小约等于无限。除此之外,GPT分区方案在硬盘的末端还有一个备份分区表,保证了分区信息不容易丢失。

1.2 Windows的引导方式与多重引导原理

  目前主要的系统引导方式也有两种:传统的Legacy BIOS和新型的UEFI BIOS
  Legacy BIOS无法识别GPT分区表格式;UEFI BIOS可同时识别MBR分区和GPT分区,所以UEFI下,MBR和GPT磁盘都可用于启动操作系统。不过由于微软限制,UEFI下使用Windows安装程序安装操作系统是只能将系统安装在GPT磁盘中。
  UEFI是一个微型操作系统,放在固件中,能够识别FAT文件系统,运行efi程序。

1.2.1 Legacy BIOS+MBR引导原理

  引导过程:开机→POST→硬件初始化→MBR→活动分区→PBR→\bootmgr→\Boot\BCD→\Windows\system32\winload.exe。

  • 开机,POST。
  • POST通过后,初始化硬件。
  • 读入MBR中的IPL。
  • IPL确定分区表中的活动主分区(也叫激活主分区),并找到该分区的引导扇区(分区的第一个扇区)中的分区引导记录(PBR),载入PBR中的启动管理器(bootmgr.exe)。
  • 启动管理器导入该分区的根目录下boot文件夹里的BCD文件(启动设置数据),然后根据BCD文件配置内容定位并加载二级引导载入程序winload.exe(位置:根目录\Windows\system32\winload.exe)来启动系统,如果BCD中有多个配置项,则会让用户选择要启动的系统。

  bootmgr和BCD合称为启动文件,IPL和二级引导载入程序合称为boot loader。

  MBR磁盘格式下,windows系统的启动文件(bootmgr、BCD)必须存放在活动的主分区内,这样才能找到系统载入程序(MBR磁盘分区格式下,只允许有一个分区是活动的)。
  如果使用Windows的官方安装程序,则会自动建一个隐藏的活动主分区,写入MBR和启动文件。之后在其它分区安装系统时,会覆盖之前的MBR和启动文件。当然也可以不使用这个隐藏分区,而将启动文件放在系统分区的PBR中,并设置系统分区为活动分区。但要注意的是:虽然可以在多个分区中安装系统,但只有一个分区是活动分区,能够引导系统,删除该分区,其他分区的系统也无法启动。

1.2.2 UEFI BIOS+GPT 引导原理

  
  引导过程:开机→POST→UEFI→硬件初始化→EFI系统分区→\efi\Microsoft\boot\bootmgfw.efi→efi\Microsoft\BCD→\Windows\system32\winload.efi。

  • 开机,POST。
  • POST通过后,载入UEFI固件,并由它初始化硬件。
  • 从FAT格式的EFI分区找到、读入、执行启动管理器(\efi\Microsoft\boot\bootmgfw.efi)。
  • 启动管理器导入EFI分区BCD文件(efi\Microsoft\BCD),然后根据其配置内容加载引导加载程序winload.efi。,如果BCD中有多个配置项,则会让用户选择要启动的系统。

  需要注意的是:GPT磁盘格式下,windows系统的启动文件(bootmgfw.efi、BCD)是存放在一个FAT格式的分区里的,有些出厂预装win8系统的电脑下将该FAT分区称之为ESP分区或EFI分区。
  可见,UEFI+GPT模式引导windows系统时,并不需要mbr主引导记录,也不需要活动分区,只需要你一个存放了引导启动文件的fat格式分区就可以了,这个fat分区当然也可以是U盘等外接USB设备了。所以我们在安装第一个系统时,需要由系统自动或手动建立一个EFI分区,用来存放启动文件,之后在其它分区安装系统时,会覆盖之前的启动文件(不是系统载入程序)。

1.2.3 多重引导原理

  每个分区都有一个引导扇区,操作系统会将启动文件写入到各自所在分区的引导扇区中。
  对于MBR分区磁盘来说,安装多个系统时,MBR、活动分区会不断的被覆盖。但是启动管理程序能够识别其他分区引导扇区中的启动管理器,因此可以根据用户选择将控制权交给相应的启动管理器从而实现多重引导。但如果无法识别,则不能实现多系统。
  Linux的启动管理器能够识别Windows的启动管理器,但Windows的启动管理器则无法识别Linux的。又由于Windows在装系统时,默认覆盖MBR和活动分区。所以先装Linux再装windows,则无法引导Linux。而Linux则可以选择是否覆盖MBR分区和活动分区。如果不覆盖,则需要原来的MBR支持。

  对GPT来说也类似,只不过覆盖的是EFI分区。

2 UFEI+GPT 双硬盘 安装 Windows 10 与 CentOS 7

2.1 先安装Windows10

  • 下载Windows ISO镜像、 UtraISO 9.7。
  • 运行UtraISO,文件→打开,选择要安装的镜像文件。
  • 启动→写入硬盘镜像。
  • 写入方式为USB-HDD++,隐藏启动分区为无。
  • 写入。完成后关机。
  • 开机F2或者其它键进入BIOS。选择UEFI,并设置启动盘为USB。
  • 退出BIOS,进入安装界面。
  • 选择安装语言、时间格式、键盘输入法,点击下一步。
  • 点击现在安装,如果是启动出问题,则可以点击修复计算机
  • 输入密钥或者跳过。
  • 如果是Multiple版本,包含有2个版本,pro是专业版,home是家庭版,选择之后,点击下一步。
  • 勾选我接受许可条款,点击下一步。
  • 执行的安装类型,要选择自定义:仅安装Windows(高级)
  • 如果要装系统的的硬盘原本就是GPT格式
    • 如果安装新系统,则进入到分区界面,如果之前有系统,要先备份好数据,然后删除所有分区,只剩下一个未分配的空间,选择未分配的空间,点击下一步。或者点击新建进行手动分区后,选择一个分区,点击下一步
    • 如果安装多个系统,则选择一个空分区,点击下一步
  • 如果要装系统的的硬盘原本就是MBR格式,就需要使用diskpart工具来转换磁盘格式。
    • shift+F10,进入CMD。
    • diskpart,回车。
    • list disk,回车——列出磁盘。如果GPT一栏下不带*,则该磁盘不是GPT格式。
    • select disk 磁盘编号,回车——选中要操作的磁盘。
    • clean,回车——该步骤会清除磁盘数据,注意备份。
    • convert GPT,回车——转为GPT,当然也转为MBR。
    • list partition,回车——列出所有分区。
    • create partition msr size=指定大小,回车——创建GPT的msr保护分区。
    • create partition efi size=指定大小,回车——创建efi分区。
    • create partition primary size=指定大小,回车——创建主分区。size:表示分区大小,单位M。在MSR格式下,如果这个位置是logical:表示逻辑分区,extended:表示扩展分区。
    • 如果创建错了分区
      • select partition 分区编号,回车。
      • delete partition,回车——删除分区。
    • exit,回车——退出。
    • 选择一个主分区,点击下一步
    • 当然用diskpart命令将磁盘转为GPT后,也可以退出到安装界面进行分区。

2.2 后安装Centos 7

2.2.1 安装Centos7

  • 运行windows的磁盘管理工具,选择要安装的磁盘,压缩出足够空间。
  • 下载Centos7 ISO镜像、 UtraISO 9.7。
  • 运行UtraISO,文件→打开,选择要安装的镜像文件。
  • 启动→写入硬盘镜像。
  • 写入方式为USB-HDD++,隐藏启动分区为无。
  • 写入。完成后关机。
  • 开机F2或者其它键进入BIOS。关闭Secure Boot,选择UEFI,并设置启动盘为USB。
  • 退出BIOS,进入UEFI的安装界面。这种界面只会出现在以 UEFI模式 安装时,第一个是正常安装,第二个是检测安装,第三个是修复模式。上下键控制,选择第一个 lnstall CentOS 7 。按“e”进入编辑状态。
    此处输入图片的描述传统Leagcy 模式显示的是
  • 进入 “lnstall CentOS 7” 的编辑状态后 把 linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet 改为:linuxefi /images/pxdboot/vmlinuz linux dd quiet此处输入图片的描述
  • 按下CTRL+x,过一会后,显示结果如下,很明显我的U盘是 sda4 这个U盘名称 不是固定的,sd 代表硬盘,a代表第几块硬盘,4代表的的第几个分区(理论上U盘应该是sdc1,没办法系统要读成这样)。知道U盘在CentOS下的设备文件名之后按 “ c ” 回车,返回到安装选项界面 (如果还没退出 按ctrl + alt + delete 键退出)。
  • 返回到安装选项界面选择install centos7,按“e” 进入编辑 把:linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet 改为linuxefi /images/pxdboot/vmlinuz inst.stage2=hd:/dev/sda4 quiet, 按ctrl + x 键确认,进入图形安装界面,/dev/sda4是U盘所在的位置 /代表根,dev存放设备文件的目录 ,sda4 是U盘的设备文件名。(这里如果一开始选择 lnstall CentOS 7 按 “e” 查询到了U盘的设备名,这里就要到同一安装选项中输入设备路径,才可以进入图形安装界面,正常安装与检测安装中查出的所有设备名都不一致,这里不能乱,在哪里查就在哪里用,否则不能进入图形安装界面。)
  • 选择安装程序的语言
  • 设置日期时间、语言支持、键盘、要安装的软件。
  • 设置网络,如果不知道,可以不设置。
  • 设置安装位置。
    • 单硬盘,和window是安装到同一硬盘。
    • 多硬盘,安装到无系统的硬盘。
    • 选择要安装的磁盘。
  • +,新建/、/home、/boot/efi、/var、swap的挂载点,大小按照需求设定。其中/、/boot/efi必须挂载,如果内存够大也可不挂在swap。
    • 分区类型有标准分区、lvm、简单lvm、btrfs。/boot采用标准分区。其他使用lvm。
    • 文件系统有ext2,ext3,ext4,vfat,xfs,efi,swap。除了/boot/efi使用efi,swap使用swap外,其他可以自由设置。
  • 开始安装,等待重启即可。

2.2.2 补充

  • 如果使用Leagcy BIOS+MBR ,则不是按E而是按TAB编辑安装磁盘。
  • 如果使用Leagcy BIOS+GPT ,除了按TAB编辑安装磁盘,还需要在quiet后输入:空格inst.gpt来使用gpt分区。
  • 如果使用BIOS+MBR的方式,可按下表挂载分区:
所需目录/装置 磁盘容量 文件系统 分区格式 BIOS boot 2MB 系统自定义 主分区 /boot 1GB xfs 主分区 / 10GB xfs LVM 方式 /home 5GB xfs LVM 方式 swap 1GB swap LVM 方式
原创粉丝点击