Не вдалося отримати канонічний шлях /cow

Вже досить довго намагаюся встановити Ubuntu 12.10, долаючи перешкоди одну за одною. Зараз у мене склалася наступна ситуація.

У мене є ПК і 10 Гб HDD, який буде повністю присвячений Ubuntu, тому немає можливості використовувати Wubi та подвійне завантаження.

Я намагався встановити з DVD, але він застряг на помилці "Немає частоти". Тому мені довелося адаптуватися до варіанту завантаження з USB. Але мій ПК не завантажується з USB, тому обхідним шляхом є "Plop Boot Manager". Отже, я виконую процедуру встановлення наступним чином:

  1. починаючи з CD-приводу, на якому встановлено plop.
  2. вибираю для завантаження з USB в опціях plop.
  3. завантаження починається з USB.
  4. монітор з часом видає помилку "out of frequency".
  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 GHz, 1 GB ram, 10 GB HDD без ОС, монітор CRT lg StudioWorks (7 років). Mobo Mercury P4 266a NDMx (865 еквівалент). Вся система в ідеальному робочому стані під XP, але з USB не завантажується, а всі інші пристрої працюють ідеально.

Що мені робити далі?

Після завантаження з живого компакт-диска 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
Коментарі (8)

Знайдіть диск, який повинен завантажуватися з

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
Коментарі (2)

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

Коментарі (6)