Не удалось получить канонический путь / корова

Я пытаюсь установить Ubuntu 12.10 в течение некоторого времени и преодолеваю препятствия один за другим. Сейчас я нахожусь в следующей ситуации.

У меня есть ПК и жесткий диск на 10 ГБ, который будет полностью выделен для Ubuntu, поэтому я не могу выбрать Wubi и двойную загрузку.

Я пытался установить с DVD, но он зависает из-за ошибки «Out ofquency». Поэтому мне пришлось адаптироваться к USB-загрузке. Но мой компьютер не является загрузочным USB, поэтому обходной путь - «Диспетчер загрузки Plop». Поэтому я делаю процедуру установки следующим образом:

  1. , начиная с CD-привода, на котором установлен plop.
  2. выбирая загрузку через USB в параметрах plop.
  3. загрузка начинается с USB.
  4. монитор в конце концов выдает ошибку «вне частоты»
  5. нажмите Shift + Alt + F1 , чтобы получить терминал.
  6. открыть 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 ГГц, 1 ГБ оперативной памяти, 10 ГБ HDD без ОС , монитор CRT LG StudioWorks (7 лет). Mobo Mercury P4 266a NDMx (865 эквивалентов). Вся система находится в отличном рабочем состоянии под XP, но она не загружается через USB, а все остальные устройства работают отлично.

Что мне делать дальше?

55
задан 18 February 2014 в 20:53

6 ответов

После загрузки с Live CD Ubuntu (пробовал 14.04 и 16.04). Мне удалось обойти эту проблему, запустив update-grub chroot'ed для раздела grub. (Замените / dev / sda1 ниже тем разделом, на котором вы установили grub. Все команды от имени пользователя 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
grub-install /dev/sda # May not be required
update-grub2
37
ответ дан 18 February 2014 в 20:53

Я знаю, это старая проблема, но у меня были те же самые проблемы сегодня с актуальной версией mint-linux (на базе ubuntu). Я нашел очень простое решение! :-) Снимите интернет-соединение во время первой установки. Это остановка загрузки несовместимых grub2. Обновите все после завершения установки.

1
ответ дан 18 February 2014 в 20:53

Это команда update-grub , которая выдаст вам ошибку при использовании ее с живого компакт-диска. Я столкнулся с подобной ситуацией, когда выполнял спасение GRUB. Также grub-install по какой-то причине не попал на мой путь, поэтому мне пришлось запустить его с помощью / usr / sbin / grub-install .

grub-install ] принимает параметр - boot-directory , чтобы настроить GRUB для загрузки в систему, отличную от той, которая работает в данный момент. Вот соответствующая страница руководства.

-7
ответ дан 18 February 2014 в 20:53

Исправленное решение, основанное на приведенном выше коде

Приведенное выше решение не будет работать без проблем, поскольку оно монтирует загрузочный раздел в / (корень) файловой системы. Это, конечно, заставляет 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 в раздел / (корневой). Для этого запустите вашу систему с DVD-диска Live boot Ubuntu и откройте терминал. Внутри наберите:

sudo su
fdisk -l

Чтобы узнать, какие у вас разделы. В моем случае sda1 - это мой раздел / boot размером около 250 МБ, а sda5 - около 500 ГБ. Я использую эти значения в следующих командах:

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. Пришло время снова выполнить chroot, на этот раз с некоторыми необходимыми папками, необходимыми для grub и уже созданными вашим живым диском Ubuntu:

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-grub2 /dev/sda

Теперь вы можете безопасно перезагрузиться и снова увидеть хорошо известное меню загрузки.

Это решение было единственным, которое работало у меня после перехода с физического сервера на виртуальную машину. Я надеюсь, что кто-то сочтет это полезным!

10
ответ дан 18 February 2014 в 20:53

Найдите свой диск, который должен загружаться с помощью

mount

, или

parted -l

, или

fdisk /dev/sda

, и введите p, чтобы вывести список разделов. найдите тип 83.

(Если у вас Fedora, вам, возможно, придется использовать команды «vgs» и «lvs», а если у вас есть mdraid, вам, возможно, придется «cat / proc / mdstat» или mdadm -А -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

Is это твой драйв? Круто!

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

(Или в зависимости от того, какой у вас корневой диск / 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 ...

ls
ls (hd0,1)/
ls (hd0,1)/boot
configfile (hd0,1)/boot/grub.cfg

или, может быть, это сработает:

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

Ваши пути, конечно, могут отличаться, поэтому просто играйте с этими командами, пока не увидите, что где и что происходит.

Это может быть признаком неминуемого отказа жесткого диска в худшем случае, а в лучшем случае может быть просто флагом раздела или загрузочным файлом, который был случайно перезаписан.

21
ответ дан 18 February 2014 в 20:53

Та же ошибка. Единственная проблема заключалась в том, что / cow все еще была установлена ​​на /.

Маленький sudo umount / cow сделал свое дело.

0
ответ дан 23 November 2019 в 00:02

Другие вопросы по тегам:

Похожие вопросы: