我最近在一位朋友的系统上安装了 Manjaro Linux 和 Windows 10 双启动,使用安装程序中的默认双启动分区方案。昨天,Windows 决定进行自我更新(我猜是臭名昭著的 Creator's Update),而 Manjaro 无法启动。我指示朋友从 liveUSB 登录,这是sudo fdisk -l
输出:
Disk /dev/nvme0n1: 238,5 GiB, 256060514304 bytes, 500118192 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: DBCB2883-9E10-40F3-8007-B1B409A79DF5
Dispositivo Start Fine Settori Size Tipo
/dev/nvme0n1p1 2048 206847 204800 100M EFI System
/dev/nvme0n1p2 206848 239615 32768 16M Microsoft reserved
/dev/nvme0n1p3 239616 123472110 123232495 58,8G Microsoft basic data
/dev/nvme0n1p4 497999872 500097023 2097152 1G Windows recovery environment
/dev/nvme0n1p5 123472112 497999871 374527760 178,6G Linux filesystem
Partition table entries are not in disk order.
请注意Partition table entries are not in disk order.
:显然,现在有一个分区 ( /dev/nvme0n1p4
),它在物理上位于主 Linux 分区 ( ) 之后/dev/nvme0n1p5
,但在数字上位于主 Linux 分区 ( ) 之前。由于这看起来非常不标准,我猜 Windows 搞乱了分区表。
做了之后:
sudo mount /dev/nvme0n1p5 /mnt
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
sudo grub-install --target=x86_64-efi --efi-directory=/mnt/boot/efi --bootloader-id=manjaro --boot-directory=/mnt/boot --recheck --debug
系统再次启动,似乎运行正常。
问题是:
鉴于 Windows 没有ext4
我所知道的任何信息,它怎么可能弄乱分区表,但又不会损坏任何东西呢?它只是改变了“数字”分区顺序吗?它到底做了什么?
答案1
很可能它对分区没有做任何事情,但它只是重写了 EFI 启动以(尝试)使自己成为唯一/默认操作系统。当然,您知道,一旦您的磁盘上安装了 Windows 10,为什么还需要其他东西呢?
你的问题在我身上也发生过两三次,在不同的机器上,更新后,它们总是通过简单的更新或重新安装 GRUB2 就消失了。
我不认为对分区重新编号有什么坏处;如果他们不搞乱 Windows,我非常确信他们不会搞乱 GRUB/GRUB2。
但是,请务必在 Linux 分区上运行 e2fsck,以确保它没有被缩短 1 GB。如果里面的FS被标记为大于它应该包含的分区,因为后者被盲目地调整了大小(Windows有足够的分区知识那),当 Linux 覆盖恢复数据,或者 Windows“更新”恢复数据并覆盖 Linux ext4 决定放在那里的任何内容时,您可能会遇到麻烦。您可能需要:
- 将1GB数据备份到Linux文件中,
- 删除分区并将 Linux 分区重置为完整大小,
- 缩小文件系统以留下 1GB 可用空间,
- 重新创建分区,
- 恢复备份
以适应这两种操作系统并让它们保持友好的关系。