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


43

Я намагаюся встановити Ubuntu 12.10 досить довгий час і пропускаю перешкоди по черзі. Зараз я перебуваю в такій ситуації.

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

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

  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, а всі інші пристрої працюють бездоганно.

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


Чи є на вашому комп'ютері рекомендовані мінімальні системні вимоги для запуску 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
Спроба запустити монтування дає мені помилку:, NTFS signature is missing.що дивно, тому що це повинно бути Ext4, а не NTFS ...
Cerin

@ Cerin, наголошую, / dev / sda1 був правильним розділом для мене, але, очевидно, не для вас, якщо цей обсяг NTFS.
Натан Кідд

Ваше рішення заплутане. Чи потрібно запустити першу частину та другу зсередини хроніки першої? Або ви викидаєте все, що зробили в першій частині, і виконуєте лише другу частину? Чому ви монтуєте обидва / dev / sda та / dev / sda1?
Серін

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 

.

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
Це не сподобалось моїм розділам, але -fне працювало. Мені довелося скористатися--force
RM

до завантаження з GRUB, в моїй системі мені довелося змінити вище так: linux /vmlinuz root=/dev/sda1 (тобто кореневу папку) initrd /boot/initrd.img (тобто додати .img)
Warner

6

Переглянуте рішення на основі коду вище

Рішення зверху не працюватиме повністю без проблем, оскільки він змонтує завантажувальний розділ у / (root) файлової системи. Це змушує 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) розділ. Для цього запустіть вашу систему за допомогою завантажувального DVD-диска Ubuntu та відкрийте термінал. Всередині нього введіть:

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. Час зробити хронінг знову, на цей раз з деякими необхідними папками, необхідними для 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. Оновіть усі після завершення встановлення.


0

Отримала таку ж помилку. Єдина проблема полягала в тому, що / корова все ще була встановлена ​​на /.

Невелика сума судо / корова зробила трюк.


-6

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


Ні, ви повинні встановити жорсткий диск і chroot на ньому, як @ green7 сказав.
psusi

мій метод також працює. Спробуй це. його простіше
aveemashfaq

1
У вас немає методу. / usr / sbin вже на шляху, тому немає необхідності CD. Ви не можете запустити grub-install та update-grub безпосередньо з живого CD (як ви зазначали), оскільки він намагається налаштувати grub для завантаження поточної системи, яка була б живим CD, а не встановленим на жорсткому диску привід.
psusi

Це, звичайно, не працює. Ви отримуєте помилку "не можу отримати канонічний шлях / корова". І речі про cd-ing до / usr / sbin ... о хлопче.
dan3

спробуйте люди. він працював на мене весь час
aveemashfaq
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.