问题描述

我最近升级了我的PC,我的新主板(华硕M5A99X EVO)使用UEFi而不是常规的MBR选项。

我有一个Ubuntu 11.10安装,当我使用我以前的硬件(MSI MS 7267),Ubuntu单独启动,Windows 7也是如此,但Windows 7使用UEFI(GPT)启动,而Ubuntu使用MBR。

我的操作系统位于不同的驱动器中,因此GRUB2不会被Windows Bootloader取代,反之亦然,因为我说两个操作系统都可以自行启动,但为了做到这一点,我必须断开一个驱动器,在这种情况下,Ubuntu驱动器为它可以防止Windows加载。

现在我的问题是,我如何更改/转换Ubuntu的驱动器,以便它不使用MBR而是使用GPT并允许Windows启动?

优选地,不重新安装整个系统或丢失任何数据。

如果我要擦除驱动器,我如何在GPT,UEFI中安装Ubuntu,无论它是什么模式?

我已经使用gdisk从MBR转换为GPT,但现在Ubuntu无法启动似乎grub只是无法启动。

我已经重新安装了操作系统,默认情况下驱动器是GPT,但仍然使用grup-pc而不是grub-efi。

如何从EFI启动Ubuntu?

最佳解决办法

目录:

术语

转换

配置(+双启动)

Terminology

BIOS =基本输入/输出系统

(U)EFI =(统一)可扩展固件接口

MBR =主引导记录

GPT = GUID分区表

UEFI /EFI /BIOS =固件接口

MBR /GPT =计算机如何知道(每个硬盘)驱动器上的分区以及如何从它们引导。

UEFI /BIOS

固件接口是固件(设备内部的软件)和操作系统交互的方式。它初始化硬件然后运行操作系统并确保操作系统驱动程序可以操作硬件。

BIOS一直是常用的固件接口。 UEFI是一种较新的接口,具有多种功能,例如速度更快,具有GUI并能够启动网卡并获取IP地址。 UEFI取代了EFI。 (那些开发EFI的人看到其他人做了类似的事情并加入了他们,带来了EFI的想法。然后成为UEFI)。

BIOS要求引导加载程序位于磁盘的起始位置,但UEFI会为此使用分区,并可在多个引导加载程序中进行选择。

MBR /GPT + GRUB

MBR是磁盘开头的一段代码,包含引导加载程序(用于BIOS),以及分区映射和唯一磁盘标识符。

要将GRUB安装到具有MBR的磁盘上,GRUB会在MBR中放置一个小程序,以从磁盘的另一部分加载剩余的GRUB。 (这样做是因为MBR太小而不能包含所有GRUB)。选择的空间是MBR和第一个分区之间的空间,通常存在。

GPT是如何指定分区的标准。它确实有一个’protective’ MBR,但这只是为了允许基于BIOS的计算机启动和停止只知道MBR的工具试图丢弃GPT。它可以有

(如何处理GPT取决于它是使用BIOS(或BIOS仿真模式下的UEFI系统)还是UEFI启动。我将关注与问题相关的UEFI)。

操作系统的引导加载程序存储在名为EFI System Partiton的分区中,该分区使用FAT32格式化(通常)。这是安装GRUB的地方。

Converting

第一…

我们正在玩分区表,因此无法保证安全。这是一个冒险的行动。但是,该方法不应丢失数据。

其他人遇到此问题:请勿在Apple Mac上使用。

现在…

您需要在Live CD(或安装到其他磁盘的其他Linux安装)上执行此操作。

处理GPT磁盘时,我们需要使用GPT识别程序。 ‘GPT fdisk’是一个很好的工具,我将使用它。根据分布,它可以被称为gptfdisk或gdisk(Ubuntu称其为gdisk)。 Parted(和Gparted)也可以识别GPT,因此’safely’可以与GPT磁盘一起使用。

转换你需要:

调整分区大小以适合GPT数据和EFI系统分区。

转换磁盘并添加分区

将GRUB安装到EFI系统分区。

1)调整分区大小

使用parted(命令行)或gparted(GUI)调整第一个和最后一个分区的大小。第一个分区应该在它之前有大约200MiB,最后一个分区应该有1MiB到2MiB(要么会)从最后开始。

2)转换磁盘

gdisk /dev/sdx

更改要转换的设备是/dev/sdx。

它应该告诉你它将转换partiton表。

GPT fdisk (gdisk) version 0.6.14

Partition table scan:

MBR: MBR only

BSD: not present

APM: not present

GPT: not present

***************************************************************

Found invalid GPT and valid MBR; converting MBR to GPT format.

THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if

you don't want to convert your MBR partitions to GPT format!

***************************************************************

Command (? for help):

现在添加一个新分区,使其类型为’EFI system’。它应该在开头找到可用空间(我建议使用一些低扇区数字,如34)并自动使用所有可用空间。这些示例使用4GB USB闪存驱动器,其上已有1个分区,如上所述调整大小。

Command (? for help): n

Partition number (2-128, default 2): 2

First sector (34-7831518, default = 34) or {+-}size{KMGTP}:

Information: Moved requested sector from 34 to 2048 in

order to align on 2048-sector boundaries.

Use 'l' on the experts' menu to adjust alignment

Last sector (2048-421887, default = 421887) or {+-}size{KMGTP}:

Current type is 'Linux/Windows data'

Hex code or GUID (L to show codes, Enter = 0700): L

0700 Linux/Windows data 0c01 Microsoft reserved 2700 Windows RE

4200 Windows LDM data 4201 Windows LDM metadata 7501 IBM GPFS

7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved

8200 Linux swap 8301 Linux reserved 8e00 Linux LVM

a500 FreeBSD disklabel a501 FreeBSD boot a502 FreeBSD swap

a503 FreeBSD UFS a504 FreeBSD ZFS a505 FreeBSD Vinum/RAID

a800 Apple UFS a901 NetBSD swap a902 NetBSD FFS

a903 NetBSD LFS a904 NetBSD concatenated a905 NetBSD encrypted

a906 NetBSD RAID ab00 Apple boot af00 Apple HFS/HFS+

af01 Apple RAID af02 Apple RAID offline af03 Apple label

af04 AppleTV recovery be00 Solaris boot bf00 Solaris root

bf01 Solaris /usr & Mac Z bf02 Solaris swap bf03 Solaris backup

bf04 Solaris /var bf05 Solaris /home bf06 Solaris alternate se

bf07 Solaris Reserved 1 bf08 Solaris Reserved 2 bf09 Solaris Reserved 3

bf0a Solaris Reserved 4 bf0b Solaris Reserved 5 c001 HP-UX data

c002 HP-UX service ef00 EFI System ef01 MBR partition scheme

ef02 BIOS boot partition fd00 Linux RAID

Hex code or GUID (L to show codes, Enter = 0700): ef00

Changed type of partition to 'EFI System'

您现在应该拥有EFI分区。

Command (? for help): p

Disk /dev/sdd: 7831552 sectors, 3.7 GiB

Logical sector size: 512 bytes

Disk identifier (GUID): 669247F2-37F7-4797-98F9-9CE56F7EA8C8

Partition table holds up to 128 entries

First usable sector is 34, last usable sector is 7831518

Partitions will be aligned on 2048-sector boundaries

Total free space is 4029 sectors (2.0 MiB)

Number Start (sector) End (sector) Size Code Name

1 421888 7829503 3.5 GiB 0700 Linux/Windows data

2 2048 421887 205.0 MiB EF00 EFI System

然后退出gdisk

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING

PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): y

OK; writing new GUID partition table (GPT).

The operation has completed successfully.

现在使用Gparted(或命令行 mkfs.vfat)将分区格式化为FAT32。

3)安装GRUB

这与前一部分的保证较少,因为我自己没有尝试过。

To switch to grub-efi you’d want to

Find your EFI partition; mount it in /boot/efi. Add this to /etc/fstab¹

Install the grub-efi package

Switch your BIOS boot priority from UEFI and Legacy to UEFI only (or a similar option)

您应该确定要安装哪个版本的grub-efi

ioreg -l -p IODeviceTree | grep firmware-abi

如果说EFI32安装了grub-efi-ia32软件包,如果说EFI64安装了grub-efi-amd64软件包。您可以使用安装包

sudo apt-get install

这可能仅在您以EFI模式启动时才有效。

如果它不起作用,您可以在安装grub-efi后尝试these逐步说明(在“(U)EFI系统中安装GRUB2”)。

配置(+双启动)

如果RAOK的说明有效,您应该能够将以下行添加到/etc/grub.d/40_custom

menuentry "Windows 7" {

set root='(hd0,gpt1)'

chainloader /EFI/microsoft/bootmgfw.efi

}

它假定Windows被GRUB识别为hd0。可能需要将其更改为hd1才能工作。

现在跑

update-grub

更新配置文件。

参考和进一步阅读

我用过几个来源。

次佳解决办法

这个答案是不完整的;我没有测试任何这个。它不太可能吃掉你的任何数据,但你已被警告过了!

我猜这里发生的是你的BIOS优先从传统的MBR启动,所以可怜的老UEFI Windows 7被忽视了。

关于UEFI的一个好处是你不再需要担心Windows覆盖GRUB;它们应该在EFI分区上很好地共存。因此,一种选择是切换到grub-efi。注意:我不确定grub-efi是否了解MSDOS-style分区;我认为确实如此。如果没有,则无法启动,您需要LiveCD才能恢复。事实上,无论如何都要有一个LiveCD方便!

要切换到grub-efi

找到您的EFI分区;将其安装在/boot/efi中。将其添加到/etc/fstab¹

安装grub-efi软件包

将BIOS启动优先级从UEFI and Legacy切换到UEFI only(或类似选项)

这应该让你有一个UEFI-booting Ubuntu安装。如果没有,请启动您可靠的LiveCD(或Ubuntu Alternate安装CD – “修复损坏的系统”选项就在您之后,),chroot进入您的系统,然后再次安装grub-pc。

¹:此步骤的更多细节:您需要找到Linux内核调用EFI系统分区的内容。这将类似于/dev/sda2,/dev/sdb3等。然后,您需要创建/boot/efi目录,并向/etc/fstab添加一行。如果您的EFI分区是/dev/sdb3,那么您将添加以下行:

/dev/sdb3 /boot/efi vfat defaults 0 1

运行sudo mount /boot/efi后,您应该发现/boot/efi包含一个EFI目录,其中包含Windows 7的子目录。

²:由于您有多个硬盘驱动器,因此最好找出分区的UUID,因为在添加/删除硬盘时这将是稳定的,而/dev/sda2名称不保证不会改变。但是,在完成其他所有操作后,可以执行此操作。

您可以通过查看/dev/disk/by-uuid找到UUID。例如,我得到:

$ ls /dev/disk/by-uuid -lah

total 0

drwxr-xr-x 2 root root 100 Dec 5 09:12 .

drwxr-xr-x 6 root root 120 Dec 5 09:12 ..

lrwxrwxrwx 1 root root 10 Dec 5 09:12 27fae347-4c7f-45cb-92d6-5f3d410599a1 -> ../../sda3

lrwxrwxrwx 1 root root 10 Dec 5 09:12 4405-64C8 -> ../../sda1

lrwxrwxrwx 1 root root 10 Dec 5 09:12 5243e250-8da5-4fea-aa63-61466022661d -> ../../dm-0

就我而言,我知道/dev/sda1是我的EFI系统分区,所以我有

UUID=4405-64C8 /boot/efi vfat defaults 0 1

在我的/etc/fstab中。

第三种解决办法

I have my OSs in separate drives, so that GRUB2 wont’ get replaced by the Windows Bootloader and viceversa

这是理想的,因此您可能在分区表中至少有一个主分区空闲。

Now my question is, How can I change/convert Ubuntu’s drive so that instead of using MBR it uses GPT and allow Windows to boot?

您不必将MBR转换为GPT以进行UEFI引导,只需创建主FAT分区,安装grub-efi-amd64-bin软件包并按照Add an ESP to an existing installation with MBR中的说明进行操作,该说明适用于当前版本的Ubuntu。

参考资料

linux如何把系统盘转换成gpt,如何更改/转换Ubuntu MBR驱动器到GPT,并从EFI启动Ubuntu?...相关推荐

  1. json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值...

    json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 原文:json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 主要内容: 一 ...

  2. wps将word转换成html,wps如何转换成word(word转换成wps的方法)

    如何将wps转换成word.word转换成wps?首先需将电脑设置为显示后缀名,然后将后缀名进行修改,或通过另存为方式实现转换. 所需工具:word工具  wps工具 将电脑设置成显示后缀名将电脑设置 ...

  3. PDF转换成JPG图片怎么转换?这两招轻松搞定

    PDF转换成JPG图片怎么转换?PDF文件是我们常用的一类文件,在现在的办公环境中,PDF真的用途很广,不仅是日常发送文件,还有学习工作中都会用到,不过有时候我们也需要将PDF文件转换成其他的格式,比 ...

  4. java将图片的url转换成File,File转换成二进制流byte

    package com.xqy;import java.io.*; import java.net.HttpURLConnection; import java.net.URL; //java将图片的 ...

  5. 怎么把html换成gif,怎么将mp4转换成gif 把mp4转换成高清gif的方法

    狸窝是帮助用户解决问题 提供教程解决方案 在这个过程中有使用我们自己开发的软件 也有网上找的工具 只要帮助用户解决问题就好!同意请继续往下了解 对于gif动态图片,相信大家并不少见,尤其是喜欢上扣扣. ...

  6. 【各种转换】数组转换成字符串,集合转换成字符串,字符串转集合

    由于在工作中经常用到各种类型的互相转换,这里总结一下: 1. 基本类型转字符串: 2. 将list集合转化成string数组:用toArray 3. String数组转集合 4. String数组转换 ...

  7. 将字符串中大写转换成小写,小写转换成大写。基础题目

    大小写转换 String url="asdfaDFSFDSoiuonmlWERVuojln" 将以上字符串大写转换成小写,小写转换成大写. 首先转换成char 数组char[] s ...

  8. 把图片转换成二进制--把二进制转换成图片

    把图片转换成二进制--把二进制转换成图片 private void button1_Click(object sender, EventArgs e)         {             st ...

  9. 图片转换成pdf格式如何转换?

    图片转换成pdf格式如何转换?大家对图片格式应该不会陌生,比如JPG,JPEG,PNG,BMP,GIF,TIF等,但是大家对于PDF格式可能有人还不太了解,其实PDF是一种便携式文档文件格式,这种格式 ...

  10. jpg转换成pdf格式在线转换

    jpg转换成pdf格式在线转换 在线JPG转换成PDF转换器是非常具有实用价值的在线工具,它可以将一些陌生的文件格式转变为我们熟悉或喜欢的格式,以符合我们的习惯.免费的在线工具,对菜鸟这些不愿意安装大 ...

最新文章

  1. 图解NumPy:常用函数的内在机制
  2. 开课吧python视频百度云-廖雪峰老师官方人工智能教程,13个案例带你全面入门!...
  3. 这个男人让你的爬虫开发效率提升8倍
  4. 在ASP.NET使用javascript的一点小技巧
  5. 移动硬盘拷贝linux文件,Linux下使用移动硬盘拷贝数据
  6. nginx index.php 端口,nginx-如果index.php不在nginx文件夹中,则禁止使用php fpm
  7. [java][工具类][Arrays]
  8. mysql新加不了数据库_MySQL数据库之mysql增加新用户无法登陆解决方法
  9. 在Java中进行输入验证时用错误通知替换异常
  10. python安装lxml,在windows环境下
  11. Symbian手记【三】 —— Symbian的描述符
  12. iis 在站点中新建虚拟目录站点之后,虚拟目录中的 web.config 与 主站点中的 web.config冲突解决方案...
  13. MTK:MVRAM操作
  14. 软件测试达内视频笔记(二)
  15. icem合并面网格_icem 混合网格 流沙
  16. Java爬取英雄联盟官网,全英雄皮肤背景图片
  17. xshell6使用技巧_Xshell6的正确打开方式
  18. mysql floor 不准确_MYSQL的floor出现报错如何解决
  19. 2021(接近2022)linux(ubuntu16.04)安装cuda跑深度学习步骤以及踩坑过程(ELF标头无效、导入torch后torch.cuda.is_available()为False等等)
  20. 赠书 !豆瓣 9 分以上的书籍,成为 Java 大佬必看!

热门文章

  1. PDF文件打印设置,看这篇就够了
  2. vue-print 实现打印功能
  3. 基于python的音乐数据分析_基于Python的亚马逊音乐产品评论分析
  4. Flask:工厂函数和蓝本
  5. 小型软件企业组织结构
  6. 如何设计神经网络结构,如何设计一个神经网络
  7. snaker mybatis 配置
  8. 基于STM32C8T6的MLX90614-DCC红外无线测温系统
  9. ArcGis基础—shapefile矢量文件与lyr图层文件之间有何区别?
  10. 表格识别综述与相关实战