问题描述
我试图安装Ubuntu 12.10已经有一段时间了,并且一个接一个地通过障碍。现在我的情况如下。
我有一台PC和10 GB硬盘驱动器,它将完全专用于Ubuntu,所以没有Wubi和双启动选项。
我试图从DVD安装,但它被卡在“超出频率”错误。所以我不得不适应USB启动选项。但我的电脑是USB无法启动的,所以解决方法是“Plop Boot Manager”。所以我按如下方式进行安装:
-
从安装了plop的CD驱动器开始。
-
在plop选项中选择USB启动。
-
从USB开始启动。
-
监视器最终会出现“超出频率”错误
-
按
Shift
+Alt
+F1
得到终端。 -
用
sudo nano /etc/default/grub
打开grub。 -
做必要的改变。
-
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 --force
(强制它,如果它不喜欢你的分区。)
现在它应该启动进入grub,你可以使用grub命令启动,重新启动并从BIOS Setup中选择正确的启动驱动器,或者按ESC或F12取决于你的BIOS以及你是否足够快,然后在Grub提示 – 如果它不是(hd0,1)而是(hd1,3)或其他东西,你可以使用制表符完成找到它,但要注意,如果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
现在您可以安全地重新启动并再次看到众所周知的启动菜单。
从物理服务器迁移到虚拟机后,此解决方案是唯一一个为我工作的解决方案。我希望有人觉得这很有用!