Установка Linux не завантажиться через помилку GRUB "немає такого пристрою"


2

Я думаю, що я вичерпав усе, що знаю, тому надсилаю спалахи. Я спробую все це висвітлити (хоча, по шматочках), тому будь ласка, будьте терплячі.

Я вирішив встановити Linux Mint 11 там, де раніше мав Ubuntu 10.10. Перед цим встановленням у мене був розділ на Windows XP, який я колись у далекому минулому використовував для подвійного завантаження. Я видалив розділ у цій установці.

Після встановлення система не може завантажитися. Після перевірки наявності CD / DVD він друкує:

error: no such device: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
GRUB rescue>

Не було проблем із завантаженням Ubuntu. Здається, я згадую подібну проблему минулого разу, коли я робив установку (замість оновлення) на Ubuntu. Минув деякий час, але я подумав, що це виправили за допомогою FIXMBRта / або FIXBOOTз компакт-диска XP. Ті, що цього разу не працювали.

GRUB rescue>Підказка , здається, зламана. Навіть helpне працює. Я вмію ls, що дає:

GRUB rescue> ls
(hd0) (hd0,msdos1) (hd1) (hd1,msdos1) (hd2) (hd2,msdos5) (hd2,msdos3) (hd2,msdos2) (hd2,msdos1)

Далі я не знаю, що це за пристрій. Я не можу знайти відповідний UUID під /dev/disk/by-uuid. Для цього не існує UUID для мого завантажувального жорсткого диска (sda, внизу). Моя установка - це Frankenbox. Я знаю, що не покладатися на перерахування пристроїв у такій суміші, але вони наведені нижче для легкого обговорення.

  • Ch 0 Master: 250 Гб PATA (sda)
    • sda1
  • Ч 0 Раб: немає
  • Ch 1 Master: 80 ГБ SATA (sdb)
    • sdb1: /
    • sdb2: / додому
    • sdb3: своп
  • Ch 1 Раб: DVD SATA
  • Карта розширення SATA: 250 ГБ SATA (SDC)
    • sdc1

Я подумав, що вдарив по золоту, коли виявив затримку (і заплутаність) метаданих RAID на sda. Диск раніше не з'являвся в установці Linux, але робився після використання dmraid -r -E /dev/sda. Однак збій завантаження зберігався.

До цих пір я міг використовувати компакт-диск із встановленням Mint для "завантаження з локального накопичувача", що дійсно привело б мене до моєї установки на sdb1. Після використання компакт-диска для завантаження на накопичувач та запуску нижче, я погіршив проблему із наданням GRUB>підказки замість завантаження диска.

# GRUB-install --no-floppy /dev/sdb1
# update-GRUB
GRUB> find /boot/GRUB/stage1
GRUB> root (hd1,0) # result of above
GRUB> setup (hd0)

Там визначено невідповідність, тому що SDB, який має 3 розділу, здається, (hd2)на GRUB rescue>запрошення, але (hd1)коли на самому ділі завантажується. Однак якщо я використовував UUID (і я думаю, що є), це не повинно бути проблемою. Використовуючи живий компакт-диск, я бачу, що sdb1: /boot/GRUB/menu.list має містити

# kopt=root=UUID=[UUID of sdb1]
...
# groot=[UUID of sdb1]

Основна проблема, наскільки я розумію, полягає в тому, що GRUB чомусь не розумію, намагається завантажувати пристрій, який не існує. Я не знаю, як визначити, що він шукає за даними UUID. Я не бачу жодних UUID для нічого на sda.

І тепер я навіть не можу завантажувати диск на компакт-диску.

Оновлення:

Я думав, що розміщення /bootрозділу на тому самому диску, що і MBR, може допомогти, тому я додав sda2, встановив bootпрапор і перевстановив (що, ймовірно, перевищення).

Я знову отримую grub rescue>підказку, але тепер, коли я ls, я отримую

grub rescue> ls
(hd0) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1) (hd2) (hd2,msdos3) (hd2,msdos2) (hd2,msdos1)

Отже, sda не більше (hd0) в цьому запиті, ніж sdb є (hd1). Я не знаю, чому це так не вирівняно, і чому це не має значення. Можу спробувати ще раз, надягаючи /bootsdc / (hd0).


Чи можете ви пояснити свою редакцію, @studiohack? Я написав підказки про груби в малі регістри, так як вони відображаються на екрані. Крім того, /boot/GRUB/menu.list, безумовно, недійсний шлях, оскільки файлова система Linux відрізняється від регістру.
N13

мої вибачення, це була автоматична корекція, коли я редагував «спасибі».
studiohack

Відповіді:


4

Я отримав таку ж помилку через неправильно позначений UUID у завантажувачі, і цей хлопець мав відповідь для мене разом з цими доступними командами в режимі відновлення grub.

По-перше, вам потрібно визначити диск і розділ, який містить файли меню grub, зазвичай розташовані в / boot / grub

ls [to identify your drive and partition options]
ls (hdx,p)/ [to identify which partition has the /boot folder]

Потім ви можете завантажити меню завантаження вручну з диска та розділу, який ви знайшли вище.

set prefix="(hdx,p)/boot/grub"
set root="(hdx,p)"
insmod normal
normal

У моєму випадку я змінив UUID нашого завантажувального накопичувача вручну та цілеспрямовано, оновив меню grub та fstab, але забув завантажити новий завантажувач для оновлення UUID та / або диск у завантажувачі. Тоді, накопичувачі не були в порядку, очікуваному в grub, і вище подбали про все це; воно повернулося до меню, щоб я міг повернутися та оновити завантажувач нової інформації про UUID


Як зауваження, я переміщував диски знову, і незалежно від того, що я робив, я, здається, не міг змусити завантажувача вказати на UUID нового диска, хоча grub.cfg мав усі нові UUID. Найпростішим рішенням було завантаження з нового диска з помилкою OP, запуск через завантаження вручну через вищезазначене, потім запуск через "grub-mkconfig", потім "update-grub", потім "grub-install / dev / newdisk" у ОС, що працює на новому диску.
Деймон

Дякую, що провели нас через цей жорстокий синтаксис Grub ( insmod normal, ого, ...), за допомогою цих магічних команд я зміг знову
запустити

Це чудово працює, проте мені доводиться робити це кожного перезавантаження .... навіть після встановлення нової груби
Дуглас Гаскелл

2

Рішення полягало лише в тому, щоб встановити завантажувач GRUB (MBR?) На правильний привід. У цьому випадку, що завантажується в Linux як / dev / sdc і (hd2) завантажується в GRUB як (hd0).


1
як? Ви можете, будь ласка, докладно?
Абдессамад Ідріссі

1
Ха, ні, не через 5 років.
N13,

1
ха-ха, не хвилюйтесь .. рішення @Damon працювало на мене .. але все одно спасибі
Абдессамад Ідріссі

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