作大死系列之——为已有的Windows系统创建EFI分区

作大死系列之——为已有的Windows系统创建EFI分区

这篇文章的诞生是这样的,去年冬天我入手了Y50,并且上了昂贵的850PRO。然而随着工作需求的增加,128G的850显然不够用了(装了一个用友就20多个G没了233333),所以又换了块更大容量更加昂贵的850PRO。

造成作大死的需求

此时产生了一个需求——我要将原来850PRO的Windows系统分区(也就是传说中的C:\,Windows默认安装在了sda3.old下),移到新硬盘的sda2.new下,并且我不要原来硬盘的系统保留区(废柴的sda2.old)。然而ESP分区(EFI System Partition)仍然保持100MB放在sda1中(因为后续要用grub引导bootmgfw.efi,gurb和bootmgfw并存于sda1)。
简洁地说,我只有Windows系统区而没有引导区,怎么样建立ESP分区,并引导Windows启动?
此需求的要求是

  • UEFI + GPT分区表(BIOS+MBR请绕道其他文章,BIOS+GPT这种变态请跳至wzyboy的神文)

此需求还适用于如下场景:

  • EFI分区丢失,误删,不小心写错引导
  • 先装XNIX,再装Windows,不损坏GRUB
  • BALABALABALA

方法

分析一下现在的分区结构

  1. sda1 —— ESP分区 100MB (这是一个空白的分区,木有东西)
  2. sda2 —— Windows系统目录 150GB
  3. sda3 —— ArchLinux挂载点 / 50GB

提取了Windows安装盘中的PE之后,打开PE,进入CMD。按照正常的操作,只需要DISKPART分配驱动器号——EFI分区分配(X:);Windows分区分配(C:),然后输入:

bcdboot C:\Windows /l zh-cn /s x: /f UEFI

然后出现了尝试复制启动文件失败的问题23333333。

经查验,发现事实上ESP分区并没有被成功建立,原来bcdboot只认识FAT格式的分区,于是将EFI分区format一下子,问题就解决了QAQ(实际上这个步骤我已经忘掉了,但是我就提一下有这个步骤~)

GRUB

由于EFI分区已重构,GRUB写在EFI分区中的引导信息也没了,那么此时就需要在Linux环境下重建GRUB引导。以ArchLinux为例:

# grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub

其中,$esp是挂载后的UEFI分区。

OK,备忘录写完了!P.S. 这篇文章写了差不多有2个月了。因为第一个草稿是:Dick_Wu,2月前(2016年11月10日 @ 23:09:22)

发表回复

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据