Sal*_*din 392 grub2 dual-boot windows boot-repair
我安装了 Windows 7,它吃了 Ubuntu 的启动文件。启动计算机时,它现在直接进入 Windows,而没有给我启动 Ubuntu 的选项。
我怎样才能找回 Ubuntu?
Sco*_*nce 401
当您安装 Windows 时,Windows 假定它是机器上唯一的操作系统 (OS),或者至少它不考虑 Linux。所以它用自己的引导加载程序替换了 GRUB。您需要做的是用 GRUB 替换 Windows 引导加载程序。我已经看到了通过使用 GRUB 命令或类似命令来替换 GRUB 的各种说明,但对我来说,最简单的方法是简单地chroot进入安装并运行update-grub. chroot很棒,因为它允许您进行实际安装,而不是尝试到处重定向。它真的很干净。
就是这样:
确定主分区的分区号。sudo fdisk -l,sudo blkid或的gparted(这应该已经安装,默认情况下,在实时会话)可以帮助你在这里。我将在这个答案中假设它是/dev/sda2,但请确保为您的系统使用正确的分区号!
如果你的主分区处于LVM,器件将位于/dev/mapper/,最有可能的,/dev/mapper/{volume}--{os}-root这里{volume}是LVM卷名{os}是操作系统。执行ls /dev/mapper确切的名称。
挂载你的分区:
sudo mount /dev/sda2 /mnt #Replace sda2 with the partition from step 2
Run Code Online (Sandbox Code Playgroud)
如果您有单独的/boot、/var或/usr分区,请重复步骤 2 和 3 以分别将这些分区安装到/mnt/boot、/mnt/var和/mnt/usr。例如,
sudo mount /dev/sdXW /mnt/boot
sudo mount /dev/sdXY /mnt/var
sudo mount /dev/sdXZ /mnt/usr
Run Code Online (Sandbox Code Playgroud)
用相应的分区号替换sdXW、sdXY和sdXZ。
绑定挂载一些其他必要的东西:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
Run Code Online (Sandbox Code Playgroud)如果 Ubuntu 安装在 EFI 模式下(如果您不确定,请参阅此答案),请使用sudo fdisk -l | grep -i efi或 GParted 来查找您的 EFI 分区。它将有一个标签EFI。挂载此分区,替换sdXY为您系统的实际分区号:
sudo mount /dev/sdXY /mnt/boot/efi
Run Code Online (Sandbox Code Playgroud)chroot 进入你的 Ubuntu 安装:
sudo chroot /mnt
Run Code Online (Sandbox Code Playgroud)此时,您处于安装状态,而不是实时会话中,并且以 root 身份运行。更新 grub:
update-grub
Run Code Online (Sandbox Code Playgroud)
如果您遇到错误或者如果执行第 7 步没有解决您的问题,请转到第 8 步。(否则,它是可选的。)
根据您的情况,您可能需要重新安装 grub:
grub-install /dev/sda
update-grub # In order to find and add windows to grub menu.
Run Code Online (Sandbox Code Playgroud)如果 Ubuntu 安装在 EFI 模式下,并且 EFI 分区 UUID 发生了变化,您可能需要在/etc/fstab. 比较一下:
blkid | grep -i efi
grep -i efi /etc/fstab
Run Code Online (Sandbox Code Playgroud)
如果当前 EFI 分区 UUID(来自blkid)与 中的不同,则使用当前 UUID 进行/etc/fstab更新/etc/fstab。
如果一切正常,没有错误,那么你就准备好了:
exit
sudo reboot
Run Code Online (Sandbox Code Playgroud)此时,您应该可以正常启动。
如果您无法正常启动,并且由于没有错误消息而没有执行第 8 步,请重试第 8 步。
Web*_*b-E 137
Windows 安装程序不关心系统中的其他操作系统。所以它在主引导记录上编写自己的代码。幸运的是,解决方案也很简单。
您需要修复 MBR。请执行下列操作
使用 ubuntu 的 live usb/cd 启动。使用boot-repair来解决这个问题。
使用 live usb/cd 启动后,在终端中运行以下命令:
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
Run Code Online (Sandbox Code Playgroud)
使用Recomended Repair.

更多信息 - https://help.ubuntu.com/community/Boot-Repair
Sto*_*rux 32
从实时 Ubuntu USB 随身碟或 CD启动并
按照以下步骤在 ubuntu 上安装启动修复
打开终端并运行以下命令
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair
Run Code Online (Sandbox Code Playgroud)
完成安装后,如果您使用 Gnome,您可以从 System->Administration->Boot-Repair 菜单启动它,如果您使用 Unity,则可以在 dash 中搜索“boot-repair”。然后按照以下屏幕截图操作:
方法一



按应用并重新启动系统
方法二
Ham*_*med 14
只需easyBCD在 Windows 7 中安装并执行
添加新条目 > Linux/BSD >(选择)Grub2 >(推送)添加条目
然后您可以在 Windows 7 引导加载程序上选择Ubuntu以转到Grub2(以前的引导加载程序)。
Rod*_*ith 13
在基于 EFI 的系统(例如大多数随附 Windows 8 或更高版本的系统)上,Windows 有时会更新其引导加载程序或将其重置为默认引导加载程序。这在重新安装操作系统或执行主要系统更新(例如升级到最新的 Windows 版本)时尤为常见。请注意,Windows 不太可能真正擦除基于 EFI 的计算机上的任何 GRUB 文件。启动 Ubuntu 所需的一切仍然存在;它只是被绕过。在这些情况下,完全重新安装 GRUB 是多余的,事实上,它有(很小的)机会会产生新的问题。
因此,在这些情况下,我建议将 GRUB(或任何您喜欢的引导加载程序或引导管理器)重置为默认设置,而不是重新安装 GRUB。有几种方法可以做到这一点,包括:
ubuntu容易解释——在引导选项列表中找到该条目并将其移动到列表的顶部。下次重新启动时,GRUB 应该会出现。(如果您使用的不是 GRUB,则需要找到它的条目。)bcdedit-- Windowsbcdedit工具可用于将 GRUB 设置为默认启动顺序。命令bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi,在键入管理员命令提示符窗口,将做到这一点; 但是,如果您的计算机在安全启动激活的情况下启动,bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi则将需要。事实上,即使没有使用安全启动,后一个命令通常也能工作,所以我会先使用该命令。请注意,有一个更高级的 Windows shell 工具需要的语法与我介绍的略有不同,但我不记得详细信息。ubuntu引导 Ubuntu的条目可能会显示在此引导管理器菜单中,使您能够引导至 Ubuntu。或者,您可以启动到 Ubuntu 紧急介质,例如在“安装前先试”模式下启动的安装程序。无论哪种方式,您都可以使用efibootmgr来调整引导顺序:
sudo efibootmgr以查看引导条目。BootOrder行。ubuntu并记下其Boot####编号。sudo efibootmgr -o xxxx[,yyyy,zzzz,....]以更改引导顺序,xxxx为 Ubuntu 设置编号。之后发生的事情很可能不是很重要,尽管我已经注意到,如果 Windows 不在列表中,它似乎很可能会将自己重新添加到引导顺序的开头。因此,您可能应该确保 Windows 在列表中,并且重新排序列表可能是最安全的,以便所有原始条目都在那里,只是将ubuntu条目移到列表的顶部。这些过程还有其他变体,例如bcfg在 EFI shell 中使用、bless在 macOS 中使用、使用我的rEFInd进行一次性启动等。不过,我会从 EasyUEFI 开始;这可能是最简单的解决方案。有时,Windows 会坚持在每次启动时将自己设为默认值,而且报告表明这bcdedit可能会更好地处理该问题。
请注意,上述内容均不适用于 BIOS 模式安装;但是,由于大多数装有 Windows 8 或更高版本的计算机以 EFI 模式启动,因此 BIOS 模式安装变得越来越少,因此在许多情况下,最好以 EFI 方式处理问题,而不是盲目地重新安装 GRUB。
scr*_*uss 10
现在有一个更简单的解决方案:
这已经在三星 Series 7 Chronos 笔记本电脑上进行了测试,双启动 Windows 8 和 Ubuntu 13.10,禁用安全启动,启用 UEFI 和传统启动。
引导修复对我有用。使用图形应用程序非常非常容易,您不需要使用命令行,只需单击一个按钮:)
所有可用的修复选项都在Ubuntu 文档中进行了描述,并且有一个单独的页面解释了如何启动引导修复(通过创建可引导磁盘或将其安装在现有的 Ubuntu 实时磁盘中)以及如何使用它。
只需启动 Ubuntu live CD,安装 Boot-Repair 并运行它。
当 GRUB 损坏时,用户通常无法访问系统,因此必须通过实时会话(live-CD 或 live-USB)进行修复。
导致 GRUB 中断的可能原因有很多:Windows 在 MBR 上写入、DRM 阻止 GRUB 正确安装、安装程序错误、硬件更改……按照 Scott 最初的建议更新 GRUB 通常是不够的,按照 Marco 的建议重新安装 GRUB 是效率更高,但仍有各种情况需要其他调整(向内核添加选项、取消隐藏 GRUB 菜单、更改 GRUB 选项、选择正确的主机架构......)。修复 GRUB 的其他困难是 chroot 的使用,以及正确分区 /disks 的选择。
所有这一切都在一个小的图形工具中变得容易:Boot-Repair。它应该集成在 Ubuntu 12.04 CD 中以便于使用,但是对于现在需要它的人来说,已经有一些发行版集成了它:Ubuntu-Secured-Remix(Ubuntu CD 集成了 Boot-Repair)、Boot-Repair-Disk(CD 运行 Boot - 启动时修复),...
希望这可以帮助。
Scott 和 Web-E 给出的答案已经足够好,并且多次提供帮助。但是很多时候,由于i386和amd64平台的问题或者grub找不到efi目录的问题,boot-repair工具无法修复grub 。
解决我的问题超过 10 次的是手动清除旧的 grub 安装并安装一个新的。
因此,首先执行 Scott回答中的前 6 个步骤,如果出现错误,您可以跳过第 5 步:
- 在“Try Ubuntu”模式下从 live CD 或 live USB 启动。
确定主分区的分区号。
sudo fdisk -l,sudo blkid或的gparted(这应该已经安装,默认情况下,在实时会话)可以帮助你在这里。我将在这个答案中假设它是/dev/sda2,但请确保为您的系统使用正确的分区号!如果你的主分区处于LVM,器件将位于
/dev/mapper/,最有可能的,/dev/mapper/{volume}--{os}-root这里{volume}是LVM卷名{os}是操作系统。执行ls /dev/mapper确切的名称。挂载你的分区:
Run Code Online (Sandbox Code Playgroud)sudo mount /dev/sda2 /mnt #Replace sda2 with the partition from step 2如果您有单独的
/boot、/var或/usr分区,请重复步骤 2 和 3 以分别将这些分区安装到/mnt/boot、/mnt/var和/mnt/usr。例如,Run Code Online (Sandbox Code Playgroud)sudo mount /dev/sdXW /mnt/boot sudo mount /dev/sdXY /mnt/var sudo mount /dev/sdXZ /mnt/usr用相应的分区号替换
sdXW、sdXY和sdXZ。绑定挂载一些其他必要的东西:
Run Code Online (Sandbox Code Playgroud)for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done如果 Ubuntu 安装在 EFI 模式下([如果不确定,请参阅此答案][efi]),请使用
sudo fdisk -l | grep -i efi或 GParted 来查找您的 EFI 分区。它将有一个标签EFI。挂载此分区,替换sdXY为您系统的实际分区号:Run Code Online (Sandbox Code Playgroud)sudo mount /dev/sdXY /mnt/boot/efi
chroot进入你的 Ubuntu 安装:Run Code Online (Sandbox Code Playgroud)sudo chroot /mnt
然后执行以下步骤:
sudo dpkg --configure -asudo apt install -fysudo apt purge -y grub*-common grub-common:i386 shim-signedsudo apt install -y grub-pcsdXY安装引导加载程序。使用sudo fdisk -l命令查找当前操作系统的安装位置。它将被标记为Linux。使用Tab键导航该窗口并使用键选择一个选项Space。sudo grub-update进行双重检查。如果问题仍然存在,您可以阅读Arch 的 wiki来真正了解 grub 来解决许多其他种类的问题。(是的,对 Ubuntu 也有帮助!)。
小智 5
事实证明 grub 也可以从 Windows 修复。从 CMD 运行以下命令(以管理员身份)为我恢复了 grub 菜单。
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
889686 次 |
| 最近记录: |