sudo bash
apt update
apt install zfsutils-linux
modprobe zfs
mount /dev/sda5 /mnt # sda5 was my main installation partition
mount /dev/sda1 /mnt/boot/efi # sda1 I think was the partition originally intended to be the efi partition
modprobe efivarfs
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount --bind /run /mnt/run
chroot /mnt bash
apt install grub-efi
update-grub
grub-install --target=x86_64-efi /dev/sda
update-grub # not sure whether it's supposed to go before or after install
基本详细信息:我有一台运行 Ubuntu 20.04.6 的旧 Dell Inspiron 5720。我一开始使用的是 1.5TB HDD,后来购买了 4TB SSD。我发现我的旧驱动器使用的分区表 MBR 不支持大于 2TB 的分区,因此我必须切换到 GPT。显然,这几乎不可避免地需要将引导系统从 BIOS 切换到 UEFI,这确实是问题的主要原因。(有证据表明 UEFI 安装已经损坏,这可能会让事情变得复杂。)
我将 Kali Linux 复制到 U 盘上以帮助完成整个过程。如果您想要详细了解,可以跳到我开始列出步骤的位置。我将其余的内容和行放在括号中,以防细节可以帮助人们找出他们的问题所在。
以下是我尝试的第一件事,但没有成功。
似乎在不使用的时候搞乱分区会更安全,所以我启动了 USB。我用适配器插入 SSD。我打开了gparted,如果我没记错的话,我在SSD上创建了一个GPT分区表。然后(在 gparted 中)选择 HDD,复制第一个分区,选择 SSD,粘贴,第二个分区也是如此。阅读 UEFI 指南后,我可能在 UEFI 分区末尾创建了第三个分区,或者当我第一次尝试失败时我可能会添加该分区。然后我等待复制完成(大约 4 个小时),关闭计算机,更换硬盘,然后尝试启动。没有骰子。我认为错误是“没有操作系统”,或者同样接近正确的东西。长话短说,我花了好几个小时尝试了很多东西,但没有一个起作用。
B计划最终奏效了。
大多数指南都希望您能够启动到要转换的系统,因此首先我再次交换驱动器并启动 USB,然后使用 直接将我的 HDD 复制到 SSD 上
dd if=/dev/sda bs=1M of=/dev/sdc
,检查我是否拥有正确的设备。(我差点复制错了。)第二天早上,我更换了硬盘并成功启动。(硬盘在此处不再使用。)接下来我(安装?)运行gdisk /dev/sda
。它说有一个工作的 MBR 表,但也有一个损坏的 GPT 表。我想它问我要继续哪个,所以我选择了(1)MBR;我不认为它让我在进入主菜单之前选择任何其他内容,所以在浏览选项之后,w
用于写。重新启动。黑屏上有一个闪烁的光标。消除了大量的测试和错误的开始,但重申了第一步,使列表完整:(建议:检查您的 BIOS 是否支持 UEFI,否则进行更新;尽早执行此操作可能会解决我的一些问题。)
复制时要小心,其中一些命令使用我的特定驱动器号
从 USB
启动 将 HDD 复制到 SSD,例如
dd if=/dev/HDD bs=1M of=/dev/SSD
(正确操作!!)关闭计算机
交换驱动器,将 HDD 放在安全的地方,以防万一搞砸并需要重新开始
重新启动到 SSD
gdisk /dev/sda
(如果它要求您在工作的 MBR 之间进行选择)和损坏的 GPT,选择 MBR)
w
用于“写入”重新启动到 USB
(尽管它可能会工作并且不会破坏您的数据,以便从您的主操作系统继续执行以下操作,并且无需安装和 chroot 内容。可能仍然需要安装efi 分区。)
连接到互联网
(希望我没有错过任何步骤等)
我最终意识到我的 BIOS(Phoenix SecureCore Tiano 版本 A03)太旧,无法支持 UEFI。所以我:从https://www.dell.com/support/home/en-us/drivers/driversdetails?driverid=khvck
下载最新固件从https://www.freedos.org/download 下载 FreeDOS FullUSB 映像/将img文件复制到USB上 重新插入USB 安装USB分区 将BIOS EXE复制到其上并关闭 引导USB(必须可写否则exe无法提取) 运行exe文件,该文件安装了新的BIOS,版本 A17 确认 BIOS 现在可以与 UEFI 配合使用,在菜单等中看到新选项 (启动仍然失败,尽管我忘记了具体的方式)
dd
sync
(然后我使用启动菜单选择硬盘驱动器 - Ubuntu开始启动,但显示“看门狗:BUG:软锁定”,几分钟后我重新启动)
从启动菜单中选择硬盘驱动器
出现 grub 屏幕,并选择维护模式 shell
(BIOS现在在uefi启动列表中显示“ubuntu”,这可以工作,但BIOS不会自动启动到它)
在启动列表中选择硬盘驱动器,启动成功
Ran 建议修复,注意它在成功对话框中给出的 sda1/efi/ubuntu/grubx64.efi 路径
(重新启动失败)
(我在 BIOS 中关闭了 Legacy Boot ROM 选项,它确实正确启动,但拿走了我的其他启动选项,所以我重新打开它。)
在BIOS中,我选择了“添加启动”,给了启动选项一个名称,留下选择了唯一存在的目标(我认为是指我的硬盘驱动器或分区或其他东西的一些长字符串) ,第三个框让我导航到“EFI\ubuntu\grubx64.efi”,并创建启动选项。
确保该选项是 UEFI 启动选项中的第一个选项。(它具有 uefi 之上的所有旧版选项,并且不允许我更改它。)
它最终独立启动,
我使用操作系统中的 gparted 来调整主分区的大小
重启成功
我不知道其中有多少是必要的,以及通过例如首先更新BIOS,也许可以跳过一些启动到USB的步骤可以避免多少,但这就是最终的工作,从数十个不同的 SO 帖子、reddit 帖子和论坛主题。