目录:
- 术语
- 转换中
- 配置(+双启动)
术语
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是如何指定分区的标准。它确实具有“保护性” MBR,但这仅用于允许基于BIOS的计算机启动和停止仅了解MBR的工具,以免破坏GPT。它可以有
(如何处理GPT取决于它是使用BIOS(或BIOS仿真模式下的UEFI系统)还是UEFI引导。我将重点讨论UEFI,因为它与问题有关。)
操作系统的引导加载程序存储在称为EFI System Partiton的分区中,该分区(通常)使用FAT32进行格式化。这是GRUB的安装位置。
转换中
第一...
我们正在使用分区表,因此无法保证安全。这是一个冒险的操作。但是,该方法不应丢失数据。
其他遇到的问题:不要在Apple Macs上使用。
现在...
您将需要在活动CD上执行此操作(或将另一个Linux安装安装到其他磁盘上。)
处理GPT磁盘时,我们需要使用GPT感知程序。“ GPT fdisk”是一个很好的工具,可以用来和我将要使用的工具。它可以被称为gptfdisk
或
gdisk
依赖于分布(Ubuntu的卡列斯它gdisk
)。Parted(和Gparted)也了解GPT,因此可以“安全地”与GPT磁盘一起使用。
要进行转换,您需要:
- 调整分区大小以适合GPT数据和EFI系统分区。
- 转换磁盘并添加分区
- 将GRUB安装到EFI系统分区。
1)调整分区大小
使用parted
(命令行)或gparted
(GUI)调整第一个和最后一个分区的大小。第一部分之前应有大约200MiB,最后一个分区应从末尾取出1MiB到2MiB。
2)转换磁盘
跑
gdisk /dev/sdx
更改要转换的设备是/dev/sdx
。
它应该告诉您它将转换分区表。
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
这并不能保证我之前没有亲自尝试过前面的部分。
我不确定这一步,所以我会猜测使用RAOF的说明:
要切换到grub-efi,您需要
- 查找您的EFI分区;将其安装在/ boot / efi中。将此添加到/ etc /fstab¹
- 安装grub-efi软件包
- 将您的BIOS引导优先级从UEFI和Legacy切换到仅UEFI(或类似选项)
您应该确定要安装的grub-efi版本
ioreg -l -p IODeviceTree | grep firmware-abi
如果显示EFI32
安装grub-efi-ia32
软件包,则显示EFI64
安装grub-efi-amd64
软件包。您可以使用以下命令安装软件包
sudo apt-get install <package name>
仅当您以EFI模式启动时,这才可能起作用。
如果它不起作用,则可以在安装一次之后尝试这些逐步说明(在“在(U)EFI系统中安装GRUB2”下)grub-efi
。
配置(+双启动)
如果RAOK的指示有效,则您应该可以将以下行添加到
/etc/grub.d/40_custom
menuentry "Windows 7" {
set root='(hd0,gpt1)'
chainloader /EFI/microsoft/bootmgfw.efi
}
它假定Windows被hd0
GRUB 识别。可能需要将其更改hd1
为起作用。
现在运行
update-grub
更新配置文件。
参考资料和进一步阅读
我使用了几种来源。