您的当前位置:首页正文

Ubuntu 启动引导如何修复(直接进入grub怎么办)

2024-11-07 来源:个人技术集锦

如果 Ubuntu 系统启动时直接进入 GRUB 界面,而不是直接启动操作系统,原因是: GRUB 配置文件丢失或损坏

解决方法

一、手动引导系统(临时方案)

GRUB 的配置文件(/boot/grub/grub.cfg)损坏。通过 GRUB 界面中命令行模式,尝试手动引导系统。

 ls

这将会列出一系列的分区,如

(h0,p0) (h1,p0) (h1,p1)

找到分区后,手动加载 Linux 内核并引导系统:

set root=(hd0,1)  # 这里替换成你的根分区
linux /boot/vmlinuz root=/dev/sda1  # 替换你的根分区设备
initrd /boot/initrd.img
boot
二、使用Live USB修复 GRUB(永久方案):
1、原理
2、流程

步骤1. 使用 Live USB 启动系统并选择“Try Ubuntu”模式。
步骤2. 打开终端 并列出所有分区:
使用lsblkfdisk -l命令来确定正确的分区

步骤3. 挂载根分区:

sudo mount /dev/sda1 /mnt  # 替换为正确的根分区

步骤4. 还需要挂载一些虚拟文件系统,以便在chroot环境中正确地访问硬件设备和环境信息。:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

步骤 5. 切换到挂载的系统环境:

sudo chroot /mnt

挂载EFI分区(用于待会覆写文件)

mkdir /mnt/efi
mount /dev/sda1 /mnt/efi

步骤 6: 安装或修复 GRUB
在 chroot 环境中运行以下命令来安装或修复 GRUB:

grub-install --target=x86_64-efi --efi-directory=/mnt/efi --bootloader-id=ubuntu
--target=x86_64-efi 表示你要安装在 UEFI 系统上。
--efi-directory=/mnt/efi 指定 EFI 分区的位置。
--bootloader-id=ubuntu 是 GRUB 在 UEFI 启动菜单中显示的名称。

# 接下来,更新 GRUB 配置:
update-grub

步骤 7. 退出 chroot 环境并重启系统:

exit
sudo reboot
三、Ubuntu 内部的引导文件

以上步骤完成后, Linux引导程序页面(选择Ubuntu, Advance Option的页面)应该能展示出来。
如果进入emergency 模式,则证明Ubuntu内部的引导没有做好。

这个文件是在安装的时候系统生成的,在更换了硬盘之后,该文件很有可能不能用了(由于uuid发生了变化)。

li@li-Z690I-A-ULTRA-LITE:/etc %cat fstab
     1	# /etc/fstab: static file system information.
     2	#
     3	# Use 'blkid' to print the universally unique identifier for a
     4	# device; this may be used with UUID= as a more robust way to name devices
     5	# that works even if disks are added and removed. See fstab(5).
     6	#
     7	# <file system> <mount point>   <type>  <options>       <dump>  <pass>
     8	# / was on /dev/nvme1n1p2 during installation
     9	UUID=5c23a161-bbc6-4b87-b52e-7699c10c2741 /               ext4    errors=remount-ro 0       1
    10	# /boot/efi was on /dev/nvme0n1p1 during installation
    11	UUID=AB5E-0E4E  /boot/efi       vfat    umask=0077      0       1
    12	/swapfile                                 none            swap    sw              0       0

使用 blkid 列出所有块设备和信息,包含uuid。
将上述文件的第一个UUID 改为指向 Linux 系统,第二个UUID 改为指向引导程序。

Top