Rob*_*t S 52 boot grub partitioning lvm2
似乎有很多关于这个的讨论,但我找不到一个简单的答案。
当我尝试安装 grub2 时,出现此错误:
# grub2-install /dev/sda
Installing for i386-pc platform.
grub2-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub2-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
grub2-install: error: will not proceed with blocklists.
Run Code Online (Sandbox Code Playgroud)
这是 /dev/sda 的布局:
Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7ECE06D0-9F0C-44FF-BCFB-142283172CCA
Device Start End Sectors Size Type
/dev/sda1 2048 411647 409600 200M Linux filesystem (/boot)
/dev/sda2 411648 4605951 4194304 2G Linux swap
/dev/sda3 4605952 46548991 41943040 20G Linux filesystem (/)
/dev/sda4 46548992 234441614 187892623 89.6G Linux LVM (/var)
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以解决这个问题?我知道我需要在磁盘的开头创建一个小分区作为“BIOS 启动分区”。我想一种选择是将交换移动到 /dev/sda4 作为逻辑卷,并使用 /dev/sda2 作为 /boot。
或者,我可以回到 grub-legacy 而不用担心(如果升级到 grub2 会带来这么多麻烦,升级到 grub2真的有好处吗?)。
想法?
Rod*_*ith 32
您应该首先确定是要使用 BIOS/CSM/legacy 模式引导还是 EFI/UEFI 模式引导。前者是个人电脑自 1980 年代以来一直采用的启动方式,但它是一个丑陋且骇人听闻的系统,不久就会走上渡渡鸟的路。Windows 将 BIOS 模式启动绑定到您没有使用的 MBR 分区表(但可以;您的磁盘远不足以需要 GPT)。Linux、FreeBSD 和大多数其他现代操作系统更加灵活,并支持从 GPT 启动 BIOS 模式;但有时会出现固件造成的复杂情况,当然,如果您以后决定在双启动设置中安装 Windows,您将需要进行更改或妥协。
EFI/UEFI 模式启动不那么简单;但是 EFI 实现的质量差异很大,并且 Web 上 EFI 的整体专业知识和支持水平低于 BIOS。Windows 将 GPT 的使用与 EFI 模式启动联系起来,因此如果您希望在您的计算机上安装 Windows,EFI 绝对是要走的路。较旧的计算机仅支持 BIOS。EFI 于 2011 年年中开始在市场上腾飞,因此如果您的计算机较旧,您可能无法使用 EFI。
如果您使用 BIOS 模式启动,您应该在磁盘上创建一个BIOS 启动分区。磁盘开头有足够的空间用于此分区,但您需要将扇区对齐值设置为 1(通常为 2048)才能使其工作。我不知道这是否可以用 完成parted
,但你可以用gdisk
. (请注意,磁盘开头的空间略低于 BIOS 引导分区推荐的 1MiB 大小,但只是几个扇区。它可能会正常工作,但可能会在将来的某个时候失败。)或者,您可以将任何分区缩小 1-2MiB,以便为 BIOS 引导分区腾出空间。这个分区就不会需要是磁盘上的第一个分区,尽管这是常规位置。
如果您使用 EFI/UEFI 模式启动,则必须创建一个EFI 系统分区 (ESP)。这个分区必须是 FAT 格式,并且必须比 BIOS 引导分区大很多,所以你必须调整一些东西来创建它。我建议使用 550MiB 的大小,尽管其中的十分之一可能会在紧要关头工作。
要安装 GRUB,您首先应该确保安装了正确的 GRUB 包。我不确定在所有发行版中的命名,但在 Ubuntu 中,它将grub-pc
用于 BIOS/CSM/legacy 模式和grub-efi-amd64
EFI/UEFI 模式。EFI 模式安装还需要在 EFI 模式下启动用于安装 GRUB(大概是 live CD/USB)的任何东西。执行此操作可能需要使用计算机的内置启动管理器,该管理器通常通过功能键访问,但详细信息因计算机而异。
Flo*_*low 16
如果您想在旧式 BIOS 引导模式下使用 GPT 分区,那么您需要在要使用grub-install
.
使用,例如fdisk
,在磁盘上的某处创建“BIOS 启动”类型的分区。示例输出:
# fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 57E16A16-36B4-4445-A216-031EF6501415
Device Start End Sectors Size Type
/dev/sda1 2048 4196351 4194304 2G Linux RAID
/dev/sda2 4196352 35653631 31457280 15G Linux RAID
/dev/sda3 35653632 37750783 2097152 1G Linux swap
/dev/sda4 37750784 37816319 65536 32M BIOS boot
/dev/sda5 37816320 1953525134 1915708815 913.5G Linux LVM
Run Code Online (Sandbox Code Playgroud)
小智 6
你已经有了这个小分区,所以 kk 第一个分区不是以 1 开头而是以 2048 开头
/dev / sda1 2048 411647 409600 200M Linux file system (/boot)
Run Code Online (Sandbox Code Playgroud)
您需要更改标签类型,从boot到bios_grub,例如通过 parted:
parted /dev/sda
set 1 boot off
set 1 bios_grub on
q
Run Code Online (Sandbox Code Playgroud)
然后再说一遍:
grub2-install /dev/sda
Run Code Online (Sandbox Code Playgroud)
小智 5
启动分区必须格式化为 fat32 才能正常工作
mkfs.vfat -F32 /dev/sdXY
Run Code Online (Sandbox Code Playgroud)
应该为你解决它
另外,启动标志必须在parted中打开:
set 1 boot on
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
155131 次 |
最近记录: |