Windows 8.1升级破坏了我的Ubuntu机器

我把Win 8和Ubuntu 12.04和平地共存在东芝Portege Z935上。 EFI模式,Grub2,安全启动,必须​​在启动修复工具上使用“推荐修复”,以便在安装原始Ubuntu后启动启动。 所有人都快乐大约10个月,直到….

我愚蠢地接受了MS将Windows更新为8.1的建议。 升级后,每次启动都会带我进入“grub rescue>”提示符。 能够做一个冗长的解决方法,以回到每个启动时的grub菜单,但希望它修复。

所以,我开始反复使用Boot-Repair,直到盒子根本无法启动(只需使用“使用命令文件插入磁盘”或其他一些内容获得黑屏)。

尝试重新安装Win 8,升级到8.1,然后重新安装Ubuntu。 相同的结果 – 根本不会启动。 尝试重新安装8而不升级到8.1,结果相同。 尝试安装JUST Ubuntu。 结果相同。

最后,从UEFI到CSM设置框,再次安装Ubuntu。 现在它开始了! 所以,我猜测UEFI通过上述一个或多个动作以某种方式在“固件”中被冲洗。

怎么修? 我没有想法,我想要EFI回来。 谢谢!!!

更新:我现在更新了脚本

我创建了一个脚本来帮助用户启动Windows 8.1和Linux。 我担心它不是Linux脚本,但我相信你可以在linux中做类似的事情……

此脚本将改变S:\分区中的某些内容。 您需要以管理员身份运行它。

请注意,在此示例中,我使用的是SuSE 12.1,而我在“主”HDD上使用两个单独的HDD和Windows 8.1。 这也是为HP机器设计的,但HP目录并不重要,因此您只需将“HP”更改为S:\分区中的其他目录即可。 我现在拥有的只是

S:\ EFI S:\ Boot.old

您需要下载并提取REFind,并确保将REFINDSOURCEPATH设置为它所在的位置。

除非你知道你在做什么,否则请不要这样做!

 ::Setup Refind script version 04/01 echo off CHOICE /C YN /M "Have you already attempted copy of files since last losing the boot manager? Y/N" IF %ERRORLEVEL% EQU 1 SET _FIRSTRUN=Yes IF %ERRORLEVEL% EQU 2 SET _FIRSTRUN=No echo on ::Mount partition mountvol S: /S ::Set paths ::You might want to modify these for your system? set REFINDSOURCEPATH=C:\refind-bin-0.7.4\refind set REFINDSPATH=S:\EFI\refind set SBOOTPATH=S:\EFI\Boot set REFINDCONFIG=C:\refind.conf ::Rename refind directory if it's already present rename %REFINDSPATH% refind.old ::Copy to S:\ assuming refind is located at %REFINDSOURCEPATH% IF "%_FIRSTRUN%" == "Yes" ( echo a | xcopy /E %REFINDSOURCEPATH% %REFINDSPATH% ) IF "%_FIRSTRUN%" == "No" ( echo d | xcopy /E %REFINDSOURCEPATH% %REFINDSPATH% ) ::Rename old boot HP files - we don't need the HP directory! rename S:\EFI\HP HP.old ::Rename boot directory - we will recreate this ourselves below rename %SBOOTPATH% Boot.old ::Stop this file from being detected/set as default boot - this can still be detected by Windows otherwise. rename S:\EFI\Boot.old\bootx64.efi bootx64.efi.old ::Recreate the boot directory mkdir %SBOOTPATH% ::Put refind into the boot directory IF "%_FIRSTRUN%" == "Yes" ( echo a | xcopy /E %REFINDSOURCEPATH% %SBOOTPATH% ) IF "%_FIRSTRUN%" == "No" ( echo d | xcopy /E %REFINDSOURCEPATH% %SBOOTPATH% ) ::Rename/overwrite the file so it will always boot refind rename %SBOOTPATH%\refind_x64.efi bootx64.efi ::This is a dirty hack to stop Microsoft finding their EFI file and setting as default boot IF "%_FIRSTRUN%" == "Yes" ( copy S:\EFI\Microsoft\boot\bootmgfw.efi S:\EFI\Microsoft\boot\bootmgfw.efiold rename S:\EFI\Microsoft\boot\bootmgfw.efi bootmgfw_.efi ) ::This is a dirty hack to stop Microsoft finding their EFI file and setting as default boot IF "%_FIRSTRUN%" == "No" ( ::I'm assuming we don't have to do anything different at this point. Error may be thrown but should not cause issues. copy S:\EFI\Microsoft\boot\bootmgfw.efi S:\EFI\Microsoft\boot\bootmgfw.efiold rename S:\EFI\Microsoft\boot\bootmgfw.efi bootmgfw_.efi ) ::Copy the config file. copy /Y %REFINDCONFIG% %REFINDSPATH%\refind.conf ::Set the boot manager (doesn't always work) bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi echo off pause CHOICE /C YN /M "Press Y to destroy the S:\EFI\Boot.old directory" IF %ERRORLEVEL% EQU 1 SET _BOOT=Yes CHOICE /C YN /M "Press Y to destroy the S:\EFI\refind.old directory" IF %ERRORLEVEL% EQU 1 SET SET _REFIND=Yes CHOICE /C YN /M "Press Y to destroy the S:\EFI\HP.old directory" IF %ERRORLEVEL% EQU 1 SET _HP=Yes IF "%_BOOT%" == "Yes" ( ::Remove the path below rmdir /s S:\EFI\Boot.old echo "Removing path" ) IF "%_REFIND%" == "Yes" ( ::Remove the path below rmdir /s S:\EFI\refind.old echo "Removing path" ) IF "%_HP%" == "Yes" ( ::Remove the path below rmdir /s S:\EFI\HP.old echo "Removing path" ) pause echo "Pressing a key will restart immediately" pause ::Restart shutdown /r /t 0 

启用EFI时会收到警告消息,因此如果启用了EFI,则只需从配置文件中删除“hdbios”一词即可。

另一个重要的部分是你的配置文件。 你可以看到我的位于C:\ refind.conf – 这可能不是最明智的地方,但至少你知道如果你误删了别的东西它就不会被删除。

我的如下,但我建议你按照上面的文档正确配置你的。 您可以看到我在配置文件中使用重命名的EFI / Microsoft / boot / bootmgfw_.efi。

 timeout 20 hideui singleuser #hideui all #icons_dir myicons use_graphics_for windows showtools reboot, exit scanfor internal,external,optical,hdbios,manual dont_scan_volumes ROOT BOOT dont_scan_dirs EFI/Boot, Boot #scan_all_linux_kernels #also_scan_dirs EFI/Microsoft/boot, Microsoft/boot menuentry Windows8 { loader EFI/Microsoft/boot/bootmgfw_.efi icon EFI/refind/icons/os_win.icns } menuentry SuSE { icon EFI/refind/icons/os_linux.icns volume BOOT loader \vmlinuz initrd \initrd options "video=1600x900 splash=silent quiet showopts vga=0x37f root=UUID=201bb438-10b4-49aa-ac1c-4c7d52ad66a0 splash=silent quiet showopts" } menuentry SuSERoot { icon EFI/refind/icons/os_linux.icns volume ROOT loader /boot/vmlinuz-3.4.11-2.16-desktop initrd /boot/initrd-3.4.11-2.16-desktop options "video=1600x900 splash=silent quiet showopts vga=0x37f root=UUID=201bb438-10b4-49aa-ac1c-4c7d52ad66a0 splash=silent quiet showopts" disabled } 

试试这个:

  1. 下载rEFInd的USB闪存盘或CD-R版本。
  2. 使用rEFInd准备USB闪存盘或CD-R。
  3. 从rEFInd磁盘启动。 (您可能需要禁用CSM支持才能执行此操作。)
  4. 如果出现rEFInd,请测试它启动Windows和Linux的能力。
  5. 如果您可以启动Windows和Linux,请检查以确保您的EFI系统分区(ESP)已安装在/boot/efi并安装Debian-package版本的rEFInd。

从理论上讲,此时您的计算机应该启动到rEFInd,这应该可以启动Windows或Linux。 如果这不起作用,则发布Boot Repair提供的URL; 它将为我们提供关键的系统特定信息。

将来,请注意操作系统升级通常会更改默认的EFI引导加载程序。 您可以使用特定于操作系统的工具在每个操作系统中更改此设置,例如Windows中的bcdedit或Linux中的efibootmgr ; 但你必须知道如何使用这些工具。 rEFInd安装文档描述了如何使用这些工具注册rEFInd。 其他引导加载程序的过程类似。

先试试吧

在Win 8.1中,在单击“重新启动”时按住SHIFT键。 它将调出高级启动选项。 您应该能够从那里选择您的Ubuntu启动分区,然后启动它。

省去了重新安装的麻烦,但你必须要求Windows加载Ubuntu …