kali双系统grub修复windows10引导启动项

背景

本人笔记本只有一块SSD硬盘,装有一个UEFI启动模式的win10 操作系统,经过分区后安装了KALI,结果2022年6月某次最新更新kali系统重启电脑后,grub引导界面没有了win10的启动项。

搜索过很多“双系统grub添加Windows10引导启动项”之类文章,照做总是提示不能识别efi启动分区sda1。估计是kali升级后添加的windows启动项不能再简要设置指定位置,要严格按照grub手册参数要求,$hints_string 和 $fs_uuid 缺一不可。

解决方法

1:
fdisk -l 查看确认efi启动分区是否sda1,或者其他分区;

首先要知道win10启动项分区的UUID,使用blkid /dev/sda1或者grub命令均可,详情如下

blkid /dev/sda1
# 或者
grub-probe -t fs_uuid -d /dev/sda1

2:修改grub.cfg文件
首先定位 /boot/grub/grub.cfg,修改权限为777;

UEFI/GPT 模式下安装的 Windows

这个模式寻找 Windows 的启动加载器的位置,然后当用户选择了相应的菜单条目的时候,通过链式载入的方法在 GRUB 之后加载它。这里主要的任务是找到 EFI 系统分区然后从上面运行启动加载器。

注意: 这个启动项仅在 UEFI 模式下才起作用,而且 Windows 和 UEFI 的位数必须相同。

if [ ‘${grub_platform}’ == ‘efi’ ]; thenmenuentry ‘Microsoft Windows Vista/7/8/8.1/10 UEFI/GPT’ {insmod part_gptinsmod fatinsmod chainsearch --no-floppy --fs-uuid --set=root $hints_string $fs_uuidchainloader /EFI/Microsoft/Boot/bootmgfw.efi}
fi

其中 $hints_string 和 $fs_uuid 由下述两个命令得到。

$fs_uuid 命令检测 EFI 系统分区的 UUID:

grub-probe --target=fs_uuid esp/EFI/Microsoft/Boot/bootmgfw.efi

输出:1ce5-7f28

或者(以 root 身份)运行 blkid 然后从结果中找到 EFI 系统分区的 UUID:

blkid /dev/sda1

输出:/dev/sda1: SEC_TYPE=“msdos” UUID=“1ce5-7f28” BLOCK_SIZE=“512” TYPE=“vfat” PARTLABEL=“EFI system partition” PARTUUID=“d8cc1e8f-5tb8-4cd9-85v8-e7dfedcc327d”

$hints_string 命令可以确定 EFI 系统分区的位置,在当前的例子中是 harddrive 0:

grub-probe --target=hints_string esp/EFI/Microsoft/Boot/bootmgfw.efi

输出:–hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1

(如果输出为:–hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 那说明你的window是BIOS/MBR 模式下安装的 Windows)

这两个命令都是假设 Windows 使用的 ESP 是挂载在$esp上的。当然,Windows的 EFI 文件路径可能有变,因为这就是Windows…
本例中实际 /dev/sda1 是挂载在 /boot/efi ,所以用 /boot/efi 替换上述的 esp

结果

修改 /boot/grub/grub.cfg文件中:

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

添加中间内容实际修改为:

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Microsoft Windows 10' {insmod part_gpt ##  -> 现在一般是gpt格式的硬盘insmod fat ## -> 实际上是fat格式,可以自己试一下是vfat还是fatinsmod chainsearch --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28chainloader /EFI/Microsoft/Boot/bootmgfw.efi ## 注意大写
}
### END /etc/grub.d/30_os-prober ###

保存,重启,搞定。

结语

本文仅适合UEFI/GPT 模式下安装的 Windows,kali 双系统情况,如果你是BIOS/MBR 模式下安装的 Windows,请参考:GRUB:BIOS/MBR 模式下安装的 Windows

本人的台式机也是如此,试了很多文章的方法都是比较旧的依据grub方式复杂的命令模式,还不能修复,原因就是那些文章都是基于grub旧版,升级最新的linux都依据使用了grub2,启动文件和参数都发生了变化,最简单的方式是,首先修复windows的正常启动,安装使用 Grub2Win,定位到 linux 的grub2启动文件,通常在 /boot/grub/grub.cfg,在windows 模式下,使用 Grub2Win 导入这个grub.cfg(可以用 DiskGenius 读取linux文件系统的boot文件夹,将此文件复制到 win 的硬盘),就可以在win 启动菜单添加 linux(kali)的 grub 启动菜单项。

kali更新grub修复双系统windows10引导启动项相关推荐

  1. centos安装后两个启动项、_Windows安装Centos7双系统后Windows启动项消失

    方法一: 在Centos7下root登陆 编辑 /boot/grub2/grub.cfg vim /boot/grub2/grub.cfg 在第一行添加 menuentry "Windows ...

  2. linux 开机默认启动windows系统时间,Windows和Linux双系统批改默认启动项、超时时间...

    Windows和Linux双系统修改默认启动项.超时时间 修改/etc/default/grub, 然后update-grub. 执行命令 sudo gedit /etc/default/grub 主 ...

  3. bcedit双系统更改启动项名称_Win7下双系统修改BCD启动项名称

    Win7 下双系统修改 BCD 启动项名称 2010 年 08 月 06 日 星期五 下午 10:32 使用了启动项修复后,可能有些名称操作系统显示名称不正确,例如"早期的 Windows  ...

  4. 修复GRUB:win10 1709 秋季创意者更新导致Linux双系统无法引导

    引言和吐槽 之前就一直看到各种 win10 1709 秋季创意者更新的文章,说什么毛玻璃特效.各种更新balabala弄得自己心里很期待的样子.于是当看到系统提示 win10 可以更新1709的时候就 ...

  5. win10+Ubuntu双系统,设置默认启动项为win10

    在win10下安装了Ubuntu20.04系统后,开机进入系统引导项界面,默认选择的是Ubuntu系统. 这是因为,双系统后由Ubuntu的grub引导启动的, 一般还是WIN10用的多一些,下面就设 ...

  6. 双系统 Win10 Ubuntu 启动项修复

    双系统 Win10 安装 Ubuntu 没有grub启动项的解决及双系统 Ubuntu grub启动项中 没有Windows的解决 一.此方法针对sudo update-grub不起作用找不到启动项 ...

  7. linux win10双系统启动顺序,Windows 10 和 Ubuntu 20.04 双系统 GRUB2 默认启动项的更改...

    测试环境系统:Windows 10和Ubuntu 20.04 许多喜欢使用GNU/Linux发行版的用户由于各种原因不能放弃Windows.因此,许多人选择双启动(或多启动).如果您在安装了Windo ...

  8. Win7/8/10安装Centos7/Redhat7双系统丢失windows启动项的解决办法

    Win7/8/10安装Centos7/Redhat7双系统后可能会丢失windows启动项,这是因为Linux系统默认将mbr改写成grub2,新安装的Linux系统默认不识别windows下的ntf ...

  9. Windows安装Centos7双系统后Windows启动项消失

    原文: https://www.cnblogs.com/xinglichao/p/9999049.html https://blog.csdn.net/yingzinanfei/article/det ...

  10. 两种方法教你彻底卸载Ubuntu双系统,无启动项残留

    两种方法教你彻底卸载ubuntu双系统 方法一: 1.在windows下下载磁盘工具DiskGenius *下载地址:*http://www.diskgenius.cn/download.php 下载 ...

最新文章

  1. 保留两位小数除法算式_北师大|五年级上册|第一周周测·小数除法(1)
  2. 规格选择_Axure教程:实现商品规格选择功能
  3. 你确定你真的喜欢编程吗??
  4. 操作篇 DHCP协议学习与应用
  5. (十三)nodejs循序渐进-高性能游戏服务器框架pomelo之扩展聊天服务器为机器人自动聊天
  6. 互联网日报 | 3月22日 星期一 | 苹果iMac Pro全球下架;知乎更新上市招股书;字节跳动成立朝夕光年奇想基金...
  7. java时间中间加横杠方法_知识点:java一些方法会有横线?以Date 过期方法为例...
  8. mfc控件随框变化(EasySize的用法,仔细看绝对有用)
  9. 使用XAML和SharpMap渲染一幅地图
  10. vue.js 添加 fastclick的支持
  11. 算法复习周------“贪心问题之‘单源最短路径’”
  12. Ubuntu 22.04下以SOEM为EtherCAT主站的驱动电机例子
  13. 智能电视的“假聪明”与“真智慧”
  14. uboot 中Nand flash 常用操作命令解析
  15. 怎么用计算机给u盘加密文件,win10电脑怎么给U盘文件夹加密
  16. 计算机中URL是指什么 ?
  17. (java)跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
  18. 华为eNSP-ISIS理论+实验配置
  19. 作者:吴力波(1974-),女,复旦大学大数据学院教授、副院长、博士生导师...
  20. Nexus的权限管理及分配

热门文章

  1. HDCP版权保护机制
  2. R语言select()filter()subset()筛选函数
  3. 简单基于tun实现的用户态NAT64
  4. 五、pcb文件初始设置
  5. python下载kivy_下载、目录-『Python Kivy』Kivy and PyDev on Eclipse -by小雨
  6. vue 修改logo实现展示自定义的logo
  7. HDU6080(很水的计算几何+floyd)
  8. 【科技论文的写作程序及方法】
  9. Docker搭建内部知识库(Wiki)
  10. Font family [‘sans-serif‘] not found.Falling back to DejaVu Sans.解决办法