AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 768091
Accepted
Erhannis
Erhannis
Asked: 2024-01-31 08:09:20 +0800 CST2024-01-31 08:09:20 +0800 CST 2024-01-31 08:09:20 +0800 CST

将 MBR/BIOS 转换为 GPT/UEFI(信息转储)

  • 772

我想将我的 1.5TB HDD 升级到 4TB SSD,我找到的互联网资源从头到尾都没有正确匹配我的情况,最终我花了大约 20 个小时才让它工作,所以我在这里汇总我的发现为未来的旅行者。

ubuntu
  • 1 1 个回答
  • 286 Views

1 个回答

  • Voted
  1. Best Answer
    Erhannis
    2024-01-31T08:09:20+08:002024-01-31T08:09:20+08:00

    基本详细信息:我有一台运行 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 分区。)
    连接到互联网

    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
    

    (希望我没有错过任何步骤等)

    我最终意识到我的 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

    modprobe zfs
    update-grub
    grub-install
    update-grub
    reboot
    

    (BIOS现在在uefi启动列表中显示“ubuntu”,这可以工作,但BIOS不会自动启动到它)
    在启动列表中选择硬盘驱动器,启动成功

    sudo add-apt-repository ppa:yannubuntu/boot-repair
    sudo apt install boot-repair
    boot-repair
    

    Ran 建议修复,注意它在成功对话框中给出的 sda1/efi/ubuntu/grubx64.efi 路径
    (重新启动失败)
    (我在 BIOS 中关闭了 Legacy Boot ROM 选项,它确实正确启动,但拿走了我的其他启动选项,所以我重新打开它。)
    在BIOS中,我选择了“添加启动”,给了启动选项一个名称,留下选择了唯一存在的目标(我认为是指我的硬盘驱动器或分区或其他东西的一些长字符串) ,第三个框让我导航到“EFI\ubuntu\grubx64.efi”,并创建启动选项。
    确保该选项是 UEFI 启动选项中的第一个选项。(它具有 uefi 之上的所有旧版选项,并且不允许我更改它。)
    它最终独立启动,
    我使用操作系统中的 gparted 来调整主分区的大小
    重启成功

    我不知道其中有多少是必要的,以及通过例如首先更新BIOS,也许可以跳过一些启动到USB的步骤可以避免多少,但这就是最终的工作,从数十个不同的 SO 帖子、reddit 帖子和论坛主题。

    • 0

相关问题

  • 使 Apple 键盘设置在 ../hid_apple/parameters/ 中持久化

  • 用文件中的点绘制二维图形

  • 如何验证我使用 9.9.9.9 作为 DNS?

  • 并行安装多个 linux 发行版

  • 自编译 OpenVPN 不会从 systemd 启动

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve