我安装了Windows 7,吃了Ubuntu的启动文件。现在启动计算机时,它可以直接进入Windows,而没有给我启动Ubuntu的选项。
我该如何找回Ubuntu?
我安装了Windows 7,吃了Ubuntu的启动文件。现在启动计算机时,它可以直接进入Windows,而没有给我启动Ubuntu的选项。
我该如何找回Ubuntu?
Answers:
在安装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
如果你有一个单独的/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
将sdXW
,sdXY
和sdXZ
替换为相应的分区号。
绑定安装一些其他必要的东西:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
如果Ubuntu是在EFI模式下安装的(如果不确定,请参见此答案),使用sudo fdisk -l | grep -i efi
或GParted查找您的EFI分区。的标签为EFI
。挂载此分区,替换sdXY
为系统的实际分区号:
sudo mount /dev/sdXY /mnt/boot/efi
chroot
到您的Ubuntu安装中:
sudo chroot /mnt
此时,您正在安装中,而不是实时会话,并以root用户身份运行。更新grub:
update-grub
如果出现错误,或者执行第7步仍无法解决问题,请转到第8步。(否则,它是可选的。)
根据您的情况,您可能必须重新安装grub:
grub-install /dev/sda
update-grub # In order to find and add windows to grub menu.
如果Ubuntu以EFI模式安装,并且EFI分区UUID已更改,则可能需要在中对其进行更新/etc/fstab
。比较一下:
blkid | grep -i efi
grep -i efi /etc/fstab
如果当前EFI分区UUID(来自blkid
)不同于中的/etc/fstab
,则/etc/fstab
使用当前UUID 更新。
如果一切正常且没有错误,那么您已经准备就绪:
exit
sudo reboot
此时,您应该能够正常启动。
如果您无法正常启动,并且因为没有错误消息而没有执行步骤8,请重试步骤8。
grub-efi-amd64
并且如果要使用安全启动,则要使用grub-install --uefi-secure-boot
。在superuser.com/a/376471/197980
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/Boot-Repair
从活动的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,则可以在破折号中搜索“引导修复”。然后按照以下屏幕截图:
方法一
按“应用”并重新启动系统
方法2
只需easyBCD
在Windows 7中 安装即可
添加新条目> Linux / BSD>(选择)Grub2>(推送)添加条目
然后,您可以在Windows 7引导程序上选择Ubuntu,转到Grub2(先前的引导程序)。
在基于EFI的系统上(例如Windows 8或更高版本附带的大多数系统),Windows有时会更新其引导加载程序或将其重置为默认引导加载程序。在重新安装操作系统或执行主要系统更新(例如,升级到最新的Windows版本)时,这尤其常见。请注意,Windows不太可能在基于EFI的计算机上实际擦除任何GRUB文件。引导Ubuntu所需的一切仍然存在。它只是被绕过。在这些情况下,完全重新安装GRUB是过大的,实际上,它带来(新的)很小机会(会带来新的问题)。
因此,建议您不要将GRUB(或您喜欢的任何引导加载程序或引导管理器)重置为默认值,而不是在这些情况下重新安装GRUB。有几种方法可以做到这一点,包括:
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
引导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。
efibootmgr
得以重新排序启动顺序(如Rod->谢谢!),这被win10搞砸了更新。之后,GRUB-bootmanager会像更新前一样显示,因此我可以确认所提供的解决方案对我而言是有效的。我找不到EasyUEFI的基本版本,只能找到提供的非免费专业版的试用版。
现在有一个更简单的解决方案:
这已在双启动Windows 8和Ubuntu 13.10的Samsung Series 7 Chronos笔记本电脑上进行了测试,禁用了安全启动,启用了UEFI和旧版启动。
Boot-Repair为我工作。图形应用程序非常容易使用,您无需使用命令行,只需单击一个按钮即可:)
所有可用的修复选项在Ubuntu文档中进行了描述,并且在单独的页面中说明了如何启动Boot-Repair(通过创建可引导磁盘或将其安装在现有的Ubuntu live磁盘中)以及如何使用它。
只需启动Ubuntu Live CD,安装Boot-Repair并运行它。
chroot
与安装其他工具相比,仅设置维修要快于Google的安装。
GRUB损坏时,用户通常无法访问系统,因此必须从实时会话(实时CD或实时USB)执行修复。
导致GRUB中断的原因可能有很多:Windows在MBR上编写,DRM阻止GRUB正确安装,安装程序错误,硬件更改... Scott最初提出的更新GRUB通常是不够的,而Marco提出的重新安装GRUB则是不够的。效率更高,但是仍然有很多情况需要其他调整(向内核添加选项,取消隐藏GRUB菜单,更改GRUB选项,选择正确的主机体系结构...)。修复GRUB的其他困难是使用chroot,以及选择正确的分区/磁盘。
所有这些都可以通过一个简单的图形工具轻松完成:Boot-Repair。它应该集成在Ubuntu 12.04 CD中,以便于使用,但对于现在需要它的人来说,已经有一些发行版将其集成:Ubuntu-Secured-Remix(集成了Boot-Repair的Ubuntu CD),Boot-Repair-Disk(运行Boot的CD) -启动时修复),...
希望这可以帮助。
Scott和Web-E给出的答案足够好,并且已经帮助了很多次。但是很多时候,由于与i386和amd64平台有关的问题或grub找不到efi
目录的问题,引导修复工具无法修复grub 。
解决我的问题(超过10次)的方法是手动清除旧的grub安装并安装新的grub。
因此,请先执行Scott的答案的前6个步骤,如果出现错误,则可以跳过第5步:
- 从实时CD或实时USB以“尝试Ubuntu”模式启动。
确定主分区的分区号。
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
如果你有一个单独的
/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
将
sdXW
,sdXY
和sdXZ
替换为相应的分区号。绑定安装一些其他必要的东西:
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
为系统的实际分区号:sudo mount /dev/sdXY /mnt/boot/efi
chroot
到您的Ubuntu安装中:sudo chroot /mnt
然后执行以下步骤:
sudo dpkg --configure -a
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
命令查找当前操作系统的安装位置。它将被标记为Linux
。使用Tab键浏览该窗口,然后使用键选择一个选项Space。sudo grub-update
仔细检查。如果问题仍然存在,您可以阅读Arch的Wiki,以实际了解grub可以解决许多其他问题。(是的,对于Ubuntu也有帮助!)。
Windows没有看到Linux格式化的分区。您需要使用liveCD中的gparted并创建带有引导标志的NTFS格式化主分区。
如果新的主分区位于扩展分区之后,则有些人会遇到问题,因为Windows并不总是正确地重置分区表。最好具有良好的备份和分区表的单独备份。
将分区表备份到文本文件并保存到外部设备。
sudo sfdisk -d /dev/sda > PTsda.txt
这仅适用于MBR(msdos)系统。如果您的Ubuntu安装在GPT分区驱动器中,则只能以UEFI模式安装Windows或将驱动器转换回MBR(msdos)。
只有fsck
命令grub-rescue
为我修复了屏幕。
使用启动修复从Live-CD启动,然后打开终端
获取正确的设备:
sudo fdisk -l
需要找到启动设备,该启动设备*
在“启动”类别下如下所示:
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是引导设备。
完成后重新启动。做完了
Scott Severance的答案是有效且详细的,但有一项解决方案不需要外部启动设备,因此无需识别并手动挂载所有导致该版本的Ubuntu分区chroot
。
在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,因此这已多次还原了我的主引导记录。
我有一个不同的问题,可能是由于boot-repair
擦拭/etc/grub.d/
模板引起的,在这里我的问题中对此进行了概述:Windows 10安装后,Ubuntu 18.04无法启动
如@karels注释所指出,grub配置是使用中的文件生成的/etc/grub.d
。我的目录仅包含/etc/grub.d/25_custom
,其中包含指向不存在的.efi图像的奇怪菜单项。看来我的/etc/grub.d
模板可能已被淘汰boot-repair
。
我通过以下方式解决了这个问题:
sudo mount /dev/sdxx /mnt
sudo cp /etc/grub.d/* /mnt/etc/grub.d/
sudo update-grub