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

39

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

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

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

  1. начиная с компакт-диска, на котором установлен plop.
  2. выбор для загрузки USB в опциях plop.
  3. Загрузка начинается с USB.
  4. Монитор
  5. в конечном итоге дает ошибку «вне частоты»
  6. нажмите Shift + Alt + F1 , чтобы получить терминал.
  7. откройте grub с sudo nano /etc/default/grub .
  8. выполните необходимые изменения.
  9. sudo update-grub .

Теперь я получаю ошибку следующим образом:

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

Моя система

P4 3,06 ГГц, 1 ГБ оперативной памяти, жесткий диск 10 ГБ без ОС, монитор CRT lg StudioWorks (7 лет). Mobo Mercury P4 266a NDMx (эквивалент 865). Вся система отлично работает в условиях XP, но USB не загружается, а все остальные устройства работают отлично.

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

    
задан ulkaNCST 13.02.2013 в 04:18
источник

5 ответов

28

После загрузки с живого компакт-диска Ubuntu (Tried 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
    
ответ дан Nathan Kidd 01.10.2014 в 14:43
9

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

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 -f

(Принудительно, если вам не нравятся ваши разделы.)

Теперь он должен загрузиться в grub, и вы можете использовать команды grub для загрузки, после перезагрузки и выбора правильного загрузочного диска из BIOS Setup или нажатия ESC или F12 в зависимости от вашего BIOS и достаточно ли вы достаточно быстро , затем в приглашении 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 13.04.2016 в 22:15
4

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

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

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

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

    
ответ дан Tim B. 15.05.2016 в 18:44
0

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

    
ответ дан Chruegel 15.03.2017 в 18:39
-6

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

    
ответ дан aveemashfaq 02.04.2014 в 18:06