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.
Всем привет. не могу поставить 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…
-
Вопрос заданболее трёх лет назад
-
27438 просмотров
Пригласить эксперта
Решил проблему с установкой на 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» и нажал установка и все встало без проблем.
-
Показать ещё
Загружается…
05 июн. 2023, в 19:14
3000 руб./за проект
05 июн. 2023, в 19:06
3000 руб./за проект
05 июн. 2023, в 19:04
5000 руб./за проект
Минуточку внимания
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.
- Печать
Страницы: [1] Вниз
Тема: Слетел Grub!!! (Прочитано 7894 раз)
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
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] Вверх
Найдите диск, который должен загрузиться с
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