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

43

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

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

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

  1. начиная с компакт-диска, на котором установлен plop.
  2. выбирая для загрузки USB в опциях plop.
  3. загрузка начинается с USB.
  4. монитор в конечном итоге выдает ошибку «вне частоты»
  5. нажмите Shift+ Alt+, F1чтобы получить терминал.
  6. открыть личинку с 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, и все другие устройства работают отлично.

Что я должен делать дальше?

ulkaNCST
источник
Есть ли на вашем компьютере рекомендуемые минимальные системные требования для запуска Ubuntu? У меня были проблемы с установкой 12.04 на машины с объемом оперативной памяти менее 1 ГБ.
CSCameron
Да, теперь я добавил свою системную спецификацию к вопросу.
ulkaNCST
askubuntu.com/questions/207663/… возможно, стоит попробовать.
Rinzwind
5
Сначала подключите жесткий диск к какой-нибудь папке, скажем, /mntа затем chrootк /mnt.
зеленый,

Ответы:

30

После загрузки с живого компакт-диска 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
update-grub2  # inside chroot
Натан Кидд
источник
2
Попытка запустить mount дает мне ошибку:, NTFS signature is missing.что странно, потому что это должен быть Ext4, а не NTFS ...
Cerin
@Cerin, я подчеркиваю, что / dev / sda1 был правильным разделом для меня, но, очевидно, не для вас, если этот том NTFS.
Натан Кидд
Ваше решение сбивает с толку. Нужно ли запускать первую часть и вторую из chroot первой? Или вы отбрасываете все, что сделали в первой части, и запускаете только вторую? Почему вы монтируете / dev / sda и / dev / sda1?
15:15
2
Я следовал твоим инструкциям и закончил тем, что у /usr/sbin/grub-probe: error: failed to get canonical path of '/boot'.меня был только мой /bootраздел на моем загрузочном диске, остальное было в другом месте.
Сани
1
Пришлось сделать еще grub-install /dev/sdaдо этого update-grub, потом все заработало!
KIW
11

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

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 

(В зависимости от того, какой диск / 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
Dagelf
источник
1
Мне не нравились мои перегородки, но они -fне работали. Я должен был использовать--force
RM
чтобы загрузиться с GRUB, в моей системе мне пришлось изменить выше, например, так: linux /vmlinuz root=/dev/sda1 (т.е. корневая папка) initrd /boot/initrd.img (т.е. добавить .img)
Warner
6

Пересмотренное решение на основе кода выше

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

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

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

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

Тим Б.
источник
0

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

Chruegel
источник
0

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

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

Саймон Лейоли
источник
-6

Это команда update-grub, которая выдаст вам ошибку при использовании ее с live cd. Я столкнулся с подобной ситуацией, когда делал спасение. Проблема в том, что команды update-grub и grub-install не работают напрямую под live cd (я не знаю почему). Итак, вам нужно перейти в / usr / sbin, где находятся команды, и выполнить их оттуда (т.е. ./update-grub).

aveemashfaq
источник
Нет, вы должны смонтировать жесткий диск и выполнить в нем chroot, как сказал @ green7.
psusi
Мой метод также работает. попытайся. это проще
aveemashfaq
1
У тебя нет метода. / usr / sbin уже находится на пути, поэтому там нет необходимости использовать cd. Вы не можете запустить grub-install и update-grub напрямую с live cd (как вы заметили), потому что он пытается настроить grub для загрузки текущей системы, которая будет live cd, а не os, установленная на жестком диске. привод.
psusi
Это, конечно, не работает. Вы получаете ошибку «не удается получить канонический путь / корова». И все о cd-ing в / usr / sbin ... о, парень.
dan3
попробуйте это люди. это работало для меня все время
aveemashfaq