Восстановление перемещенных .mod файлов с помощью grubrescue


33

Я сделал глупую вещь ... Я забыл, что Ubuntu 10.04 (Lucid Lynx) перешел на GRUB  2, который помещает тонну файлов * .mod (модулей ядра) /boot/grub. Я думал, что это были файлы саундтреков, ошибочно помещенные туда, и я переместил их Само собой разумеется, следующая перезагрузка была травмирующей. Мне подарили что-то, о чем я даже не помнил ... подсказка «grub rescue>».

С помощью Исправления ошибки GRUB: «ошибка: неизвестная файловая система», однако, я смог восстановить ...

  • Я обнаружил, что в GRUB rescue нет команд 'cd', 'cp' или каких-либо других команд файловой системы, кроме собственной вариации 'ls'.
  • Итак, сначала я должен был найти раздел с /bootкаталогом, содержащим vmlinuzфайл и другие файлы образа загрузки ... (приближение из памяти неудачных попыток, а также пустые строки для ясности, добавлено 2014-07-10 автором docsalvage)

    grub rescue>  ls  
    (hd0,4) (hd0,3) (hd0,2) (hd0,1)  
    
    grub rescue>  ls (hd0,4)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,3)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,2)/boot
    ... grub ... initrd.img-2.6.32-33-generic ... vmlinuz-2.6.32-33-generic 
    
  • Я нашел /bootкаталог, содержащий vmlinuzфайл vmlinuz-2.6.32-33-genericна разделе (hd0,2).

  • Затем я вручную загрузился из приглашения «grub rescue>». Следующие команды будут ...

    • Установите, rootчтобы использовать /bootкаталог на разделе (hd0,2).
    • Загрузите модуль ядра linux.
    • Установите этот модуль для использования образа ядра vmlinuz-2.6.32-33-generic.
    • Установите initrd (инициализация RAM-диска) для использования образа initrd.img-2.6.32-33-generic.
    • Загрузите Linux.
  • grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
  • Это загружает и вылетает в подсказке BusyBox, которая имеет некоторые элементарные команды файловой системы.

  • Затем я переместил файлы * .mod обратно в /boot/grubкаталог ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • Перезагрузка прошла успешно, но это было много работы.

Есть ли более простой способ?


1
Boot-Repair будет намного проще, на мой взгляд. Проверьте один из моих многочисленных ответов на Boot-Repair для деталей по его использованию.
SirCharlo

1
«Самый простой» способ не всегда самый лучший. Я категорически не согласен со всеми комментариями, которые предлагают использовать Live CD; на самом деле очень сложно загрузиться с Live CD в системах, где нет CD / DVD-ридера.
Симон

Я не могу найти раздел с каталогом / boot. Все разделы по команде ls дают неизвестный вывод файловой системы.
Рафель Ноле

1
Ваш пост был очень полезен для ручной загрузки ядра и initrd, но моя система не смогла найти dev, sys или proc, etc / fstab или sbin / init. Это привело меня к другому сообщению , который предложил загрузить ядро и установку корня , как описано в руководстве направлений загрузки в документации потайной , например grub> linux (hd0,X)/boot/vmlinuz-a.b.c-d-generic root=/dev/sdaX , где Xесть раздел с /boot, a.b.c-dявляется версией ядра. Тогда моя система загрузилась нормально! Благодарность!
Марк Микофски

1
в дополнение к [Исправлению ошибки GRUB: «ошибка: неизвестная файловая система» [дубликат]] ( askubuntu.com/q/142300/36961 ) еще одна замечательная ссылка, которая охватывает эти шаги, - Как спасти не загружающийся GRUB 2 в Linux , Руководство grub 2 также очень полезно
Mark Mikofski

Ответы:


5

Нет. Я думаю, вы в значительной степени нашли самый простой способ восстановить состояние вашей системы с помощью grub rescue ; это очень минималистичная система, дающая достаточно возможностей для загрузки системы.

Кстати, я считаю, что вы, должно быть, нашли .modфайлы и выполнили их, insmod linuxиначе linuxкоманда потерпела бы неудачу.

Единственный другой способ, как уже упоминалось, состоит в том, чтобы загрузить Live CD и переустановить grub2 после установки chroot в «сломанную» систему.


Вы абсолютно правы! Я забыл, что сделал это. Добавлено в мой оригинальный пост выше для дальнейшего использования. Мне нужно быть более дисциплинированным, чтобы вести осторожные записи в этих ситуациях. Пожалуйста, сообщите, если необходимы дальнейшие изменения.
DocSalvager

Я также должен был указать root при загрузке ядра, как в документации grub, например grub> linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
Mark Mikofski

Также обратите внимание, если вы нашли .mod файлов, вы можете восстановить «потайной спасение» в полнофункциональный GRUB: # Inspect the current prefix (and other preset variables): set # Find out which devices are available: ls # Set to the correct value, which might be something like this: set prefix=(hd0,1)/grub set root=(hd0,1) insmod normal normal Источник: gnu.org/software/grub/manual/html_node/...
MegaBrutal

7

Вот некоторые общие и основные инструкции, которые помогут при ошибках загрузки, например GRUB loading stage 1.5 error 15 (например, после установки Windows на другом диске):

  1. Загрузитесь с LiveDVD (например, с диска Ubuntu Desktop).

  2. Откройте терминал и перепишите конфигурацию grub, используя следующие команды:

    • sudo mount /dev/sdXY /mnt
    • sudo grub-install --root-directory=/mnt /dev/sdX

Где /dev/sdXнаходится диск, на котором установлена ​​Ubuntu, и /dev/sdXYраздел на диске, на котором установлена ​​Ubuntu. Другими словами, /dev/sdXYсодержит /bootи так далее.

Используйте fdisk -lдля проверки местоположения установки Ubuntu.


Не работал. Возможно, если бы направления были более конкретными, это бы сработало.
Тим Стюарт,

Когда у меня возникла проблема с grub2 на машине без дисковода компакт-дисков, я смог восстановить ее с помощью USB-накопителя Gparted Live. Я загрузился в Gparted в прямом эфире. Затем я запустил терминал и набрал fdisk -l (это буква ell, а не номер 1). Вывод этого позволил мне определить раздел с корневым разделом, и оттуда я следовал превосходным инструкциям, приведенным выше, и вскоре снова стал счастливым с двойной загрузкой. ,
Vic

4
  1. Загрузитесь в Live CD

  2. Открытый терминал (CTRL + ALT + T)

  3. Введите следующие команды:

sudo fdisk -l

И найдите свой раздел Ubuntu (должен быть / dev / sda1, если это первый раздел)

sudo mount /dev/sda1 /mnt

sudo mount --bind /sys /mnt/sys

sudo mount --bind /proc /mnt/proc

sudo mount --bind /dev /mnt/dev

sudo chroot /mnt

Теперь переустановите Grub2

sudo apt-get install --reinstall grub2

2
Это лучший способ лучше чем sudo mount /dev/sda1 /mntи sudo grub-install --root-directory=/mnt/ /dev/sda && sudo update-grub?

4

У меня была такая же проблема, когда я обновил свою систему.

Я предлагаю следующие простые шаги:

  1. Загрузите вашу систему с Ubuntu Live CD или Live USB.
  2. Откройте терминал и выполните команду sudo add-apt-repository ppa: yannubuntu / boot-repair && sudo apt-get update
  3. Затем установите восстановление загрузчика, выполнив команду sudo apt-get install -y boot-repair && boot-repair

  4. Запустите восстановление загрузчика после установки. Например, из меню используйте System->Administration->Boot-Repair (только Ubuntu 10.04) и следуйте инструкциям.

    Может потребоваться 15-20 минут, чтобы выяснить проблему и решить ее.

Для получения дополнительной помощи перейдите по ссылке https://help.ubuntu.com/community/Boot-Repair


0

Вы можете загрузить live CD, смонтировать жесткий диск, открыть nautilus от имени пользователя root и скопировать эти файлы в / boot.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.