windows升级导致的磁盘分区号混乱
背景
电脑装着双系统,windows+archlinux
升级windows11后,像正常windows大版本升级一样,大概要重启3次,
在第3次启动后,发现找不到引导分区了.
在解决grub问题后进入linux系统,发现无法进入桌面.
好在还能远程ssh进去,不然就要用启动盘了.
grub rescue
现象
error:unknown filesystem
并进入 grub rescue
提示符
操作
1 | # 查看有哪些分区 |
修复grub
此刻的系统可能是杂乱的
- 磁盘挂载错误
- 各种配置文件找不到
因此暂时以root用户执行操作,免得各处需要sudo
1 | # 前置操作 |
修复系统
-
查看挂载情况
1
df -h
结果比如
1
2
3
4
5
6
7
8文件系统 容量 已用 可用 已用% 挂载点
dev 7.8G 0 7.8G 0% /dev
run 7.8G 1.6M 7.8G 1% /run
/dev/nvme0n1p6 64G 48G 13G 80% /
tmpfs 7.8G 395M 7.4G 5% /dev/shm
tmpfs 7.8G 3.5M 7.8G 1% /tmp
/dev/nvme0n1p2 95M 30M 66M 31% /boot/efi
tmpfs 1.6G 76K 1.6G 1% /run/user/1000发现
/home
本来有对应的分区,但看不到了.
猜测windows升级影响了磁盘分区号的识别顺序,因此而导致- efi分区找不到
- linux系统上各种文件找不到
好在linux坚强地生成了各种系统启动需要的文件,还能找到
/etc/default/grub
用来配置 -
查看磁盘情况
1
parted -l # 比fdisk -l显示得更好,有人性化的单位
结果比如
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15型号:Samsung SSD 970 EVO Plus 500GB (nvme)
磁盘 /dev/nvme0n1:500GB
扇区大小 (逻辑/物理):512B/512B
分区表:gpt
磁盘标志:
编号 起始点 结束点 大小 文件系统 名称 标志
1 1049kB 524MB 523MB ntfs Basic data partition 隐藏, 诊断
2 524MB 628MB 104MB fat32 EFI system partition 启动, EFI 启动
3 628MB 645MB 16.8MB Microsoft reserved partition msftres
4 645MB 231GB 230GB ntfs Basic data partition msftdata
5 231GB 232GB 649MB ntfs 隐藏, 诊断
6 232GB 343GB 111GB ntfs Basic data partition msftdata
7 343GB 413GB 69.8GB ext4
8 413GB 500GB 87.5GB ext4发现编号7应该挂载到
/
, 编号8应该挂载到/home
不确定最终的/dev/nvme0n1p8
等名字,可以用fdisk -l
再看一次 -
暂时解决
稳妥起见,先用了解的磁盘分区号
的方式修复/etc/fstab
1
2/dev/nvme0n1p7 / ext4 rw,relatime 0 1
/dev/nvme0n1p8 /home ext4 rw,relatime 0 2
自我保护
无论是windows擅自更改了磁盘分区号,
还是windows只是影响了磁盘分区号的识别,
更重要的是不能让分区号的改变影响到Arch的挂载情况.
正好fstab支持以UUID的方式挂载.
查看uuid
1 | ls -l /dev/disk/by-uuid/ |
修改fstab
1 | - /dev/nvme0n1p7 / ext4 rw,relatime 0 1 |