在开始之前,先介绍一下我的软件(操作系统)和硬件规格:
System:
Host: kali Kernel: 5.14.0-kali4-amd64 x86_64 bits: 64 compiler: gcc
v: 10.3.0 Desktop: Xfce 4.16.0 Distro: Kali GNU/Linux 2021.4
base: Debian testing
Machine:
Type: Laptop System: Acer product: Aspire E5-575G v: V1.27
serial: <superuser required>
Mobo: Acer model: Ironman_SK v: V1.27 serial: <superuser required>
UEFI: Insyde v: 1.27 date: 05/26/2017
Battery:
ID-1: BAT1 charge: 32.6 Wh (100.0%) condition: 32.6/62.2 Wh (52.5%)
volts: 12.6 min: 11.1 model: PANASONIC AS16B5J status: Full
CPU:
Info: Dual Core model: Intel Core i5-7200U bits: 64 type: MT MCP
arch: Amber/Kaby Lake note: check rev: 9 cache: L2: 3 MiB
flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
bogomips: 21599
Speed: 500 MHz min/max: 400/3100 MHz Core speeds (MHz): 1: 500 2: 500
3: 500 4: 500
Graphics:
Device-1: Intel HD Graphics 620
vendor: Acer Incorporated ALI Aspire E5-575G driver: i915 v: kernel
bus-ID: 00:02.0
Device-2: NVIDIA GM108M [GeForce 940MX] vendor: Acer Incorporated ALI
driver: nouveau v: kernel bus-ID: 01:00.0
Device-3: Chicony HD WebCam type: USB driver: uvcvideo bus-ID: 1-7:5
Display: x11 server: X.Org 1.20.11 driver: loaded: modesetting
unloaded: fbdev,vesa resolution: 1920x1080~60Hz
OpenGL: renderer: Mesa Intel HD Graphics 620 (KBL GT2)
v: 4.6 Mesa 21.2.5 direct render: Yes
Audio:
Device-1: Intel Sunrise Point-LP HD Audio
vendor: Acer Incorporated ALI Acer Aspire E5-575G driver: snd_hda_intel
v: kernel bus-ID: 00:1f.3
Sound Server-1: ALSA v: k5.14.0-kali4-amd64 running: yes
Sound Server-2: PulseAudio v: 15.0 running: yes
Sound Server-3: PipeWire v: 0.3.40 running: yes
Network:
Device-1: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter
vendor: Lite-On driver: ath10k_pci v: kernel bus-ID: 03:00.0
IF: wlan0 state: up mac: 3c:95:09:ca:9e:7f
Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
vendor: Acer Incorporated ALI Acer Aspire E5-575G driver: r8169
v: kernel port: 3000 bus-ID: 04:00.1
IF: eth0 state: down mac: a8:1e:84:aa:b2:8d
Bluetooth:
Device-1: Lite-On Qualcomm Atheros QCA9377 Bluetooth type: USB
driver: btusb v: 0.8 bus-ID: 1-5:4
Report: hciconfig ID: hci0 rfk-id: 4 state: down bt-service: disabled
rfk-block: hardware: no software: no address: 3C:95:09:CA:9E:80
Drives:
Local Storage: total: 245.69 GiB used: 0 KiB (0.0%)
ID-1: /dev/sda vendor: Kingston model: RBU-SNS8152S3256GG2
size: 238.47 GiB temp: 30 C
ID-2: /dev/sdb type: USB model: USB DISK 2.0 size: 7.21 GiB
Partition:
Message: No partition data found.
Swap:
Alert: No swap data was found.
Sensors:
System Temperatures: cpu: 37.0 C mobo: N/A
Fan Speeds (RPM): N/A
Info:
Processes: 186 Uptime: 16h 16m Memory: 7.64 GiB used: 2.26 GiB (29.6%)
Init: systemd runlevel: 5 Compilers: gcc: 11.2.0 clang: 11.1.0-4
Packages: 2465 Shell: Zsh v: 5.8 inxi: 3.3.07
以上是使用Inxi生成的。
当前分区状态是:
Disk /dev/sda: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: KINGSTON RBU-SNS
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 4BA38183-8A45-4F49-A381-5E4630853A0A
Device Start End Sectors Size Type
/dev/sda1 2048 206847 204800 100M EFI System
/dev/sda2 206848 239615 32768 16M Microsoft reserved
/dev/sda3 239616 434941951 434702336 207.3G Microsoft basic data
/dev/sda4 498020352 500118158 2097807 1G Windows recovery environment
/dev/sda5 496066560 498020351 1953792 954M Linux swap
/dev/sda6 434941952 496066559 61124608 29.1G Linux filesystem
这是使用 fdisk 命令生成的。
现在,我的笔记本电脑将 Windows 10 作为默认操作系统,然后我决定使用带有 Kali Linux DD 映像的实时 USB 驱动器与 Kali Linux 双重启动。对于上下文,我遵循这是 Kali 与 Windows 10 双启动的官方指南。我使用以下方式制作了实时 USB 驱动器鲁弗斯,通过操作 UEFI 菜单中的启动顺序(需要我在笔记本电脑重新启动时按 F2 键)启动到实时 Kali,使用 GParted 为 Kali 创建磁盘分区,然后启动 Kali 的图形安装程序。
到目前为止一切都很顺利,但是在出现“安装完成”页面并提示我重新启动系统之后(之后我删除了 USB 驱动器以启动到 GRUB),出现了支持 GRUB 的最小的类似 Bash 的行,而不是出现预期的蓝色 GRUB 启动菜单。
我以前在这台笔记本电脑上双启动 Windows 和 Ubuntu 时遇到过这种现象(在尝试双启动 Windows 和 Kali 之前我卸载了 Ubuntu),并记得与我遵循的指南不同,我的计算机跳过了安装步骤GRUB。我怀疑之前删除的 Ubuntu 不完整并且干扰了这一点。
不管怎样,我搜索了解决方案并发现了一些帖子指导我尝试诸如
mount /dev/sda* /mnt
mkdir mnt/dev
mkdir mnt/proc
mkdir -p /mnt/sys/firmware/efi/efivars
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars
mkdir -p /mnt/boot/efi
mount /dev/sda+ /mnt/boot/efi
mount -o remount,rw /dev/sda+ /mnt/boot/efi
mkdir /mnt/hostrun
mount --bind /run /mnt/hostrun
chroot /mnt
mkdir /run/lvm
mount --bind /hostrun/lvm /run/lvm
grub-install /dev/sda
update-grub
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys/firmware/efi/efivars
umount /mnt/sys
umount /mnt/boot/efi
umount /mnt/hostrun
umount /mnt/run/lvm
umount /mnt
REBOOT
从这个线程,
set root=(hd0,gptx)
set prefix=(hd0,gptx)/boot/grub
insmod normal
normal
这来自同一个线程(当然,我适当地更改了分区名称,以便它们与我的系统匹配)。我还关注了提供与上述类似条目的线程,但问题仍然存在。我知道 Kali 已正确安装在我的 sda/dev5 中,因为我可以输入
set prefix=(hd0,gpt6)/boot/grub
insmod normal
normal
这三行进入已安装的 Kali 操作系统,但由于某种原因,我无法看到常规的 GRUB 启动屏幕,该屏幕允许我在重新启动时在 Kali 和 Windows 之间进行选择。
此外,我的问题仍然存在。有一次,我决定从 EFI 分区中删除 GRUB(如您所知,我使用 UEFI 引导模式,而不是 BIOS)并重新安装它;我跟着
这个帖子并删除了两个子文件夹:/ubuntu和/卡利来自 EFI 文件夹。然后我用live USB驱动器再次按照Kali Linux的安装过程进行操作,希望能够通过这种方式安装GRUB,但现在我遇到了更大的麻烦。 “GRUB 0:EFI 分区”现在甚至不向我显示最小的类似 BASH 的行编辑页面;它只是简单地显示
未找到系统引导顺序。初始化默认值。重置系统
并进入永久错误重启周期。我知道这个错误的原因,因为它是在删除上述两个子文件夹后发生的,但现在我不知道该尝试什么。
我刚刚列出了我如何走到这一步的全部细节。我现在应该尝试什么?我的目标是通过提供启动到任一系统的选项的 GRUB Bootloader 来成功双启动 Windows 10 和 Kali Linux。
答案1
出现grub>提示是因为/boot分区无法挂载。例如 /boot/grub/grub.conf 或 /boot/grub2/grub.cfg 等。
EFI 配置中设置了错误的文件系统位置。
使用这些命令启动后...
set prefix=(hd0,gpt6)/boot/grub
insmod normal
normal
那么你可以通过“update-grub”命令来纠正这种情况。它将更新 efi 配置以引用正确的文件系统。
您的最新问题可以通过使用 efibootmgr 命令操作 EFI 引导顺序并替换丢失的 EFI 引导文件来解决。
基本上这些文件夹保存 EFI 启动项(.efi 文件)。这些 EFI 启动项(.efi 文件)的启动顺序/优先级是使用 Linux 上的 efibootmgr 进行控制的。
恢复文件,或者如果它们消失了,创建另一个 EFI 系统(也许是 VM?),然后使用 livecd 从那里复制文件,然后使用 livecd 中的 efibootmgr 创建一个条目并将它们链接到相应的文件,
PS 这些是您在 BIOS/UEFI 设置屏幕中看到的条目,例如显示“UEFI:Windows Boot Loader”等的条目。它们使用“efibootmgr”编程到 EFI 中
请参阅本指南了解如何使用 efibootmgr: https://www.linuxbabe.com/command-line/how-to-use-linux-efibootmgr-examples
或者,您可以重新启动到 LiveCD,chroot 进入环境,然后“grub-install”应该通过安装新的 EFI 文件来修复它,并且您可以检查是否使用 efibootmgr 创建了新的 EFI 启动项。这是最简单的方法(使用 grub-install),但是上面的解释将帮助您准确理解如何破坏系统以及如何以更直接的方式修复它。