如何修复/安装/重新安装grub?


9

因此,我从一个250GB的硬盘开始,这是我想将其转变为MintBook的EeePC 1015pem的库存驱动器。该驱动器在物理上是可操作的,但是所有数据(包括旧OS)已被删除。鉴于此,我将硬盘驱动器连接到了台式机,并通过通过Unetbootin-585创建的实时USB安装了Linux Mint 16 Xfce。抛开为10GB swap和240GB的ext4/

现在,驱动器拒绝引导台式机或上网本。两块主板都发出正确的哔哔声,因此它们看起来很健康,我可以成功访问这两个系统上的BIOS。但是,启动计算机后唯一出现的是无响应的命令行。没有错误消息,没有grub或grub-rescue,什么也没有。

除了重新格式化并重新开始,我还能尝试什么吗?我将如何安装可以引导操作系统的引导加载程序?


2
为什么要在台式机上安装?为什么不直接在目标上网本上安装?交换10 GB !?Ext4 /?240 您是否在驱动器的MBR上安装了grub?您正在使用UEFI吗?您能告诉我们您设置的分区方案吗?
terdon

顺序:>为什么要在桌面上安装?为什么不直接在目标上网本上安装?我是从台式机安装的,因为上网本对实时USB的反应不佳。我可以从USB启动桌面,但是当我尝试启动上网本时,它会在关闭前显示闪烁的Mint徽标约45分钟。> 10 GB可以交换!?我也没有很好的理由。我没有那个空间的迫切需求。> 240对于Ext4和/?...那有点不好吗?我发现的每个消息来源都说“ Use Ext4”,安装程序要求该分区。
the.keV.nc 2014年

好的,很公平(尽管这可能是由于使用过unetbootin造成的,但我也遇到了类似的问题,并且它与使用MultiSystem创建的USB一起使用时也看到了线程。您还可以回答我的其他问题吗?是否正在使用UEFI?已安装吗?驱动器上的,如果是,在哪里?
terdon

>您是否在驱动器的MBR上安装了grub?不我没有。我以为安装程序可以自行编辑MBR。>您是否在使用UEFI?据我所知。我是不是该?>您能告诉我们您设置的分区方案吗?你稍等一会儿。
the.keV.nc 2014年

1
我个人会为在笔记本电脑上直接安装而努力。安装其他东西只会增加imo的复杂性。尝试与实时USB安装不同的方法。我对@terdon的建议一无所知,但我会尝试一下。
Faheem Mitha 2014年

Answers:


16

因此,听起来您没有在磁盘上安装引导加载程序(例如grub)。这意味着,尽管您具有有效的操作系统,但无法启动它,因此无法使用它。

您需要将HDD附加到工作的计算机上(可以使用实时CD),设置chroot环境并在其上安装grub。

  1. 在以下位置挂载您要用作的分区/(我将其称为驱动器/dev/sdb/分区sdb1名称在您的系统上可能不同,您将需要使用正确的分区):

    sudo mount /dev/sdb1 /mnt/foo
    
  2. 绑定grub需要访问的目录

    sudo mount --bind /dev /mnt/foo/dev && 
    sudo mount --bind /dev/pts /mnt/foo/dev/pts && 
    sudo mount --bind /proc /mnt/foo/proc && 
    sudo mount --bind /sys /mnt/foo/sys
    
  3. 搭建chroot环境

    sudo chroot /mnt/foo
    
  4. 创建grub的配置文件:

    sudo grub-mkconfig -o /boot/grub/grub.cfg
    

    如果安装了多个操作系统,请确保上面的命令列出了所有这些操作系统。例如:

    $ sudo grub-mkconfig -o /boot/grub/grub.cfg
    Generating grub.cfg ...
    Found background image: /usr/share/images/desktop-base/desktop-grub.png
    Found linux image: /boot/vmlinuz-3.10-2-amd64
    Found initrd image: /boot/initrd.img-3.10-2-amd64
    Found linux image: /boot/vmlinuz-3.2.0-4-amd64
    Found initrd image: /boot/initrd.img-3.2.0-4-amd64
    Found linux image: /boot/vmlinuz-3.2.0-3-amd64
    Found initrd image: /boot/initrd.img-3.2.0-3-amd64
    Found linux image: /boot/vmlinuz-3.2.0-2-amd64
    Found initrd image: /boot/initrd.img-3.2.0-2-amd64
    Found memtest86+ image: /boot/memtest86+.bin
    Found memtest86+ multiboot image: /boot/memtest86+_multiboot.bin
    Found Windows 7 (loader) on /dev/sda2
    done
    
  5. 现在将grub安装到驱动器的MBR(请记住将其更改/dev/sdb为实际要在其上安装的驱动器)

    grub-install /dev/sdb
    grub-install --recheck /dev/sdb
    
  6. 退出chroot并卸载所有内容,以便您的运行系统恢复正常:

    exit
    sudo umount /mnt/foo/dev/pts /mnt/foo/dev /mnt/foo/proc /mnt/foo/sys /mnt/foo
    
  7. 尝试从驱动器启动,这次您应该有一个grub菜单。


根据您先前的建议,我按照nooblab.com上的说明进行了准确的操作。而且有效!在桌面上,我可以从新创建的grub引导到Mint。不幸的是,这并没有解决上网本的问题,因此请留意后续文章。
the.keV.nc 2014年

@ the.keV.nc您是什么意思我先前的建议?您使用的不是unetbootin吗?如果您按照我的回答中的步骤解决了您的问题,请将其标记为已接受,以便其他人看到这是正确的解决方案。
terdon

我的意思是你问我是否安装了grub。似乎我没有,所以我按照此处的说明从Mint的实时启动中重新安装。它可以正常工作,现在我可以通过将HDD附加到桌面上来访问Mint 16。但是,它仍然无法在我的上网本上使用,因此需要进行后续操作。(并且感谢您提及将其标记为接受。)
the.keV.nc 2014年

update-grub手册页- update-grub is a stub for running grub-mkconfig -o /boot/grub/grub.cfg。因此,没有需要做的grub-mkconfigupdate-grub。我认为之后grub-install是正确的时间(如果有区别),因此您基本上不需要步骤4(尽管您可以将输出移至步骤5,因为它是相同的)。
Graeme 2014年

1
实际上,@ Graeme我update-grub完全删除了,这是Debian的事情,正如您所说的,只是一个用于调试grub-mkconfig后运行的shell脚本set -x。没有意义,grub-mkconfig应该足够了。
terdon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.