我在尝试将Ubuntu作为计算机唯一的操作系统安装时,遇到了“grub-install /dev/sda失败”的错误。

我正在尝试在之前运行Windows 7的计算机上安装Ubuntu。
我也遇到了可怕的“无法安装GRUB”错误。
我并不打算进行双启动。我之前运行了一个Windows引导盘,并删除了所有现有分区。
如果我运行Ubuntu 12.04安装光盘,在配置屏幕后点击安装,我会得到错误消息:执行'grub-install /dev/sda'失败。这是一个致命错误。
(与此问题相同:无法安装GRUB
我在寻找解决方案时阅读的所有问题都与双启动有关。我对双启动不感兴趣,我只想进行干净的Ubuntu安装。我该如何实现这一点?
(为了我的理智,请在回复时使用非常简单的说明。我不自称具备Linux或系统管理员的才能)

从评论中复制的附加细节:日期为2012-05-29 ~15:19Z

从光盘启动后,点击尝试Ubuntu,然后输入sudo fdisk /dev/sda,我得到以下结果:
fdisk: 无法在/dev/sda上进行搜索:无效的参数

sudo fdisk /dev/sdb给出的结果是:

Device contains neither a valid DOS partiion table, nor Sun, SGI or OSF disklabel. 
Building a new DOS disklabel with disk identifier 0x15228d1d. 
Changes will remain in memory only until you decide to write them. 
After that of course, the previous content won't be recoverable. 
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite). 
Command (m for help):

我应该补充一下,Live CD的桌面图形效果很差。我发现有些程序的部分内容丢失了,而且终端有时会反映到屏幕底部。但我无法想象这与此有关。

你收到了什么错误? - harisibrahimkv
@harisibrahimkv "执行 'grub-install/dev/sda' 时出现致命错误 - 与 http://askubuntu.com/questions/62051/unable-to-install-grub 中的相同错误。但我的不是双启动,我正在使用详细分区。 - Liath
你可能正在遇到这个错误 https://bugs.launchpad.net/ubuntu/+source/grub-installer/+bug/976027 - Enkouyami
当我使用安装光盘上的第一个选项时,我也遇到了类似的问题。它说会管理分区和安装等操作,但却显示致命错误。当我选择手动(最后一个选项)时,它就能正常工作。我使用分区工具对硬盘进行了分区,然后通过选择手动安装来使用光盘。这样就不会出现问题了。 - Satya Prakash
请点击这个链接。我曾经遇到和你一样的问题,并且解决了它。http://superuser.com/questions/1101648/grub2-failed-to-install-into-target/1103187#1103187 我真心希望这能帮到你。 - user572391
当我尝试在VirtualBox上安装Ubuntu 17.04时,我遇到了同样的问题。我通过重新创建一个带有新虚拟硬盘的VM来解决它。 - Eng.Fouad
5个回答

我遇到了同样的问题。

通过首先点击'尝试Ubuntu'按钮,然后再点击'安装Ubuntu'桌面快捷方式解决了它。


在/dev/sdb的SSD上,我使用一个USB驱动器安装了16.04。刚开始失败了,但在完全从驱动器中启动到“尝试Ubuntu”模式并使用桌面快捷方式后成功了。 - womp
我很好奇,但为什么这个有效呢?有人知道吗? - Aaron Esau
3我尝试了这种方法,但仍然得到了相同的错误。 - Mark E. Haase
对我来说很有效 - 使用Etcher创建的USB安装成功。 - Wanny Miarelli

我觉得可能搞乱了你的硬盘名称。尝试重新安装GRUB。

  1. 使用Ubuntu的Live CD启动计算机。

  2. 打开终端并运行以下命令:

    sudo fdisk -l
    

    该命令会列出硬盘的完整分区表。在其中,找到你安装Linux的分区。你可以通过已分配给它的驱动器大小以及输出的最后一列来确定。对于所有的Linux分区,最后一列通常是“扩展”。该分区很可能是类似于/dev/sda5的内容。请记住这个分区。

  3. 在你的主目录中创建一个临时文件夹(注意:你可以在任何地方创建临时文件夹。我只是为了解释方便而使用主目录)。我现在称之为“temp”。因此,“temp”文件夹的路径将是/home/ubuntu/temp。

  4. 将你的Linux分区挂载到该文件夹上。也就是说,假设你找到的Linux分区是/dev/sda5,你可以通过执行以下命令将其挂载到“temp”文件夹:

    sudo mount /dev/sda5 /home/ubuntu/temp
    
  5. 如果你想检查是否已经正确挂载了分区,请转到你的主目录并打开temp文件夹。你将进入/目录。在那里,你会找到“home”,其中包含你的主文件夹的名称。确认已经正确挂载了分区后,进行第6步。

  6. 你需要安装grub,以便系统知道从硬盘的哪个位置读取数据。不用担心,只需运行以下命令:

    sudo grub-install --root-directory=/home/ubuntu/temp /dev/sda
    

    /dev/sda对应你的硬盘名称。将其替换为sudo fdisk -l命令显示的内容。

  7. 完成!你可以重新启动系统。


非常感谢你迄今为止的帮助!我已经从光盘启动并点击了“尝试Ubuntu”,然后在执行fdisk命令时出现了“fdisk: 无法在/dev/sda上进行寻址:无效的参数”错误提示。 - Liath
1试试运行命令“sudo fdisk /dev/sda”或者“sudo fdisk /dev/sdb”。另外,在安装Ubuntu时,您是否连接了外部USB设备? - harisibrahimkv
/dev/sda给出了与上述相同的结果(无法寻找),/dev/sdb则显示“设备既不包含有效的DOS分区表,也不包含Sun、SGI或OSF磁盘标签。正在构建一个带有磁盘标识符0x15228d1d的新的DOS磁盘标签。更改将仅在内存中保留,直到您决定将它们写入。之后,先前的内容将无法恢复。警告:分区表4的无效标志0x0000将通过w(rite)进行修正。命令(m获取帮助):” - Liath
我应该补充一下,试用版的图形效果很差,程序的某些部分丢失了,终端有时会反映到屏幕底部...虽然我无法想象这是否有关联。 - Liath
1我觉得我的选择越来越少了。你的try-ubuntu里有Gparted吗?那就启动它,看看它对你的硬盘有什么说法。 - harisibrahimkv
我看不到它 - 我怀疑这可能与我的旧硬件、我的经验不足和新版本有关!谢谢你的帮助! - Liath
@harisibrahimkv 看起来你的回答中有一些技术错误。如果只安装了Ubuntu操作系统,安装分区不会是扩展分区。此外,当前版本的grub-install命令不再使用--root-directory选项,而是被--boot-directory选项所取代。请参考Grub用户手册的第19节 - irrational John
@harisibrahimkv 我建议将Ubuntu安装分区的根目录挂载为/mnt的子目录,而不是/home/ubuntu。这样更清楚地表明该目录是一个已挂载的文件系统,并且不是LiveCD文件系统的一部分。 - irrational John
fdisk命令只能列出MBR分区,而无法列出GPT分区。 - Babbzzz
尝试使用安装程序的手动分区选项,并根据此答案中的建议选择 grub 安装。 - stanga

从您对@harisibrahimkv的评论中,我了解到当您在终端窗口中运行命令sudo fdisk /dev/sda时,会收到消息fdisk: unable to seek on /dev/sda: Invalid argument。我不希望看到这个消息,这让我怀疑您的计算机硬盘是否有问题。
请您提供更多关于您硬件的信息吗?您可以通过使用安装CD启动到尝试Ubuntu,然后将下面两个命令的输出添加到您的问题中。
sudo lshw -short
sudo lshw -class disk -class storage

注意: 您可以使用鼠标左键或按下Alt+E来选择终端窗口中的文本,同时在终端的Edit菜单中选择Select All选项。
选择文本后,可以使用键盘快捷键ShiftCtrl+C或终端窗口的Edit菜单中的Copy选项将其复制到剪贴板。
然后,您可以使用LiveCD的Firefox浏览器进行编辑,并将命令输出粘贴到浏览器中的问题编辑窗口中。
请勿使用评论来添加命令的输出。评论不适用于此目的。
如果您遇到图形问题,我建议您首先验证安装介质(CD)是否正常。您可以通过从Ubuntu CD高级欢迎页面选项运行“检查磁盘缺陷”菜单选项来进行验证。
要显示此菜单,请在启动安装CD后按任意键,并在屏幕底部显示Ubuntu“小徽标”Ubuntu Live CD/USB 'small logo'时按下。
如果您的安装CD有效,因此不是导致您看到图形错误的原因,那么您可能想尝试使用Ubuntu备用安装CD进行安装。备用安装CD不是“LiveCD”。它执行基于文本的安装,避免了与图形驱动程序可能相关的问题。它还包含一些在标准LiveCD中缺失的硬件驱动程序。
你可以从Ubuntu 12.04 LTS releases页面获取备用安装CD ISO镜像。如果你的硬件比较旧,那么你可能想使用32位版本,ubuntu-12.04-alternate-i386.iso

我也倾向于检查你从中创建光盘的下载文件的md5sum - 实际上,我总是检查哈希值 - https://help.ubuntu.com/community/HowToMD5SUM 和 https://help.ubuntu.com/community/UbuntuHashes - 23 93 26 35 19 57 3 89
@forestpiskie 我倾向于首先建议运行“检查磁盘是否有缺陷”,因为安装介质的有效性最重要,而且这样做更容易,只需要进行菜单选择,而不需要运行另一个工具。但是,如果安装介质有问题,那么需要检查ISO镜像,以确定问题是由创建CD时出现错误还是ISO损坏引起的。 - irrational John
@forestpiskie 顺便说一句,HowToMD5SUM 帮助文章中的整个“检查光盘”部分让我觉得很乏味和无意义。我无法想象为什么有人会选择那里概述的方法,而不是简单地使用“检查光盘是否有缺陷”。可能应该将其移动并添加链接。 - irrational John

我今天早些时候遇到了同样的问题,当我试图从USB驱动器进行干净安装时。我将ISO刻录到光盘上,并从那里进行了干净安装,一切都正常工作。我知道这并不能真正解决问题,但如果你只是想找一个快速解决办法,这可能会起到作用。

这可能听起来有点傻,但如果你有一个mdadm阵列,分区可能会出现问题。由于mdadm阵列的运行,尽管安装成功,但分区表将为空(内核本身知道分区,但grub不知道如何处理)。
我知道这是因为我打破了shell并进入了/target,并运行了grub-install,它提到了一个丢失的磁盘(fdisk -l /dev/sda显示了一个空的分区表!)。
重新安装或重新创建正确的分区表后,grub-install /dev/sda将能够成功执行。