我有 Acer V3-772G 1 TB 硬盘。为了安装 Kali Linux,我缩小了最大的分区。安装 Kali 时,GRUB 无法检测到 Windows 8,因此我继续(我将 grub 安装为主引导)。安装 Kali 之后,无法启动 Windows 8.1,但在传统 BIOS 中使用 GRUB 启动 Kali 没问题。当我尝试将 BIOS 更改为 UEFI 时,它找不到任何操作系统(花费了太多时间,将近 1 小时)。因此,我尝试在 Ubuntu Live USB 中使用启动修复来更新 GRUB。但更新 GRUB 之后,我很害怕,在 UEFI 和传统模式下,grub 找不到任何操作系统(Kali 和 Windows),所以除了使用 Ubuntu Live 之外我别无选择。我尝试了所有可能的选项,但都没有用。我尝试在 UEFI 模式下使用 rEFInd,它只对 Kali 有效。我仍然无法启动我的 Windows 8.1。我考虑使用 Windows Rescue USB 恢复出厂设置,但一直提示“未找到驱动程序”。请帮助我进行双启动或删除 Kali 并恢复我的 Windows 8.1
答案1
这是 Windows 8.0 和 8.1 机器的常见问题。
从 Windows 8.0 开始,微软不再依赖 efi 文件来启动 Windows,而是使用更高级的格式来加快启动过程,并在重启周期之间保持更高的持久性。遗憾的是,GRUB 尚无法检测到这种启动格式。
双启动 Windows 8.1 的正确方法是先在 BIOS 中禁用 quickboot 和 secureboot,然后启动 Windows。这将强制 Windows 引导加载程序为其他引导加载程序(如 GRUB)生成 efi 文件。
当然,您有一个更大的问题,因为您现在有一个 GRUB 引导程序,因此无法强制 Windows 8 生成 efi 文件。为此,请确保已禁用 quickboot 和 secureboot。当您在 GRUB 时,按 c 进入 GRUB 命令行。使用以下命令启动 Windows:
chainload (hd0,0)+1
您可能需要使用 tab-autocomplete 选项来找到正确的分区。
如果失败,请参见下文。
现在 Windows 有了一个 efi 文件,请重新启动进入 Kali Linux。从根终端运行:
sudo update-grub
您应该看到 GRUB 调试输出行大致相当于:
/dev/sdb1@/EFI/Microsoft/Boot/bootmgfw.efi
文件“bootmgfw.efi”是强制 Windows 引导加载程序生成的文件。现在您应该在 Kali 和 Windows 8 之间实现双启动。
如果 CHAINLOAD 失败:
开始之前,您需要有 Kali(或任何类型的 Debian Live CD)和 Windows 恢复磁盘/USB。您不需要重新安装整个系统。当 Windows 恢复环境启动时,选择打开命令提示符的选项。运行以下命令:
diskpart
select disk 0
这将使用 Windows 和 GRUB 安装硬盘。
下次运行:
列表卷
这应该会列出磁盘上的分区,包括外围设备(您的恢复 CD 或 USB)。记下驱动器号。运行以下命令退出 diskpart:
exit
现在您有了包含引导加载程序文件的恢复分区的驱动器号,请输入引导目录(您需要引号):
cd "<your drive letter>\boot"
现在运行:
目录
这列出了启动目录中的文件。您应该看到一个名为
bootsect.exe
如果你不这样做,那你就来错地方了。考虑查找更深入的恢复教程。
下一个:
bootsect /nt60 SYS /mbr
现在重新启动,GRUB 将不会出现,但 Windows 应该会启动。您所做的是将 Windows 引导加载程序设置为系统入口点,您实际上并没有删除任何操作系统的分区,包括包含 GRUB 的分区。同样,此时,确保 quickboot 和 secureboot 已禁用。重新启动进入 Windows 生成启动 efi 文件。现在 Windows 可以从 GRUB 启动,我们需要恢复它。使用您的 Kali/Debian 实时磁盘,启动进入 Linux 操作系统并打开 root shell。确保安装了启动修复(仅可从实时磁盘获得):
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
sudo boot-repair
sudo update-grub
这将用 GRUB 替换 Windows 引导加载程序作为系统入口点,同样在此过程中不会真正删除任何内容。
如果此选项不可用(它在我的 Ubuntu 和 Kali 实时磁盘上),请查看您的发行版的 GRUB 恢复选项。
在 update-grub 命令上,您应该看到类似这样的调试输出:
/dev/sdb1@/EFI/Microsoft/Boot/bootmgfw.efi
现在重新启动,您应该在 GRUB 中看到 Kali 和 Windows 选项。
边注:
由于一些原因,我不推荐严格的 Windows/Kali 双启动。
首先,Kali 使用的是旧版 GRUB,而不是 GRUB 2(现在是 2.02)。这会使双启动在高分辨率、现代显示器上非常痛苦且滞后。如果您有独立显卡,这可能会导致其他问题,无法正常启动。
其次,Kali 使用自定义内核版本(称为 Kali1),许多现代以太网卡没有驱动程序(标准内核的驱动程序为 bcmwl-kernel-source)。您必须修改驱动程序,或者添加标准内核的 Debian 存储库并进行交换。
第三,为什么是 Kali?它是一个渗透测试发行版,相比之下(并且尊重地),其他方面几乎都很糟糕。如果您真的在进行渗透测试,您应该有单独的启动、根和主分区,其中根和主分区是加密的,并且在启动之前需要您提供给 initramfs 的密码。我不做很多渗透测试,但当我做的时候,我肯定不会在 Kali 中编写我的插件和脚本。出于这个原因,我总是安装另一个 Linux 发行版。
我在这里要说的是,Kali 是为经验丰富的 Debian 用户准备的,他们应该知道目前双启动 Windows 8 存在的问题。首先考虑在 Windows 旁边安装一个更友好的发行版,我喜欢 Ubuntu(或者如果你讨厌 Unity,可以选择它的某个版本)。Ubuntu 有更好的文档,并附带 GRUB 2.02 和更多 grub 工具。这与社区一起将使初始双启动设置更容易。一旦你有了稳定的双启动设置,添加第三个 Linux 发行版就非常容易了(尽管如果你加密 Kali 根目录会更难)。
我当前的启动系统是带有 Windows 8.1、Ubuntu 14.04 和 Kali(带有 Kali1 和通用内核/initramfs)的 GRUB 2.02。
希望这对某些人有帮助。
答案2
首先,您必须在 Linux PC 上安装 GRUB Customizer。为此,您必须执行以下操作:
add-apt-repository ppa:danielrichter2007/grub-customizer
apt-get update
apt-get install grub-customizer
如果不起作用,请执行以下操作
您需要安装 python-software-properties 才能使用 python-software-properties 命令。
apt-get install python-software-properties
我建议从源代码下载 grub-customizer 并从那里构建它。
第一步:安装这些软件包:
#apt-get install cmake
#apt-get install g++ OR gcc-c++
#apt-get install libgtkmm-2.4-dev OR gtkmm24-devel (>= 2.18)
#apt-get install gettext
#apt-get install libssl-dev OR openssl-devel
(软件包名称可能会有所不同,具体取决于所使用的发行版)
第二步:下载源:
在这里下载 tar.gz 包:https://launchpad.net/grub-customizer/+download ...并提取其内容。
第三步:编译源代码:
进入从 tar.gz 文件解压的源目录,然后运行
$ cmake . && make
如果您收到 cmake 版本错误,请尝试将“cmake_minimum_required”值设置为您安装的版本 - 我只写下了最低测试版本,因此旧版本也可能兼容。
第四步:安装一些(可选)运行时依赖项:
- 信息
第五步:安装Grub Customizer
$ sudo make install
然后你可以使用菜单或运行gksu grub-customizer
/来启动 Grub Customizersudo grub-customizer
答案3
尝试在 kali linux LiveCD 的终端上输入。
~# sudo update-grub
然后你应该会看到 Win 8 在终端中列出。