我安装了Windows 7,吃了Ubuntu的启动文件。启动计算机时,它现在可以直接进入Windows,而没有给我启动Ubuntu的选项。

如何重新获得Ubuntu?

评论

我认为这是一项常见的任务,我也有两个硬盘和Ubuntu + Windows。我希望您能以正确的方式进行维修。尝试遵循本教程。有任何问题,问我!

相关(将GRUB安装到错误的驱动器的MBR时):安装ubuntu后的Grub抢救问题

是的,您可以,只需执行常规启动并使用Windows进行安装,然后它将在计算机启动时显示在Grub引导菜单中。

我知道这是一个旧线程,但是我通过将BIOS中的启动模式从UEFI更改为Legacy来解决了这个问题。

注意:可接受的答案是有关如何修复grub的一般说明。当安装程序错误地编写GRUB时(广泛存在),它也适用于多种情况。

#1 楼

当您安装Windows时,Windows会假定它是计算机上唯一的操作系统(OS),或者至少不考虑Linux。因此,它将GRUB替换为自己的引导加载程序。您要做的是用GRUB替换Windows引导加载程序。我已经看到了各种通过GRUB命令或类似方法来替换GRUB的说明,但是对我来说,最简单的方法是简单地将chroot放入安装并运行update-grubchroot很棒,因为它允许您进行实际的安装,而不是尝试在此处和此处进行重定向。真的很干净。

方法如下:


从实时CD或实时USB以“尝试Ubuntu”模式启动。

确定主分区的分区号。 sudo fdisk -lsudo blkid或GParted(默认情况下应在实时会话中已安装)可以在这里为您提供帮助。我将在此答案中假设它是/dev/sda2,但请确保您为系统使用正确的分区号!

如果主分区位于LVM中,则设备将位于/dev/mapper/,最有可能是/dev/mapper/{volume}--{os}-root,其中{volume}是LVM卷名,而{os}是操作系统。执行ls /dev/mapper作为确切名称。


安装分区:分区,重复步骤2和3.将这些分区分别安装到/boot/var/usr。例如,

sudo mount /dev/sda2 /mnt  #Replace sda2 with the partition from step 2


用相应的分区号替换/mnt/boot/mnt/var/mnt/usr


绑定其他一些必需内容:

sudo mount /dev/sdXW /mnt/boot
sudo mount /dev/sdXY /mnt/var
sudo mount /dev/sdXZ /mnt/usr



如果Ubuntu以EFI模式安装(不确定,请参见此答案),请使用sdXW或GParted查找EFI分区。它将带有sdXY的标签。挂载此分区,将sdXZ替换为系统的实际分区号:

for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done



sudo fdisk -l | grep -i efi进入Ubuntu安装:

sudo mount /dev/sdXY /mnt/boot/efi



此时,您重新安装,而不是实时会话,并以root身份运行。更新grub:

sudo chroot /mnt


如果遇到错误,或者执行第7步不能解决问题,请转至第8步。(否则,它是可选的。 )


根据您的情况,您可能必须重新安装grub:

update-grub



如果安装了Ubuntu在EFI模式下,并且EFI分区UUID已更改,您可能需要在EFI中对其进行更新。比较一下:

grub-install /dev/sda
update-grub # In order to find and add windows to grub menu.


如果当前EFI分区UUID(来自sdXY)不同于chroot中的分区,请使用当前UUID更新/etc/fstab


如果一切正常且没有错误,则说明一切就绪:

blkid | grep -i efi
grep -i efi /etc/fstab


此时,您应该能够正常启动。

如果无法正常启动,并且因为没有错误消息而没有执行第8步,请尝试执行第8步。分区是不够的,您必须实际将其安装(或重新安装)到主引导记录中,步骤8会这样做。帮助用户聊天的经验表明,即使没有显示错误消息,有时第8步也是必要的。


评论


评论不作进一步讨论;此对话已移至聊天。

–托马斯·沃德♦
17年4月7日在0:43

我仍然希望Windows成为我的主要引导操作系统。这仍然是正确的解决方法吗?如何选择要引导到的操作系统? F11?

–杰夫
17年7月28日在16:34

我从您的个人资料中看到@ScottSeverance,您居住在DFW。您是否考虑过开设课程或实时教程来使人们更深入地了解Linux?

–穆罕默德·约拉德(Mohammed Joraid)
17年9月26日在1:06

这些问题不会变老:D –不是,在处理EFI时,您可能需要安装grub-efi-amd64,如果使用安全启动,则需要使用grub-install --uefi-secure-boot 。在superuser.com/a/376471/197980中也有详细介绍

–拉斐尔
17年12月1日在1:12



此解决方案也适用于具有BIOS(即非UEFI)的计算机上的Windows 10。有关您拥有哪一个的问题,可以通过此技巧解答-thewindowsclub.com/check-if-uefi-or-bios。

– okolnost
18-6-27在4:20



#2 楼

Windows安装程序不关心系统中的其他操作系统。因此,它会在主引导记录上写入自己的代码。幸运的是,解决方案也很容易。

您需要修理MBR。使用ubuntu的实时usb / cd进行以下

引导。
使用boot-repair修复问题。

使用实时USB / cd引导后,在终端中运行以下命令:

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair


使用Recomended Repair



更多信息-https://help.ubuntu.com/community/引导修复

评论


您的意思是说它是由Microsoft员工故意设计的?同样,双重引导确实可以在Windows 7上使用,因此它与您的第一行“ Windows安装程序不在乎系统中的其他操作系统”相矛盾。

– Shagun Sodhani
2012年9月1日7:04



Windows一直困扰着它,这是一个非常普遍的问题,我必须自己解决。答案仍然很好,应该可以解决问题。

–达明
2012年9月1日于7:18

您先安装了Windows 7,然后安装了Linux。因此linux识别Windows,而不是Windows识别linux。尝试重新安装Windows7,您将明白我的意思。

– Web-E
2012年9月1日于7:26

加密分区(luk)时不要执行此操作,否则会搞砸。它还使用apt-get重新安装GRUB-不知道为什么这样做。

–孟田
2014年1月5日在16:14



引导修复很好地支持传统模式,也许您需要以传统模式启动实时cd / usb以及@fuzzyanalysis :)

– Web-E
2015年1月1日14:08

#3 楼

从活动的Ubuntu USB Pendrive或CD引导
,并按照以下步骤在ubuntu上安装Boot-Repair:打开终端并运行以下命令

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair

/>
完成安装后,如果使用Gnome,则可以从系统->管理->引导修复菜单启动它;如果使用Unity,则可以在破折号中搜索“引导修复”。然后按照以下屏幕截图:

方法1


单击高级选项







将选项卡更改为Grub Location选项卡,然后勾选图中显示的选项



按Apply(应用)并重新启动系统

方法2


选择推荐的Boot修复选项,如第一个屏幕截图

文档:

评论


Web-E已经给出了这个答案。也许改为改善那个?我对为什么它不起作用发表了评论。

– Dan Dascalescu
16年2月2日在16:59

在Windows 10更新特别令人讨厌的情况下,此方法为我工作,它覆盖了GRUB,然后破坏了自己的启动加载程序。遵循此过程即可恢复Windows和Linux。在我的情况下,它是Linux Mint 18.1,引导修复菜单看起来略有不同,但是一切正常。谢谢!

–TheBigH
17年5月28日在22:53

#4 楼

只需在Windows 7中安装easyBCD并执行

添加新条目> Linux / BSD>(选择)Grub2>(推送)添加条目

然后您就可以在Windows上选择Ubuntu 7引导程序转到Grub2(先前的引导程序)。

评论


仅凭这些说明并不能还原Grub Bootloader-当我尝试使用它们时,它们在Windows中添加了一个额外的启动选项,可以选择该选项,重新启动计算机,然后将我带到grub>提示符。因此,对于下一步该如何做,还需要采取进一步的措施。

–therobyouknow
2014年6月15日20:46

easyBCD允许我添加和删除在Windows Boot Loader和BIOS中都可以看到的引导选项,但是它们从未起作用,因为easyBCD依靠某种自动魔术来查找Linux分区...当我的Linux分区不起作用时,在单独的硬盘上。

–模糊分析
2014年12月30日在12:14

#5 楼

在基于EFI的系统上(例如Windows 8或更高版本附带的大多数系统),Windows有时会更新其引导加载程序或将其重置为默认引导加载程序。在重新安装操作系统或执行主要系统更新(例如,升级到最新的Windows版本)时,这尤其常见。请注意,Windows不太可能在基于EFI的计算机上实际擦除任何GRUB文件。引导Ubuntu所需的一切仍然存在。它只是被绕过。在这种情况下,完全重新安装GRUB是过大的,实际上,它会带来(新的)很小的机会,它会引起新的问题。

因此,在这种情况下,无需重新安装GRUB ,建议将GRUB(或您喜欢的任何引导加载程序或引导管理器)重置为默认值。有几种方法可以做到这一点,包括:



EasyUEFI-调整引导顺序的最简单方法(如果系统直接引导到Windows)是使用EasyUEFI,它是用于管理EFI引导顺序的免费(对于基本版本)第三方GUI工具。这很容易解释-在启动选项列表中找到ubuntu条目,并将其移到列表顶部。下次重新启动时,应该会出现GRUB。 (如果使用GRUB以外的其他东西,则需要找到它的条目。)

bcdedit-Windows bcdedit工具可用于将GRUB设置为默认启动顺序。在管理员命令提示符窗口中键入的命令bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi将执行此操作。但是,如果您的计算机在启用安全启动的情况下启动,则将需要bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi。实际上,即使不使用安全启动,后者命令通常也可以使用,因此我将首先使用该命令。请注意,有一个更高级的Windows Shell工具,它需要的语法与我介绍的语法略有不同,但是我不记得详细信息了。

一次性启动到Ubuntu-大多数EFI提供内置的启动管理器,可以在系统启动过程的早期通过按功能键Esc或Enter进行访问。可能会在该启动管理器菜单中显示启动Ubuntu的ubuntu条目,使您能够启动到Ubuntu。另外,您可以引导至Ubuntu紧急介质,例如以“安装前尝试”模式引导的安装程序。无论哪种方式,您都可以使用efibootmgr来调整启动顺序:


键入sudo efibootmgr以查看启动项。输入BootOrder并记下其ubuntu号。
键入Boot####更改引导顺序,使sudo efibootmgr -o xxxx[,yyyy,zzzz,....]成为Ubuntu的编号。尽管我已经指出Windows似乎有可能将自己重新添加到引导顺序的开头,但是之后的情况似乎并不是很重要。因此,您可能应该确保Windows在列表中,并且重新排序列表以使所有原始条目都在那里是最安全的,只是将xxxx条目移到列表顶部。



固件设置实用程序-一些EFI的设置实用程序使您可以调整引导顺序。一个EFI到另一个EFI的详细信息差异很大,因此我不再赘述,但是您可以在设置实用程序中寻找这样的选项。

这些过程还有其他变体,例如使用在EFI Shell中使用ubuntu,在macOS中使用bcfg,使用我的rEFInd进行一次性启动,等等。不过,我将从EasyUEFI开始;这可能是最简单的解决方案。不过,有时Windows每次启动时都会坚持将其自身设置为默认值,并且报告表明bless可能在处理该问题方面做得更好。

请注意,以上所有内容均不适用于BIOS模式的安装;但是,随着大多数装有Windows 8或更高版本的计算机以EFI模式启动,BIOS模式的安装变得越来越少,因此,在许多情况下,最好以EFI方式处理该问题,而不是盲目地重新安装GRUB。

评论


通过EFI内置的启动管理器手动一次启动进入linux(在我的情况下为fedora28),这使我能够使用efibootmgr重新排序启动顺序(如Rod所描述的->谢谢!)。 win10更新。之后,GRUB-bootmanager会像更新前一样显示,因此我可以确认所提供的解决方案对我而言是有效的。我找不到EasyUEFI的基本版本,只能找到提供的非免费专业版的试用版。

–antiplex
18年8月22日在8:31



#6 楼

现在有一个更简单的解决方案:


重新启动,然后输入计算机的BIOS选项(F2,有时甚至是F11)。
进入“启动”菜单,然后选择“启动设备优先级”。

检查Windows Boot Manager是否在主引导驱动器(通常是SATA HDD或IDE HDD…)上方。如果是这样,请将引导磁盘优先级移到Windows Boot Manager之上。
保存BIOS选项,然后退出(通常为F10)。

此功能已在Samsung Series 7 Chronos上进行了测试。笔记本电脑双重启动Windows 8和Ubuntu 13.10,禁用安全启动,启用UEFI和旧式启动。

评论


最终这对我来说是最干净的选择。还有一些关键操作,但是,嘿,行得通。我混合使用旧版和UEFI引导的设备。如果用户要启动的操作系统要比其他操作系统要多得多,那么从长远来看,这样做可能会更快(更安全)。

–模糊分析
2014年12月30日12:21

Windows 10自动更新后,这对我也可行。

–luis_js
18年3月19日在6:31

当我从Windows 10删除Ubuntu时,此解决方案对我有用。

– Vikas Gupta
18年3月31日在17:31

如何从Windows 10到Ubuntu?

– Hamendra Sunthwal
20-11-28在10:59

#7 楼

Boot-Repair为我工作。图形应用程序非常易于使用,无需使用命令行,只需单击一个按钮即可:)

Ubuntu文档中介绍了所有可用的修复选项,其中包括一个单独的页面,说明如何启动引导修复(通过创建可引导磁盘或将其安装在现有的Ubuntu活动磁盘中)以及如何使用它。

只需引导Ubuntu活动CD,安装Boot-修复并运行。

评论


不过,如果有一种更简单的方法来进行Boot Repair,那就太好了。设置chroot修复比安装其他工具快得多。

–斯科特遣散费
2011-12-18在1:51

#8 楼

当GRUB损坏时,用户通常无法访问系统,因此必须从实时会话(实时CD或实时USB)执行修复。

有很多可能的原因导致故障。 GRUB中断:Windows在MBR上编写,DRM阻止GRUB正确安装,安装程序错误,硬件更改...
按照Scott最初的建议更新GRUB通常是不够的,按照Marco的建议重新安装GRUB效率更高,但是仍然有各种情况需要其他调整(向内核添加选项,取消隐藏GRUB菜单,更改GRUB选项,选择正确的主机体系结构...)。
修复GRUB的其他困难是使用chroot,并且选择正确的分区/磁盘。

所有这些都已通过一个简单的图形工具轻松完成:引导修复。它
应集成在Ubuntu 12.04 CD中,以便于使用,但对于现在需要它的人,已经有一些发行版对其进行了集成:Ubuntu-Secured-Remix(集成了Boot-Repair的Ubuntu CD),Boot-Repair-Disk (CD在启动时运行Boot-Repair),...

希望有帮助。

#9 楼

Scott和Web-E给出的答案足够好,并且已经帮助了很多次。但是很多时候,由于与i386和amd64平台有关的问题或grub找不到efi目录的问题,引导修复工具无法修复grub。
解决了我的问题超过10次的原因是要手动清除旧的grub安装并安装新的grub。因此,请首先执行Scott回答中的前6个步骤,如果出现错误,则可以跳过第5步:



以“尝试Ubuntu”模式从实时CD或实时USB引导。

确定主分区的分区号。 sudo fdisk -lsudo blkid或GParted(默认情况下应在实时会话中已安装)可以在这里为您提供帮助。我将在此答案中假设它为/dev/sda2,但请确保您为系统使用正确的分区号!

如果您的主分区位于LVM中,则设备将位于/dev/mapper/中,很可能位于
/dev/mapper/{volume}--{os}-root中,其中{volume}是LVM卷的名称,而{os}是操作系统。为确切的名称执行
ls /dev/mapper


安装分区: ,/boot/var分区,重复步骤2和3,将这些分区分别安装到/usr/mnt/boot/mnt/var。例如,

sudo mount /dev/sda2 /mnt  #Replace sda2 with the partition from step 2


用相应的分区号替换/mnt/usrsdXWsdXY


绑定其他一些必要的附件内容:

sudo mount /dev/sdXW /mnt/boot
sudo mount /dev/sdXY /mnt/var
sudo mount /dev/sdXZ /mnt/usr



如果Ubuntu以EFI模式安装([不确定时请参见此答案] [efi]),请使用sdXZ或GParted查找
您的EFI分区。它将带有sudo fdisk -l | grep -i efi的标签。挂载此
分区,用您的
系统的实际分区号替换EFI

for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done



sdXY到Ubuntu安装中:

sudo mount /dev/sdXY /mnt/boot/efi






然后执行这些步骤:


配置所有挂起的程序包。 chroot

修复损坏的包装。 sudo dpkg --configure -a

删除当前的grub。 sudo apt install -fy
这可能会警告您设备将没有引导程序,并且下次可能无法引导。继续并接受它。

sudo apt purge -y grub*-common grub-common:i386 shim-signed
运行此命令后,它将要求您指出当前的sudo apt install -y grub-pc以安装引导程序。使用sdXY命令查找当前操作系统的安装位置。它将被标记为sudo fdisk -l。使用Tab键浏览该窗口,然后使用Space键选择一个选项。
如果一切正常,将正确安装grub。您也可以对Linux进行仔细检查。

如果问题仍然存在,则可以阅读Arch的Wiki来真正了解grub可以解决许多其他问题。 (是的,对于Ubuntu也有帮助!)。

#10 楼

Scott Severance的答案是有效且详细的,但有一项解决方案不需要外部启动设备,因此无需识别并手动挂载所有导致chroot的Ubuntu分区。

在Windows 10中,您可以使用Advanced Recovery选择要启动的设备(分区?)。

转到Settings并选择Update & Security



转到Recovery



Advanced Startup选择Restart Now



然后选择Use a Device,所有启动选项应为呈现给您。选择“ ubuntu”分区,然后您的PC应该从该分区启动。

一旦启动到我通常的Ubuntu环境中,我就尝试只运行grub-update,但这没有任何改变。

然后我发现我的/boot/efi分区是/dev/nvme0n1p1并先运行sudo grub-install /dev/nvme0n1p1然后运行sudo update-grub

由于似乎有新的Windows 10策略覆盖了启动信息,因此,它已经多次还原了我的主启动记录。进行较小的更新。

评论


我很困惑。您提到了MBR和UEFI:安装中使用了哪一个?我使用UEFI是因为它否则可能不会显示Linux引导选项。但是,它甚至不需要触摸MBR。如果在您的Ubuntu分区而不是MBR上安装了Grub2,可能也只能工作。

– DanMan
20 Jan 1 '20 at 2:24



对不起这是我的错。我使用的是MBR,我的意思是一般启动信息。我已经从说明中删除了MBR。

–timbo
20 Mar 29 '20在22:16

#11 楼

Windows没有看到Linux格式化的分区。您需要使用liveCD上的gparted并创建带有引导标志的NTFS格式的主分区。

如果新的主分区位于扩展分区之后,则有些问题,因为Windows并不总是重置分区表正确地。最好具有良好的备份和分区表的单独备份。

将分区表备份到文本文件并保存到外部设备。

sudo sfdisk -d /dev/sda > PTsda.txt


这仅适用于MBR(msdos)系统。如果您的Ubuntu安装在GPT分区驱动器中,则您只能以UEFI模式安装Windows或将驱动器转换回MBR(msdos)。

评论


与16.04或更高版本中的gpt分区驱动器一起使用的新版本sfdisk和fdisk也将使用上述命令备份gpt分区驱动器。 oldfred不记得他昨晚吃晚饭吃的东西,因此不确定他在2013年发布的内容。:)

–oldfred
17-4-7在13:40



嗨,弗雷德,当我昨晚做饭忘了晚餐时,真是一种祝福。我们删除了之前的评论。

–WinEunuuchs2Unix
17年4月7日在14:49

#12 楼

fsck命令为我修复了grub-rescue屏幕。

使用Boot-Repair从Live-CD引导,然后打开Terminal

获取正确的设备:

sudo fdisk -l


需要找到引导设备,该引导设备在Boot类别下具有*,如下所示:

Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1          2048   2000895   1998848  976M 82 Linux swap / Solaris
/dev/sda2  *    2000896 943716351 941715456  449G 83 Linux

使用以下磁盘:

sudo fsck /dev/sda2 -y


注意:/ dev / sda2是此示例中的引导设备。

完成后重新引导。完成。

#13 楼

我有一个不同的问题,可能是由boot-repair擦拭我的/etc/grub.d/模板引起的,在这里我的问题中对此进行了概述:Windows 10安装后,Ubuntu 18.04无法启动

如@karels注释所指出,使用/etc/grub.d中的文件生成。我的目录仅包含/etc/grub.d/25_custom,其中包含指向不存在的.efi图像的奇怪菜单项。看来我的/etc/grub.d模板可能被boot-repair压缩了。

我通过以下方法解决了此问题:


用Live CD引导(对于使用相同的Ubuntu版本可能很重要)
sudo mount /dev/sdxx /mnt
sudo cp /etc/grub.d/* /mnt/etc/grub.d/
sudo update-grub
48小时疼痛后重新启动并放松


#14 楼

事实证明,grub也可以从Windows修复。从CMD运行以下命令(以管理员身份)为我带来了grub菜单。
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi