防风防墙防老王 防风卷帘

2023-06-21 03:58   geyange.com

防风防墙防老王

问题产生的原因:

某一天心血来潮想要把kali系统装到U盘里,这样方便与随身携带学习用。刚开始还是好好的,从U盘启动到使用都是极好的。后来换了一台笔记本,就突然产生了Grub Rescue这个问题,上面一个提示是:invalid arch independent ELF magic。

在网上查找了一下原因,发现可能是由于主板支持 UEFI BIOS(可扩展固件接口),是用来替代传统的BIOS的,很多的Grub都支持。所以存在几种可能的原因:

主板没有开启UEFI引导(BIOS设置里面UEFI Shell还没有安装)

系统的安装已经检测到UEFI的启动,因此自动将Grub配置为UEFI,因而导致Grub无法正常启动

U盘质量不过关,导致引导失败

将系统安装到U盘里时,由于选择分区安装,导致系统找不到引导。

1.问题现象

2.解决步骤

一般使用平常Grub Rescue模式下的基本操作,输入下面的命令

先使用ls命令,找到Ubuntu的安装在哪个分区:

grub rescue>ls

会罗列所有的磁盘分区信息,比方说:

(hd0),(hd0,msdos3),(hd0,msdos2),(hd0,msdos1)

然后依次调用如下命令: msdosX表示各个分区,注意 msdos 与 数字 之间没有空格!

grub rescue>ls (hd0,msdosX)/boot/grub

如果都找不到的话,需要查一下是否因为Linux版本差异,造成grub的路径不对,

例如直接ls(hd0,X)/grub等等。

假设找到(hd0,msdos3)时,显示了文件夹中的文件,则表示 Linux 安装在这个分区。调用如下命令:

grub rescue>set root=(hd0,msdos3)

grub rescue>set prefix=(hd0,msdos3)/boot/grub

grub rescue>insmod /boot/grub/normal.mod

然后调用如下命令,就可以显示出丢失的grub菜单了。

grub rescue>normal

如果出现前面的错误:invalid arch independent ELF magic。(这里引入的是用U盘装系统时的解决方法,然而并不适用我把系统装在U盘里,很纠结)

接下来就考虑要使用Live CD,尝试着把Grub配置为普通版本进行还原。首先查看分区信息如下:

sudo fdisk -lu /dev/sda

复制代码

显示分区为:

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes

255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 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

Disk identifier: 0x0fba0fb9

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *          63   409593239   204796588+   7  HPFS/NTFS/exFAT

/dev/sda2       409593301  1953523711   771965205+   f  W95 Ext'd (LBA)

/dev/sda5       409593303   929520899   259963798+   7  HPFS/NTFS/exFAT

/dev/sda6       929521664   960770047    15624192   82  Linux swap / Solaris

/dev/sda7       960772096  1953523711   496375808   83  Linux

注意我这里是将整个根目录/安装在/dev/sda7上面的。因此可执行操作如下(#后的内容为注释):

sudo apt-get remove grub-efi-amd64   #移除grub-efi

sudo apt-get install grub-pc  #安装普通grub

sudo mount /dev/sda7 /mnt    #挂载引导分区

sudo grub-install --root-directory=/mnt /dev/sda

复制代码

这里如果你的引导分区位于单独的分区上,还需要挂载至/mnt/boot目录上。在执行完最后一条grub-install命令后,如果安装成功会给出没有错误的提示,这样就把Grub切换回来了,重启就可以看到熟悉的Grub菜单了。

不过不要高兴,如果这时重启,问题依旧存在,我们需要进入Linux中,对grub进行修复。

进入Linux之后,在命令行执行:

sudo update-grub

sudo grub-install /dev/sda

(sda是你的硬盘号码,千万不要指定分区号码,例如sda1,sda5等都不对)

重启测试是否已经恢复了grub的启动菜单

3.解决结果

从网上查了半天一直没能成功解决,综合多个帖子的答案算是勉强确定了问题原因,真的是劝大家以后换个好点的U盘,在不明白linux系统的情况下不要随便对安装系统进行分区。

4.参考

[1] CSDNwoty123

[2] 百度经验

[3] Linux社区  作者:wzhnsc


文章版权声明:除非注明,否则均为格言阁原创文章,转载或复制请以超链接形式并注明出处。
取消