Ошибка failed to get canonical path of cow

Find your drive that’s supposed to boot with

mount

Or

parted -l

Or

fdisk /dev/sda

And type p to list the partitions, look for type 83.

(If you’ve got Fedora you might have to use the commands vgs and lvs and if you’ve got mdraid you might have to cat /proc/mdstat or mdadm -A --scan or insmod raid1 or insmod raid5 and then mdadm -A --scan) and you will use /dev/md0 or /dev/mapper/my-vg instead of /dev/sda

then try mount it

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

Is this your drive? Cool!

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

(Or whichever /dev drive your root is, with it’s mounted path)

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

(Force it if it doesn’t like your partitions.)

Now it should boot into grub, and you can use the grub commands to boot up, after rebooting and selecting the right boot drive from the BIOS Setup, or by pressing ESC, F8 or F12 depending on your BIOS and whether you are quick enough, then at the Grub prompt — you can use tab completion to find it if it’s not (hd0,1) but (hd1,3) or something else instead, but beware, tab completion sometimes hangs for a few seconds if grub can’t read the filesystem. Once booted into Grub you can try to boot with:

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

Or, hopefully you’ve still got an intact grub.cfg file…

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

Grub 1 allows you to do the installation from Grub:

install (hd0,1)

Once booted from the correct drive, you can retry update-grub and grub-install. If it still fails, you can try:

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

Your paths may differ of course, so just play with these commands until you can see what’s where and what’s going on.

It might be a sign of imminent hard drive failure at worst, or at best maybe just a partition flag or boot file that got overwritten accidentally, or a deliberately- or accidentally broken installer from another OS.

I get this error too, and I don’t think it happens in a chroot.

Background

I think this is when systemd cannot find the path because it is mounted in a directory. So, the difference is when you setup a chroot you already configure access to hardware, including drives.

Though you can configure this access inside Systemd that does not mean you can configure permissions for those drives the same way.

For instance, I created this file:

/etc/systemd/system/systemd-nspawn@.service.d/override.conf

And it contains these settings:

[Service]
DeviceAllow=char-usb_device rwm
DeviceAllow=char-usb
[Files]
Bind=/var/cache/apt/pkgcache.bin
Bind=/var/cache/apt/srcpkgcache.bin

This still does not work when using grub-install /dev/sda or update-grub for a USB on Pi debootstrapped with Debian Stretch. Even using grub-uboot and grub-efi-arm there is still that error the grub-probe cannot find the canonical path.

Not only that but though update-grub will see and know what the operating systems are, but interestingly grub-install does not recognize the Debian operating system is on USB.

Example

root@raspixmc:/home/pi# grub-install /dev/sda
Installing for arm-uboot platform.
grub-install: warning: no hints available for your platform. Expect 
reduced performance.
grub-install: warning: WARNING: no platform-specific install was 
performed.
Installation finished. No error reported.
root@raspixmc:/home/pi#

Interesting, when I create a chroot and can run update-grub, even though I am on the operating system that I debootstrapped to the USB itself it does not see its own operating system!

root@raspixmc:/home/pi# mount /dev/sda1 /mnt
root@raspixmc:/home/pi# cd /mnt
root@raspixmc:/mnt# mount --bind /dev dev/
root@raspixmc:/mnt# mount --bind /sys sys/
root@raspixmc:/mnt# mount --bind /proc proc/
root@raspixmc:/mnt# mount --bind /dev/pts dev/pts
root@raspixmc:/mnt# chroot . bin/bash
root@raspixmc:/# update-grub
Generating grub configuration file ...
Found Raspbian GNU/Linux 9 (stretch) on /dev/mmcblk0p2
done
root@raspixmc:/#

It only sees Raspbian. This happens only when trying to install and update GRUB inside the container, but when I exit the chroot.

Watch how it now works because I did not unmount the chroot directories:

/dev dev/
/sys sys/
/proc proc/
/dev/pts dev/pts

From outside the container mind you, I am running this command with grub-uboot installed on Raspbian and no Grub on the USB containing debootstrapped Debian.

root@raspixmc:/mnt# update-grub
Generating grub configuration file ...
Found Raspbian GNU/Linux 9 (stretch) on /dev/mmcblk0p2
Found Debian GNU/Linux 9 (stretch) on /dev/sda1
done
root@raspixmc:/mnt#

This does not happen using one of the unofficially available images for Debian ARM, but obviously this is still a customization not yet available for debootstrapping.

Troubleshooting

Really there are times when it is better just to create a path. The only next possibility (and a probable one) is to simply write GRUB. And for that I am just going to read on this page.

https://www.dedoimedo.com/computers/grub-2.html

Another thing I want to share about this issue is a solution that might work, but realize microSD cards are very sensitive. I have been building my own Linux images and learned this fast. The best thing to do is use Qemu whenever you can, but to attempt to clear an old partition table you might try running sgdisk --zap-all on the drive.

sgdisk --zap-all /dev/sdd

In fact, sometimes if it gives an error the first time and it is not a read-only error, you can run it again and it will finally all the partition tables new or old.

And you can use Qemu to emulate Raspberry Pi on a standard AMD/Intel-based PC. I would recommend it. I know this is more information than pertains to the original post, but I think that is likely how this error is derived. It is the container age.

Всем привет. не могу поставить grub выходит ошибка
Installing for i386-pc platform
grub-install: error: failed to get canonical path of » /cow».

Как только запускаю команду
grub-install /dev/sda то сразу выходит эта ошибка…

Installing for i386-pc platform
grub-install: error: failed to get canonical path of » /cow».

что можно сделать?
На автомате ставится без проблем, а если делаю ручную разметку то не ставится. В чем может быть дело?
использую вот этот мануал https://losst.ru/ustanovka-zagruzchika-grub#commen…


  • Вопрос задан

    более трёх лет назад

  • 27467 просмотров

Пригласить эксперта

Решил проблему с установкой на gpt , оказалось все очень просто для раздела загрузчика не хватало флага legacy_boot . Должно на разделе загрузчика стоять 2 флага bios_grub и legacy_boot

делал вот по этой инструкции https://losst.ru/ustanovka-zagruzchika-grub#commen… раздел «УСТАНОВКА ЗАГРУЗЧИКА GRUB В GPT ДЛЯ BIOS»

С консоли вот такую команду не запускал sudo grub-install /dev/sda
а просто как только разметил диски через gparted и поставил флаги, создал LVM тома для root home и swap . Запустил установщик стандартный указал для чего какой раздел, для своего grub раздела указал что-то типа «резервный загрузочный раздел Bios» и нажал установка и все встало без проблем.


  • Показать ещё
    Загружается…

09 июн. 2023, в 23:05

80000 руб./за проект

09 июн. 2023, в 22:45

1000 руб./за проект

09 июн. 2023, в 22:39

1000 руб./в час

Минуточку внимания

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

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
  • Печать

Страницы: [1]   Вниз

Тема: Слетел Grub!!!  (Прочитано 7902 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
Crocuta

Всем привет!
У меня стоит Windows и Ubuntu 14.04 на одном винчестере. Разбиение такое:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   104856254    52428096    7  HPFS/NTFS/exFAT
Partition 1 does not start on physical sector boundary.
/dev/sda2       104859648   106956799     1048576   83  Linux
/dev/sda3       106956800   117442559     5242880   82  Linux swap / Solaris
/dev/sda4       117442560   488397167   185477304    5  Extended
/dev/sda5       117444608   180359167    31457280   83  Linux
/dev/sda6       180361216   488397167   154017976   83  Linux

Загрузчик Grub был вынесен в отдельный раздел dev/sda2, точка монтирования /boot
Соответственно sda5 — это рут «/»
sda6 — /home
sda1 — Windows 7

Сейчас я загрузился с установочного диска Ubuntu 14.04, все разделы и папки видны. Попытался сделать следующее:

sudo mount /dev/sda2 /mnt
sudo grub-install —boot-directory=/mnt /dev/sda
sudo update-grub —output=/mnt/boot/grub/grub.cfg

Вышло сообщение:
/usr/sbin/grub-probe: error: failed to get canonical path of `/cow’.

После перезагрузки какой-то мат-перемат на черном экране, и что-то про Grub/
Помогите разобраться, буду потом все изучать, но машину бы завести сначала.
Заранее спасибо за любую помощь!


symon2014


Оффлайн
Crocuta

Сделал так:

sudo mount /dev/sda2 /mnt
sudo grub-install —root-directory=/mnt /dev/sda

Затем

sudo update-grub —output=/mnt/grub/grub.cfg

(файл grub.cfg находится в папке grub, а не boot)

Не помогло. В ответ сообщение:

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

« Последнее редактирование: 08 Июля 2015, 13:27:16 от Crocuta »


symon2014

sudo mount /dev/sda2 /mnt

кажется всё-таки надо написать sda5   :idiot2:


Оффлайн
Crocuta

Так-так…сейчас попробуем..


Пользователь решил продолжить мысль 08 Июля 2015, 14:57:37:


Нет(( Ничего не вышло.
Ну ладно…
Убиваю диск и ставлю все заново?
А че еще делать-то?
Вроде все по инструкции сделал.
Гори оно все.

« Последнее редактирование: 08 Июля 2015, 14:57:37 от Crocuta »


Оффлайн
DeadMetaler


Оффлайн
Crocuta

Нет, через chroot тоже не получается. Выходит сообщение:

chroot: failed to run command ‘/bin/bash’: No such file or directory


Пользователь решил продолжить мысль 08 Июля 2015, 15:33:55:


Не знаю в чем проблема.
Смотрел видео на ютубе, где один знаток утверждал, что для загрузчика grub лучше создать отдельнывй раздел, особенно если стоят две операционки. Что дескать это правило хорошего тона, и что легче восстановить загрузчик, если его отдельно вынести.
А вот и ссылка на это видео:
https://www.youtube.com/watch?v=nGfkdBR2VVo

« Последнее редактирование: 08 Июля 2015, 15:33:55 от Crocuta »


alang

Примонтировать надо не только раздел /boot, но и корневой:

sudo mount /dev/sda5 /mnt
sudo mount /dev/sda2 /mnt/boot
Примерно так.
А уж затем делать

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


symon2014

Crocuta, пробовал всё, кроме отдельного /boot . Осталось убить расширенный. Правда почти год экспериментов и неоднократная переустановка систем( очень неоднократная).
Забыл показать
/dev/sda1   *          63    21528575    10764256+   7  HPFS/NTFS/exFAT
/dev/sda2        21530622    78241791    28355585    5  Расширенный
/dev/sda5        21530624    78241791    28355584   83  Linux

« Последнее редактирование: 08 Июля 2015, 16:50:57 от symon2014 »


Оффлайн
Crocuta

Примонтировать надо не только раздел /boot, но и корневой:
sudo mount /dev/sda5 /mnt
sudo mount /dev/sda2 /mnt/boot
Примерно так.
А уж затем делатьsudo grub-install --root-directory=/mnt /dev/sda

Жаль что этого не было в документации. Я уже все пепеустановил.
Вообще пользуюсь чуть меньше месяца. Первые впечатления — очень затягивает, ну прямо очень. Работает и загружается быстрей, чем семерка. То что система не перегружена библиотеками на авось, как это делают в Майкрософт — видно невооруженным глазом. Единственная прога, которую приходится запускать через Wine — это Metatrader 4. Пока мне рано делать выводы, т.к. надо освоить матчасть. Но за это время система слетела дважды. Изрядно потрепав нервы. (Убить день на попытку решения проблемы и переустановку выходит за пределы разумного). Пока что Ubuntu для меня находится между понятиями «операционная система», и «любимое экзотическое домашнее животное». Может даже собака, которую можно съесть. Но затягивает очень, вопреки всякой логике. Это все учитывая то, что компьютер — это для меня средство заработка, ну еще кинца посмотреть. Даю себе месяц на освоение азов этой чудо системы. Ну хотя бы чтобы не переустанавливать каждую неделю. Извиняюсь за поток сознания.


Оффлайн
Sly_tom_cat


alang

Жаль что этого не было в документации.

Это есть в документации, но, вероятно, не по Ubuntu. Видимо, не предполагается, что кто-то будет выделять /boot в отдельный раздел. Вообще, реальная необходимость выделения /boot в отдельный раздел на десктопе осталась где-то году в 2009-м, когда не все загрузчики понимали новую на тот момент ext4. Нынче такой необходимости нет за редким исключением, но те, кто использует такое решение, обычно понимают, зачем они это делают. Еще советуют выделять в отдельный раздел /home — для сохранения пользовательских настроек на случай переустановки. Определенный резон в этом есть, но лично я тоже не выделяю.


Оффлайн
Sly_tom_cat

alang, я /home в отдельный раздел выделяю из двух соображений:
1. Так удобнее переустанавливать.
2. Я не считаю EXT4 подходящей для больших разделов (предпочитаю XFS). А сейчас винты уже редко меньше 1 ТБ. На 1 ТБ на свои только служебные нужды EXT4 отъест 1,8%, а вот XFS — всего 0,06%. Да еще и размер резерва для рута (5% — по умолчанию) на 1 ТБ это слишком много (хотя конечно резерв то можно и уменьшить). А вот на разделе 10-20Гб под корень EXT4 — самое то, что доктор прописал (и 5% резерва — очень полезным бывает, но не так много места отъедает).


  • Печать

Страницы: [1]   Вверх

Понравилась статья? Поделить с друзьями:
  • Ошибка failed to find servers
  • Ошибка failed to find java vm
  • Ошибка failed to find default engine
  • Ошибка failed to find a server unturned
  • Ошибка failed to fetch ubuntu