我有一个 750GB 硬盘 ( /dev/sda1
),我用 1TB SSD ( /dev/sdb1
) 替换了它。我想擦除旧硬盘并将其用作备份驱动器。但是,启动分区似乎仍在旧驱动器上,而 grub 在新驱动器上找不到启动。这会产生一些问题:
grub 上的默认操作系统是硬盘上的 Ubuntu 16.04,而不是新驱动器上的 Ubuntu 18.04。如果我不选择哪个操作系统,它就会转到旧版本,这实际上不起作用。
除非新的 SSD 能够正常启动,否则我无法擦除旧的 HDD。
我最近在 Ubuntu 18.04 上安装了 HWE,这样我就可以使用 5.0 内核,但它似乎没有使用或识别该内核。我怀疑这也与 grub 有关,所以最好先修复 grub。
最不痛苦的方法是什么?我猜我需要从实时 CD 启动,修改 SSD 上的分区,并以某种方式安装引导加载程序。有人能告诉我如何在不弄乱我的操作系统或主目录的情况下做到这一点吗?
这篇文章看起来很相似,但是有点吓到我了: 从 grub 中删除第二个硬盘操作系统
我的系统的详细信息:
~$ uname -a
Linux xxxxx 4.15.0-33-generic #36-Ubuntu SMP Wed Aug 15 16:00:05 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
结果sudo parted -l
:
Model: ATA WDC WD7500BPKT-0 (scsi)
Disk /dev/sda: 750GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 50.0GB 50.0GB primary ext4 boot
2 50.0GB 750GB 700GB extended
5 50.0GB 66.0GB 16.0GB logical linux-swap(v1)
6 66.0GB 750GB 684GB logical ext4
Model: ATA Samsung SSD 840 (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1000MB 999MB fat32 boot, esp
2 1000MB 17.0GB 16.0GB linux-swap(v1)
3 17.0GB 67.0GB 50.0GB ext4
4 67.0GB 1000GB 933GB ext4
Error: /dev/sdc: unrecognised disk label
Model: Initio INIC-1610P (scsi)
Disk /dev/sdc: 4142MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
Model: Linux device-mapper (crypt) (dm)
Disk /dev/mapper/cryptswap1: 16.0GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0.00B 16.0GB 16.0GB linux-swap(v1)
答案1
SDD 的新安装处于 UEFI 模式,因此您的机器支持 UEFI - 我建议您保留 UEFI 模式。对您的一个问题的快速说明:您应该能够从 16.04 系统运行 sudo update-grub 并在 18.04 上选择 5.0 内核进行尝试。UEFI 安装程序有一个错误 1396379,它会将 UEFI 引导加载程序放到 sda 上,无论您指定哪个设备,因此 SDD EFI 分区可能是空的。旧版 16.04 安装可能没有这些 UEFI 引导加载程序,因此您必须将它们从安装介质中复制出来,基本上只需将所有文件从安装介质的 /EFI/BOOT/ 目录复制到 EFI 分区上的 EFI/BOOT 目录即可。如果 EFI 分区有文件系统,您应该能够挂载它:
sudo mount -tvfat /dev/sdb1 /tmp/xx
如果不存在文件系统,请先创建一个,然后挂载它:
sudo mkfs.vfat /dev/sdb1
然后只需复制文件(bootx64.efi、grubx64.efi 等)。EFI 还需要一个存根 grub.cfg 文件,其中包含来自根文件系统的维护 grub.cfg 文件。获取根的 UUID:
sudo blkid 然后将 UUID 编辑到以下文件(EFI/ubuntu/grub.cfg)中
search.fs_uuid your-UUID root hd1,gpt1
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
这应该会在 sdb 上生成一个可启动的 UEFI 设置——选择它作为启动设备并查看它是否可以启动。
您的 EFI/BOOT 目录不包含 grubx64.efi 的副本,因此那里的 bootx64.efi 必须是 grubx64.efi(检查它们的大小以确认)。当安全启动被禁用时,这应该可以工作。如果您想允许安全启动,请将 grubx64.efi 和 shimx64.efi 放在那里,并将 shimx64.efi 重命名为 bootx64.efi。