无法获得/ cow的规范路径

我试图安装Ubuntu 12.10很长一段时间,并逐一通过障碍。 现在我的情况如下。

我有一台PC和10 GB硬盘驱动器,它将完全专用于Ubuntu,因此没有Wubi和双启动选项。

我试图从DVD安装,但它被卡在“超出频率”错误。 所以我不得不适应USB启动选项。 但我的电脑是USB不可启动的,所以解决方法是“Plop Boot Manager”。 所以我按如下方式进行安装:

  1. 从安装了plop的CD驱动器开始。
  2. 在plop选项中选择USB启动。
  3. 从USB开始启动。
  4. 监视器最终会出现“超出频率”错误
  5. Shift + Alt + F1进入终端。
  6. sudo nano /etc/default/grub打开sudo nano /etc/default/grub
  7. 做必要的改变。
  8. sudo update-grub

现在我在这里得到如下错误:

 /usr/sbin/grub-probe:error:failed to get canonical path of /cow. 

我的系统是

P4 3.06 GHz,1 GB RAM,10 GB硬盘没有操作系统,监视CRT lg StudioWorks(7岁)。 Mobo Mercury P4 266a NDMx(相当于865)。 整个系统完全处于XP下的工作状态,但是USB不可启动,所有其他设备都能正常工作。

接下来我该怎么办?

从Ubuntu live CD(试过14.04和16.04)启动后,我能够通过运行update-grub chroot到grub分区来解决这个问题。 (用你在grub上安装的任何分区替换下面的/dev/sda1 。所有命令都是root。)

 mkdir /mnt/chrootdir mount /dev/sda1 /mnt/chrootdir for dir in proc dev sys etc bin sbin var usr lib lib64 tmp; do mkdir /mnt/chrootdir/$dir && mount --bind /$dir /mnt/chrootdir/$dir done chroot /mnt/chrootdir update-grub2 # inside chroot 

找到你应该启动的驱动器

 mount 

要么

 parted -l 

要么

 fdisk /dev/sda 

并键入p以列出分区,查找类型83。

(如果你有Fedora,你可能不得不使用命令“vgs”和“lvs”,如果你有mdraid,你可能需要“cat / proc / mdstat”或mdadm -A –scan或insmod raid1或者insmod raid5然后是mdadm -A –scan)你将使用/ dev / md0或/ dev / mapper / my-vg而不是/ dev / sda

然后尝试安装它

 mkdir /mnt mount /dev/sda1 /mnt cd /mnt ls -l 

这是你的车吗? 凉!

 grub-install --recheck --root-directory=/mnt /dev/sda 

(或者以你的root为基础的/ dev驱动器,使用它的挂载路径)

 grub-install --recheck --root-directory=/mnt /dev/sda -f 

(强制它,如果它不喜欢你的分区。)

现在它应该启动进入grub,你可以使用grub命令启动,重新启动并从BIOS Setup中选择正确的启动驱动器,或者按ESC或F12取决于你的BIOS以及你是否足够快,然后在Grub提示:

 insmod linux ls root=(hd0,1) linux /boot/vmlinuz root=/dev/sda1 initrd /boot/initrd boot 

或者,希望你仍然有一个完整的grub.cfg文件…或者这可能会工作:

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

基于上述代码的修订解决方案

上面的解决方案不会完全没有问题,因为它将启动分区安装到文件系统的/(根)中。 这让grub抱怨/ boot不存在,当然。 这将解决这个问题:

 mkdir /mnt/chrootdir mkdir /mnt/chrootdir/boot mount /dev/sda1 /mnt/chrootdir/boot for dir in proc dev sys etc bin sbin var usr lib lib64 tmp; do mkdir /mnt/chrootdir/$dir && mount --bind /$dir /mnt/chrootdir/$dir ; done chroot /mnt/chrootdir update-grub2 # inside chroot 

如你所见,我也删除了换行符,以便更容易为每个人执行。

另一个(更简单)的解决方案

如果在使其工作时遇到问题,您应该将/ boot分区复制到/(根)分区。 为此,使用Ubuntu实时启动DVD启动系统并打开终端。 里面输入:

 sudo su fdisk -l 

找出您拥有的分区。 在我的情况下,sda1是我的/ boot分区,大约250MB,sda5大约是500GB。 我在以下命令中使用这些值:

 mkdir /mnt/boot/ mount /dev/sda1 /mnt/boot/ mkdir /mnt/root/ mount /dev/sda5 /mnt/root/ cp -R /mnt/boot/ /mnt/root/boot/ 

设置数据分区的可引导标志,并将其删除以用于引导分区:

 fdisk /dev/sda b -> 1 (unset the bootable flag for the first partition) b -> 5 (set the bootable flag for the fifth partition) w -> write changes to the MBR 

您的计算机现在将在sda5中查找引导文件。 是时候再次进行chrooting,这次需要一些grub所需的文件夹,这些文件夹已经由你的Ubuntu live disc生成了:

 mkdir /mnt/chrootdir/ mkdir /mnt/chrootdir/dev/ mkdir /mnt/chrootdir/proc/ mkdir /mnt/chrootdir/sys/ mount /dev/sda5 /mnt/chrootdir/ mount --bind /dev/ /mnt/chrootdir/dev/ mount --bind /proc/ /mnt/chrootdir/proc/ mount --bind /sys/ /mnt/chrootdir/sys/ chroot /mnt/chrootdir/ grub-install /dev/sda 

安装完毕。 没有报告错误。

如果没有看到生成grub.cnf文件的消息,那么还要运行update命令:

 update-grub2 /dev/sda 

现在您可以安全地重新启动并再次看到众所周知的启动菜单。

从物理服务器迁移到虚拟机后,此解决方案是唯一一个为我工作的解决方案。 我希望有人觉得这很有用!

我知道,这是一个老问题,但今天我和mint-linux(基于ubuntu)的实际版本有同样的麻烦。 我找到了一个简单的解决方案! :-)在第一次安装期间取下互联网连接。 这停止加载不兼容的grub2。 安装完成后更新所有内容。

这是update-grub命令,当你从live cd中使用它时会给你错误。 当我正在进行一次抢救时,我遇到了类似的情况。 你遇到的问题是update-grub和grub-install命令不能直接在live cd下工作(我不知道为什么)。 因此,您必须转到命令所在的/ usr / sbin并从那里执行它们(即./update-grub)。