我已经在 20.04 和 Windows 10 之间使用双启动一段时间了,但现在我无法再启动 Windows。该选项已从启动菜单中神秘消失。我唯一做的事情就是在需要时安装 Ubuntu 更新。
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.0-58-generic
Found initrd image: /boot/initrd.img-5.4.0-58-generic
Found linux image: /boot/vmlinuz-5.4.0-52-generic
Found initrd image: /boot/initrd.img-5.4.0-52-generic
find: ‘/boot/efi/EFI/Microsoft/Boot/el-GR’: Input/output error
find: ‘/boot/efi/EFI/Microsoft/Boot/es-ES’: Input/output error
find: ‘/boot/efi/EFI/Microsoft/Boot/fi-FI’: Input/output error
find: ‘/boot/efi/EFI/Microsoft/Boot/sl-SI’: Input/output error
find: ‘/boot/efi/EFI/Microsoft/Boot/sv-SE’: Input/output error
find: ‘/boot/efi/EFI/Microsoft/Boot/uk-UA’: Input/output error
Adding boot menu entry for UEFI Firmware Settings
done
当我尝试运行启动修复时,出现以下消息:“检测到 LegacyWindows。请在 UEFI 固件中启用 BIOS 兼容性/CSM/Legacy 模式,并从实时 CD(或实时 USB)使用该软件。”
由于我已经运行双启动,因此我严重怀疑我是否需要在 BIOS 中更改任何内容。
我不想重新安装 Windows,所以在我冒险把事情搞糟之前,我想问一下你们该如何进行。
问候,克里斯蒂安
sudo parted -l 型号:ATA SanDisk SSD PLUS (scsi) 磁盘 /dev/sda:1000GB 扇区大小(逻辑/物理):512B/512B 分区表:gpt 磁盘标志:
编号 起始 结束 大小 文件系统 名称 标志
1 1049kB 556MB 555MB ntfs 基本数据分区隐藏,诊断
2 556MB 661MB 105MB fat32 EFI 系统分区启动,特别是
3 661MB 677MB 16.8MB Microsoft 保留分区 msftres
4 677MB 550GB 549GB ntfs 基本数据分区 msftdata
5 550GB 1000GB 450GB 扩展4
型号:ATA WDC WD20EARX-00P (scsi) 磁盘 /dev/sdb:2000GB 扇区大小(逻辑/物理):512B/4096B 分区表:msdos 磁盘标志:
编号 开始 结束 大小 类型 文件系统 标志 1 1049kB 2000GB 2000GB 主 ext3 启动
警告:无法以读写方式打开 /dev/sr0(只读文件系统)。/dev/sr0 已以只读方式打开。型号:ASUS BW-16D1HT (scsi)
磁盘 /dev/sr0:41.8GB 扇区大小(逻辑/物理):2048B/2048B 分区表:循环磁盘标志:
编号 开始 结束 大小 文件系统 标志 1 0.00B 41.8GB 41.8GB udf
测试 -d /sys/firmware/efi && echo efi || echo bios
电喷
答案1
在终端中找到 EFI 分区的 UUID,如下所示:-
lsblk -o name,partlabel,fstype,uuid|grep -i efi
。它显示在最后一列,您很快就会需要它。
复制你的grub配置文件来自终端的文件- sudo cp /boot/grub/grub.cfg /boot/grub/grub2.cfg
。
打开grub配置文件和sudo gedit /boot/grub/grub.cfg
。
点击 3 个垂直点(右上方面板)并选择寻找,并在框中输入菜单项‘Ubuntu’。第一个 Ubuntu 菜单项将突出显示。然后向下滚动几行,直到初始化文件...行。在此结束括号后创建一个新段落,然后添加/粘贴以下行:
menuentry 'Windows Boot Manager (on /dev/sda4)' --class windows --class os $menuentry_id_option 'osprober-efi-UUID' {
insmod part_gpt
insmod fat
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 UUID
else
search --no-floppy --fs-uuid --set=root UUID
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
注意,我把唯一唯一标识符(大写)现在需要在代码中替换之前找到的实际 UUID。它有 3 个实例。第一个(第一行)连字符后没有空格。确保最后一行代码是如图所示的右括号,然后保存文件。不要更新 grub,而是重新启动。
请注意,此 grub 条目假定您的 Win 10 启动文件未被更改或损坏,因为 ESP 中任何丢失或被污染的条目都会导致 Windows 启动错误。一旦将控制权移交给 Windows,Grub 便不再负责。
答案2
如果消失的 Windows 启动管理器选项是 NVRAM 启动选项,您可以通过 BIOS 中的添加启动选项方法将其重新添加。它可能存在于 BIOS 中的启动顺序配置页面中。只需尝试添加选项,然后找到 Windows 启动管理器(可能在 YourDrive/Microsoft/[bootmgr.efi 或 bootmgfw.efi] 中)。我的是戴尔笔记本电脑,所以我的添加启动管理器选项存在于 BIOS 启动顺序自定义页面中。您可能会在那里找到它。
我认为对于 UEFI,您需要使用 bootmgfw.efi。:)。