Kali 双启动在未插入 U 盘的情况下无法工作

Kali 双启动在未插入 U 盘的情况下无法工作

我刚刚成功安装了 Kali Linux 和 Windows 7 的双启动。所以我可以选择从我的辅助磁盘启动,GRUB 在其中找到位置,可以选择 Kali,一切正常。问题是:只有插入 USB 棒时它才能正常工作。我知道这听起来很奇怪,但这是真的……

我安装了 Kali,并将镜像与 Rufus 一起刻录到 USB 记忆棒上。安装进度很顺利,没有任何问题,但是现在,我只能在插入“A”USB 棒时启动 Kali,我不是说插入“THE”USB 棒时,它可以是任何 USB 棒,我完全格式化 USB 记忆棒,我尝试了另一个,没关系,它只需要一个并且恰好插入一个 USB 记忆棒(如果我插入第二个,它又无法工作),我收到的错误类似于sdb3 not found。我已经解决了这个问题。 Kali 总是将 USB 棒安装到sda,带有 Kali 分区的分区是打开的sdb,另一个磁盘上的另一个分区是打开的sdc(对于 Kali 来说不介意)。现在我猜想,Kali 试图找到 下的分区sdb3,但如果我的 USB 棒没有插入,它会是sda3

我希望你明白我的意思。

这是sdb磁盘的图片

这是磁盘的图片sdb

看来,Kali 总是尝试从 启动sdb,但当我插入 USB 记忆棒时,sdb情况与没有 USB 记忆棒时有所不同。

我怎样才能改变这个?我真的很想知道为什么它引用标识符sdb而不是真正引用磁盘本身。

那么我能做些什么来解决这个问题,这样我就不必插入 U 盘来启动呢?

编辑: 的输出lsblk如下: 在此输入图像描述 老实说,我对背后的事情有点困惑sda1,因为我完全格式化了该设备......

编辑2:运行 grub install 会出现以下错误: 在此输入图像描述

输出parted-l

Model: SanDisk Extreme (scsi)
Disk /dev/sda: 62.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      32.8kB  3020MB  3020MB  primary               boot, hidden
 2      3020MB  3021MB  721kB   primary


Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name                  Flags
 1      20.5kB  134MB   134MB                                         msftres
 2      135MB   2162GB  2162GB  ntfs            Basic data partition  msftdata
 3      2162GB  2980GB  818GB   ext4            Basic data partition  msftdata
 4      2980GB  2992GB  12.6GB  linux-swap(v1)  Basic data partition  msftdata
 5      2992GB  3001GB  8389MB  ntfs            Basic data partition  msftdata


Model: ATA WDC WD5000AAKX-0 (scsi)
Disk /dev/sdc: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  500GB  500GB  primary  ntfs         boot

[ -d /sys/firmware/efi ] && 回显 UEFI ||回显BIOS

简单地输出BIOS

答案1

我懂了。

摘要:2 个硬盘。一种使用 gpt-schema,2. 使用 ms-dos。

当您在具有 gpt 分区表的硬盘上以 BIOS 模式安装并且您将在其上安装 grub 时,您需要创建一个所谓的BIOS-启动分区

另一个机会是在 2. 驱动器中安装 grub,那里还有 Windows 的引导加载程序;并在BIOS中将此驱动器设为第一启动介质。

这个

Model: ATA WDC WD5000AAKX-0 (scsi)
Disk /dev/sdc: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  500GB  500GB  primary  ntfs         boot

我是说。

答案2

尽管您必须按 F11 才能获取 grub 菜单,但 grub 似乎已安装在您的 Windows 驱动器上(因为您可以使用任何其他不可启动的 USB 启动到 grub,并且 Windows 光盘是唯一具有启动标志的光盘)放)。

您可以借助以下命令验证 grub 的位置古尔塞尔曼斯脚本。

要在不插入 USB 的情况下启动 Kali,请从 grub 菜单进入 grub shell(当 grub 菜单显示时按 c)并按照描述进行操作这里

根据您的信息,假设没有插入 USB,您的 kali 安装位于 sda3 上,由 grub 称为 (hd0,3),则 grub shell 的引导顺序将是

set root=(hd0,3)              
linux /vmlinuz root=/dev/sda3
initrd /initrd.img
boot

成功进入后,请检查 /etc/default/grub/config 策略是否阻止使用 UUID,如所述这里然后重新安装grub。它可能只允许安装在可启动的 Windows 驱动器上(现在是 sdb,没有插入任何 USB)。

重新启动之前

cat /boot/grub/grub.cfg

并检查 grub.cfg 是否使用 UUID。如果不是,正如您已经指出的,您需要更正此问题,以避免稍后插入 USB 时出现启动问题。

为了避免通过编辑工作条目来破坏新的 grub 安装,最好将新的 UUID 配置菜单条目添加到 grub.cfg 中。

首先获取 sda3 的 UUID

sudo blkid

然后将 Kali 的现有 grub 菜单项的内容复制到新的 grub 菜单项中,并对其进行编辑以将 /dev/sda3 替换为其等效的 UUID。我使用 grub-customizer 进行这些编辑,可能还有其他工具,但不建议手动编辑 grub.cfg。

完成的自定义条目应该类似于

#calls to insmod will be the ones you copied, these are mine
insmod part_gpt            
insmod ext2 
#this is your main edit
search --no-floppy --fs-uuid --set=root YourSda3Uuid
linux /boot/vmlinuz-WhateverVersion root=UUID=YourSda3Uuid ro quiet
initrd /boot/initrd.img-WhateverVersion

重新启动并测试它。如果失败,则通过未编辑的(菜单顶部?)grub 条目引导回 Kali,并检查语法GRUB 手册

最后一件事。

如果 / 中有指向当前 vmlinuz 和 initrd 的链接,则将菜单条目修改为

linux /vmlinuz root=UUID=YourSda3Uuid ro quiet
initrd /initrd.img

然后当您的内核更新并修改链接时,您的菜单项将选择新内核。

相关内容