修复grub启动 因调整分区导致linux无法启动解决过程

2023-05-16

linux调整分区后,开机重启时会出现
error : unknow filesystem
grub rescue>

我是windows11 + archlinux双系统使用。这段时间用下来,感觉使用linux更多一些。就想把windows的分区中扣出一点的空间给linux使用。把windows的D盘调整了大小,并增加了一个分区。

因为我的linux分区是在硬盘的最后一个分区,前面增加了一个分区就导致分区索引变了。然后就无法启动了。

在这里插入图片描述
原本D盘是200GB,现在D盘由一个单独的分区,拆分成两个100G的分区了,图中空闲的100GB就是多出来的分区了。

原因分析

我的电脑情况来看。
按linux的计算方式,因本最后一个分区叫(hd0,gpt6)因为中间多出了一个分区。现在就成了(hd0,gpt7)导致原来的grub配置文件中描述的分区已经无法正常找到了。

解决办法

进入系统

GRUB启动不了,会自动进入救援模式。我在救援模式输入了以下指令后,成功解决了引导问题。

Welcome to GRUB!


error:unknown filesystem.
Entering rescue mode...
#查所有磁盘列表
grub rescue> ls
(hd0) (hd0,gpt7) (hd0,gpt6) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) 
#查环境变量
grub rescue> set
cmdpath=(hd0,gpt1)/EFI/GRUB
#问题就出现在此外了,原(hd0,gpt6)实际上已经变成了(hd0,gpt7)
prefix=(hd0,gpt6)/boot/grub
root=hd0,gpt6
#查看磁盘下的文件,确定是否是我们想要切换的磁盘
grub rescue> ls (hd0,gpt7)/
./ ../ lost+found/ var/ dev/ run/ etc/ tmp/ sys/
#此处略一些目录
#(关键)设置环境变量,把错误的环境变量修改成正确的
grub rescue> set root=(hd0,gpt7) 
grub rescue> set prefix=(hd0,gpt7)/boot/grub 
grub rescue> insmod normal
#进入熟悉的启动菜单栏
grub rescue> normal

#然后我选择archlinux的启动菜单就可以正常的进入操作系统了。

命令说明:

  • set 查看环境变量,这⾥可以查看启动路径和分区。
  • ls 查看设备
  • insmod 加载模块

环境变量:

  • root 指定⽤于启动系统的分区,在救援模式下设置grub启动分区
  • prefix 设定grub启动路径

彻底修复

既然已经成功进入系统了,使用root权限执行:

mkdir /boot/EFI
mount /dev/nvme0n1p1 /boot/EFI
grub-install --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

自动配置一下grub,我的执行结果如下:

root@vivobook: /boot # grub-mkconfig -o /boot/grub/grub.cfg
正在生成 grub 配置文件 ...
找到 Linux 镜像:/boot/vmlinuz-linux
找到 initrd 镜像:/boot/intel-ucode.img /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot:  intel-ucode.img initramfs-linux-fallback.img
警告: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
找到 Windows Boot Manager 位于 /dev/nvme0n1p1@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
完成

至此引导的启动问题就彻底修复啦。会者不难,难者不会啊!!!


探索过程

以下是探索过程记录,仅供参考。没有多少实际作用。

探索过程1

我在网上找到了一个跟我情况非常接近的解决办法。我感觉大概率可以解决。
https://wenku.baidu.com/view/3b9adf8cd2f34693daef5ef7ba0d4a7302766ccb.html

为什么我不用这个办法呢?原因很简单,我用不了。因为我的笔记本电脑在archlinux的 grub界面,无法使用我的笔记本自带的键盘。
理论上外接usb键盘肯定可以,但是我手头又没有usb键盘。仅有一个蓝牙键盘。

探索过程2

引导进archlinux的安装光盘,重新修复一下grub引导。
可以参考:
《2021年vmware安装archlinux》
https://blog.csdn.net/lxyoucan/article/details/115226297
这个算是大招了,专制各种不服。又是因为我的键盘问题,我无法在命令行连接我的蓝牙键盘。
导致我目前什么也做不了。这个方法就暂时放弃了。

探索过程3

前面两个解决办法都是相对容易的,可惜因为我的电脑键盘的问题,导致我无法操作。现在仅剩一个办法了。
我可以进入manjaro 的live环境,这个是图像化界面的,我只要动动鼠标就能连接上我的蓝牙键盘。
实现方法见:
《没有U盘纯硬盘安装linux之manjaro》
https://blog.csdn.net/lxyoucan/article/details/124541834

当然进ubuntu的预安装环境也是可以的,见:
《没有U盘纯硬盘安装linux之Ubuntu22.04》
https://blog.csdn.net/lxyoucan/article/details/124506518

现在我有操作空间了。那就开始搞起吧。

思路很简单:
直接修改grub.cfg配置文件,并把之前的UUID修改成现在正确的UUID即可。

Linux磁盘分区UUID的获取方法

方法一:

 ls -l /dev/disk/by-uuid/

执行结果如下:

[manjaro manjaro]# ls -l /dev/disk/by-uuid/
总用量 0
lrwxrwxrwx 1 root root 15  525 17:14 163AAA0B3AA9E7C7 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 11  525 17:15 2022-04-16-05-50-10-00 -> ../../loop0
lrwxrwxrwx 1 root root 15  525 17:14 6291afc7-7bc2-4426-a78d-c1ea948e84f0 -> ../../nvme0n1p7
lrwxrwxrwx 1 root root 15  525 17:14 947D-3FF9 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15  525 17:14 E788236116CB079F -> ../../nvme0n1p4
lrwxrwxrwx 1 root root 15  525 17:14 E9E8-76FA -> ../../nvme0n1p6

通过blkid命令

#查设备名称
fdisk -l

比如查到是:/dev/nvme0n1p7

blkid /dev/nvme0n1p7

执行结果如下:

[manjaro manjaro]# blkid /dev/nvme0n1p7
/dev/nvme0n1p7: UUID="6291afc7-7bc2-4426-a78d-c1ea948e84f0" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="root" PARTUUID="10d257ce-975d-b64a-8df3-daea47f7bc1d"

后来我发现其实在PE中常用的分区软件DiskGenius也可以轻松的查到。
在这里插入图片描述
UUID:6291afc7-7bc2-4426-a78d-c1ea948e84f0

最终还是失败了,我发现原来这个UUID原本 就没有变化。

参考

https://wenku.baidu.com/view/3b9adf8cd2f34693daef5ef7ba0d4a7302766ccb.html

https://www.cnblogs.com/xia/archive/2011/01/30/1947706.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修复grub启动 因调整分区导致linux无法启动解决过程 的相关文章

  • Windows Terminal多行粘贴警告

    Windows Terminal每次粘贴命令的时候都有警告 xff0c 虽然本质上是为了安全 对于我一这种一天粘贴10遍以上的用户来说 xff0c 每次都提示太麻烦了 那么还是把它关掉吧 关掉警告信息 multiLinePasteWarni
  • archlinux 安装chrome浏览器

    chromium虽然也可以用 xff0c 但是无法同步数据 xff0c 不方便 那么怎么可以安装chrome并且可以同步数据的那种呢 xff1f 开启 32 位支持库与 ArchLinuxCN 支持库 span class token fu
  • Windows11自带Windows Terminal图形化设置

    之前在Windows10中自己安装的Windows Terminal是有图形化设置界面 xff0c 用起来相对比较方便 自从升级到Windows11 已经自带Windows Terminal了 但是我发现自带的Windows Termina
  • 怎么成为一名架构师?架构师第一步。基层开发人员逆袭成为架构师真的很难吗?

    文章目录 写在前面一 企业需要什么样的架构师1 从招聘软件上了解2 架构师的主要职责与能力 二 成为一名架构师很难吗1 架构师的定义2 当前大部分开发团队的现状3 为什么要有架构师4 技术人员如何自我突破 三 晨钟暮鼓的几句话 写在前面 一
  • MVN打包报错:在类路径或引导类路径中找不到程序包 java.lang

    现象 同一个Springboot项目在windows下mvn打包正常 xff0c 在linux下打包就失败了 打包命令如下 xff1a mvn clean package Dmaven test skip span class token
  • archlinux按键交换

    原本以为需要安装第三方软件 才能实现 xff0c 发现KDE中自带这个功能的设置 直接使用就好 左Ctrl与左Win交换 默认带了很多方案 xff0c 正好就有能满足我的需要的
  • archlinux i3平铺桌面学习笔记

    安装 pacman S i3 选择全部安装 按键配置 我的想法是全默认 xff0c 习惯一下默认的按键风格 修改默认terminal bindsym span class token variable mod span 43 Return
  • PostMan测试若依修改接口

    说来惭愧 xff0c 我使用postman调试修改接口时 xff0c 竟然耗了半小时才搞定 决定文档记录一下 Headers 设置 Authorization Bearer eyJhbGciOiJIUzUxMiJ9 eyJsb2dpbl91
  • Windows 禁用WIn+L锁定系统快捷键

    因为我在windows中使用虚拟机中的Linux做主力开发机用 有时会用到win 43 l这个按键 会导致Windows直接锁屏了 所以我想把这个功能禁用掉 方法 按 Win 43 R 打开运行对话框输入 regedit 然后按回车 xff
  • archlinux按键映射按键自定义

    安装xorg span class token function sudo span pacman S xorg 直接选择全部安装 xmodmap span class token comment 显示按键信息 span xmodmap p
  • IntelliJ IDEA包自动导入设置

    IDEA的默认设置是 xff0c 当需要导包的时候会有个提示 xff0c 这时按Alt xff0b Enter可以手动导入包 这些年一直这么用 xff0c 也习惯了 但是用了一些其他的IDE开发工具边写代码边自动导入 xff0c 用了以后挺
  • kitty终端使用笔记

    简介 kitty是一个免费的开源 图形处理单元 GPU 加速 2 3 终端仿真器 xff0c 适用于Linux和macOS xff0c 专注于性能和功能 kitty 是用C和Python编程语言混合编写的 xff0c 它是少数支持 GPU
  • i3status配置笔记

    默认配置 最近一直在忙于写代码 xff0c i3status安装以后就没有做过任何配置 显示了一些我并不关心的内容 帮助文档 https i3wm org docs i3status html 创建配置文件 mkdir span class
  • Mybatis (ParameterType) 如何传递多个不同类型的参数

    在一些场景下 xff0c 传参是需要多个参数的 一个参数不太够用 xff0c 如 xff1a parameterType 61 34 ImGroup 34 最开始的想法是封装一个专用用来当参数的对象 xff0c 把多个对象包装到一起 xff
  • UML类图使用介绍

    文章目录 一 UML图1 什么是UML图2 类图概述3 类图的作用 二 类的表示方式举个栗子 三 类与类之间关系的表示方式1 关联关系 xff08 1 xff09 单向关联 xff08 2 xff09 双向关联 xff08 3 xff09
  • 没有U盘纯硬盘安装linux之Archlinux

    安装系统用U盘是很方便的 xff0c 无奈我的U盘莫名奇妙的坏了 因为疫情影响 xff0c 买个U盘要挺久时间才能到达 所以我就想能不能使用硬盘来安装linux系统呢 试试吧 xff01 一方面可以省下一个U盘的钱 xff0c 另一方面 x
  • 【Java】微信聊天记录特定词过滤

    微信聊天记录特定词过滤 通常微信聊天记录中包含文本 图片 语音 视频等 xff0c 这些数据显然需要用一个统一的数据结构存储和读取数据 然后把聊天记录中文本数据扣出 寻找是否含指定词 本题选做 Message类 xff0c 描述一条聊天数据
  • linux远程windows桌面

    remmina Remmina 是用 GTK 编写的远程桌面客户端 xff0c 来自 FreeRDP 项目 它支持以下协议 xff1a SSH VNC RDP NX XDMCP 图形化的操作界面用起来很简单方便 安装 span class
  • i3wm nm-applet每次开机都要输入wifi密码的解决办法

    在KDE中使用 xff0c 每次开机不需要输入wifi密码就可以直接上网了 为了提供开发效率 我尝试使用i3wm做为开发环境 但是每次开机都要输入wifi密码很不方便 解决办法 查了一下wiki 好像是因为没有安装GNOME Keyring
  • MySQL limit分页

    之前写了篇 SpringBoot中封装jdbc工具类 xff0c 最近在使用的过程中发现没有分页功能 所以就打算在封装一下分页算法 相关文章 xff1a https blog csdn net lxyoucan article detail

随机推荐

  • i3wm中Chrome不保存密码

    最近切到i3wm中发现一个问题 xff0c 在这个环境下使用Chrome密码不会被保存 xff0c 也无法使用密码自动填充 使用起来非常的不方便 然而在KDE中使用chrome一切正常 xff0c 一切到i3wm就无法使用了 而且所有网站都
  • linux 开机自动登录i3wm

    最近在我的物理机上打算使用archlinux当主力机 但是因为我这台笔记本电脑最近刚发布的 xff0c 安装archlinux无法正确识别笔记本电脑自带的键盘 只能外接usb键盘 xff0c 或者使用蓝牙键盘了 因为我的usb键盘过于厚重
  • linux命令行连接蓝牙键盘

    在KDE的图形界面连接蓝牙设备非常的方便 xff0c 图形化点点就行了 图形化连接 基础 span class token comment 安装 span span class token function sudo span pacman
  • Java爬虫html解析神器Jsoup

    jsoup是一个用于解析 提取 操作HTML的开源Java函式库 在我眼里就是一个java版本的jquery xff0c 非常强大 xff01 xff01 xff01 jsoup在2009年由亚马逊软件开发经理Jonathan Hedley
  • kitty终端ranger预览图片

    之前在macOS中使用iterm2终端用ranger预览图片正常 最近切到archlinux了 xff0c 使用kitty终端模拟器 也想实现ranger中预览图片 相关阅读 xff1a 终端中的文件管理器ranger 视频 https b
  • 设计原则之【接口隔离原则】,我只做我能做的事

    文章目录 一 什么是接口隔离原则二 实例三 总结接口隔离原则与单一职责原则的区别 一 什么是接口隔离原则 接口隔离原则 xff08 Interface Segregation Principle ISP xff09 是指用多个专门的接口 x
  • java: You aren‘t using a compiler supported by lombok

    在学习这个RuoYi Vue Process项目的时候 xff0c 编译报错 https gitee com calvinhwang123 RuoYi Vue Process 报错信息 编译警告信息 java You aren 39 t u
  • i3wm中截图软件flameshot deepin-screenshot

    archlinux中使用i3wm窗口管理器 xff0c 有什么好的截图软件呢 xff1f 环境 先看一下我的环境信息 xff1a span class token variable span class token variable 96
  • i3wm开启自动设置显示器顺序方向分辨率

    多屏使用linux系统时 xff0c 在KDE中设置好显示器的分辨率和显示器顺序 下次开机启动可以记住之前的配置 在i3桌面环境中 xff0c 每次开机都要重新设置一下 xff0c 这就很不人性化了 于是我想找个解决办法 xrandr 使用
  • 汉化Swagger springfox-swagger-ui-2.9.2.jar

    在若依的文档中看到汉化swagger的方法 xff0c 自己尝试怎么也不能成功 后来经过查阅各种文档发现 若依文档中提到的方法仅对 springfox swagger ui 2 7版本生效 对springfox swagger ui 2 9
  • Swagger基本示例

    类注解 span class token annotation punctuation 64 RestController span span class token annotation punctuation 64 RequestMap
  • Spring boot redis java.io.IOException: 远程主机强迫关闭了一个现有的连接

    现象 在测试环境部署的若依版本 xff0c 经常会报如下的错误 而我在开发环境基本没有遇到过 span class token number 16 span span class token operator span span class
  • thunderbird重复的已发送

    最近转到Linux下办公 xff0c 邮件客户端选用的Thunderbird 总体来说还是能适应的 但是在用的过程中发现很次发送信件后 xff0c 发件箱会有一个重复的邮件 我猜测可能是用于备份的 但是我的使用场景几乎用不到这样的功能 xf
  • linux keynav 鼠标可以扔掉了键盘控制鼠标

    我是一个vim用户 xff0c 喜欢使用键盘操作大部分的事情 无奈现在很多软件从设计之初就是为了鼠标设计的 就导致有些时候不得不使用鼠标 那么退一步讲 xff0c 能否使用键盘临时控制一下鼠标呢 xff1f 这样就可以进一步减少鼠标的使用了
  • mysql数据库的导出与导入

    在开发工作中和运维工作中 xff0c 数据库的备份与还原是很常见的工作 之前的工作中我使用oracle更多 xff0c mysql的备份工作参与的比较少 记录一下 xff0c 加深一下印象 准备工作 安装mysql客户端 xff0c 我喜欢
  • linux Windows双系统时间不一致的解决办法

    原因 电脑系统中有两个时间 xff1a 硬件时间 xff1a 保存在主板中 xff0c 信息比较少没时区 夏令时的概念 系统时间 xff1a 又系统维护 xff0c 独立于硬件时间 xff0c 拥有时区 夏令时等信息 系统时间又因为系统的不
  • 设计原则之【迪米特法则】,非礼勿近

    文章目录 一 什么是迪米特法则1 理解迪米特法则2 如何理解 高内聚 松耦合 xff1f 二 实例1 实例12 实例2 一 什么是迪米特法则 迪米特原则 xff08 Law of Demeter LoD xff09 是指一个对象应该对其他对
  • archlinux telnet客户端

    简单介绍 telnet是一种基于TCP的传统命令行远程控制协议 telnet使用非加密的通道 xff0c 因此不太安全 现在主要用于链接一些旧设备 下面这些介绍主要适用于在Arch Linux系统中配置一个telnet服务器 安装 如果只使
  • ASUS Vivobook安装linux

    使用ASUS Vivobook安装linux 会有一个小坑 如果你的linux启动不起来 xff0c 或者本来可以启动更新固件以后就不行了 这篇文章可能会给你一点帮助 BIOS设置 如果你想在这台电脑上安装linux 则Secure Boo
  • 修复grub启动 因调整分区导致linux无法启动解决过程

    linux调整分区后 xff0c 开机重启时会出现 error unknow filesystem grub rescue gt 我是windows11 43 archlinux双系统使用 这段时间用下来 xff0c 感觉使用linux更多