Arch Linux引导修复问题记录 — 系统无法启动解决办法

注意以下不是修复教程,而是进行修复的过程中遇到的问题总结,修复教程网上很多就没必要为此再写了。

一般情况要是更新内核后导致系统无法启动,用Live-CD U盘启动进去后挂载根分区和启动分区,arch-chroot到根分区,然后运行

进行重装一般都可以恢复,还不行可以试一下

其中yy和uu的含义分别为:

-yy: forces package list refresh even if it’s up-to-date.

-uu: Upgrades packages and also downgrades some if repository has older version.

以下假设作为启动和根的目录是两个独立分区,且启动分区挂载到根分区 /boot 下

一:重装Grub情形

用U盘启动后挂在根分区和启动分区,运行以下命令重装

如果遇到IO错误或者报错文件系统为只读,可以卸载启动分区后格式化该分区,运行以下命令:

安装成功后生成grub.cfg:

如果出现了警告:

[/crayon]

那是os-prober导致的,先卸载再重新执行grub-mkconfig便可:

系统启动成功后再装好os-prober重新生成grub.cfg,因为os-prober用于检测其它系统的存在以便添加启动项到grub.cfg里,当然,如果你没有双系统,那便不用管这个了。

grub.cfg成功生成后,退出重启到系统,

二:系统启动后挂载分区失败

先输入密码进入命令行模式,用

检测当前硬盘分区名称,对比/etc/fstab里的,如果名称对不上,说明问题出现在这里,那是因为在用U盘启动进行修复系统时,分区名称发生了变化,当时使用命令:

生成的fstab和正常启动系统时分配的分区名称不一致导致的。

手动修改/etc/fstab里的分区名称,使其与正常启动系统时的一致便可

如我的分区无法挂载时的fstab是这样的:

# /dev/nvme1n1p1 UUID=7259-031D

/dev/nvme1n1p1      /boot       vfat    rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso88 59-1,shortname=mixed,errors=remount-ro  0 2

其中的nvme1n1p1 其实应该为nvme0n1p1,用fdisk -l可以查看到,fstab跟实际设备名不一致导致无法挂载成功启动桌面。

当然如果直接用UUID来表示是不用这么麻烦改设备名或者说分区名的。

其他情况导致的分区无法挂载暂时没遇到。