Не удается восстановить grub из-за отсутствия vmlinuz и initrd.img

У меня был выделенный раздел grub, при попытке диагностировать эту проблему, я решил изменить раздел по умолчанию на систему ubuntu.

Но это не сработало, поэтому я загрузился с live cd, отформатировал старый загрузочный раздел и заново установил grub, скопировал grub.cfg, думая, что этого будет достаточно для загрузки системы ,

Но я был не прав, теперь я grub menu, которое отображается, но я не знал, что vmlinuz и intrd.img также необходимы для загрузки системы.

Что не где? Как я могу выбраться из этой глупой проблемы

2
задан 13 April 2017 в 15:25

2 ответа

Если то, что вы говорите, является правдой, то восстановление вашей системы может доставить больше хлопот, чем оно того стоит. Вы можете попробовать переустановить ядро, которое также должно обновить grub на диске, но поскольку вы перезаписали старый grub.cfg, он может даже не работать. Для начала вам нужно выполнить хромирование вашего диска из установщика в режиме реального времени, а затем apt-get install --reinstall использовать любую версию ядра, которая была у вас последней. Остальное действительно зависит от вас, это довольно беспорядок, который вы сделали для себя. Вы можете использовать это как возможность узнать больше о том, как дистрибутив загружается и восстановить его, или вы можете сделать резервную копию ваших данных и начать все сначала. Удачи.

0
ответ дан 13 April 2017 в 15:25

Жаль слышать, что вам пришлось переустанавливать ... но для будущих читателей этого вопроса, вот мой ответ.

Причина в моем случае:

Я возился со своим ботинком ... думал, что я подкрепил его:

# cd /
# tar czf boot.tgz boot

Затем удалил и переформатировал мой загрузочный раздел. Затем я собирался положить файлы обратно, но там не было boot.tgz: /

# file /initrd.img  /vmlinuz 
/initrd.img: broken symbolic link to `/boot/initrd.img-3.2.0-23-generic'
/vmlinuz:    broken symbolic link to `boot/vmlinuz-3.2.0-23-generic

Так что у меня была та же проблема, что и у вас.

И решение:

Переустановите материал initramfs (который генерирует файл initramfs в / boot; не уверен, какой из них является важным, поэтому я все сделал, было быстро ):

# aptitude reinstall grub2-common grub-pc-bin grub-gfxpayload-lists grub-common

К вашему сведению, чтобы получить список пакетов для моей команды выше, я сделал это:

# aptitude search grub | grep -E "^i"

Переустановите материал ядра (который помещает ядро ​​в / boot; это занимает много времени; сначала воспользуйтесь поиском, чтобы найти правильное имя пакета):

# aptitude reinstall linux-image-3.2.0-23-generic

Ссылки больше не были разорваны. :)

# file /initrd.img  /vmlinuz 
/initrd.img: symbolic link to `/boot/initrd.img-3.2.0-23-generic'
/vmlinuz:    symbolic link to `boot/vmlinuz-3.2.0-23-generic'

Чтобы избежать ошибки «cat: /boot/grub/video.lst: нет такого файла или каталога», где выполняется update-grub, я запустил grub-install. (Мне пришлось работать на нескольких дисках, так как я использую raid):

grub-install /dev/sda
grub-install /dev/sdb
...

Тогда просто чтобы быть уверенным ... update-grub снова (что переустановка grub также должна была сделать, но не иметь video.lst, и может понадобиться файл ядра или другие файлы):

# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
done

Затем, чтобы закончить, я проверяю правильность загрузки и fstab:

# umount /boot
# mount -a
# ls /boot
abi-3.2.0-23-generic  config-3.2.0-23-generic  grub  initrd.img-3.2.0-23-generic  lost+found  System.map-3.2.0-23-generic  vmlinuz-3.2.0-23-generic

( понятия не имею, что такое abi-3.2.0-23-generic. У меня не было этого файла раньше)

И снова сгенерировать initramfs на тот случай, если он выдаст несколько соответствующих сообщений об ошибках (замените имя файла на правильное на ваша система).

# mkinitramfs -o /boot/initrd.img-3.2.0-23-generic
(no output if it works)

Например, перед тем, как исправить мою загрузку и настроить файл mdadm.conf, я получу это сообщение:

grep: /boot/config-3.2.0-23-generic: No such file or directory
W: mdadm: the array /dev/md0 with UUID 656eb2a6:21526b55:a6f1834a:d3cc95e4
W: mdadm: is currently active, but it is not listed in mdadm.conf. if
W: mdadm: it is needed for boot, then YOUR SYSTEM IS NOW UNBOOTABLE!
W: mdadm: please inspect the output of /usr/share/mdadm/mkconf, compare
W: mdadm: it to /etc/mdadm/mdadm.conf, and make the necessary changes.

После этого я протестировал загрузку, и она заработала. :)

И немного базовой информации ... Вот и все, что необходимо для объединения вышеуказанного решения:

  • Grub необходимо установить в MBR, чтобы указать BIOS, что загружаться. (создан с помощью grub-install)
  • MBR указывает на загрузочный код grub (созданный с помощью grub-install) на диске где-то за пределами разделов. (в моем случае с GPT это раздел bios_grub).
  • Затем этот загрузочный код находит / boot для загрузки grub.cfg. (создается с помощью grub-mkconfig -o или update-grub, который также создает другие важные файлы)
  • При выборе варианта загрузки grub исчезает, заменяется ядром Linux (vmlinuz). Ядро начинает использовать файл initramfs (созданный с помощью mkinitramfs), который, я думаю, содержит некоторую информацию о системе (raid, lvm и т. Д. С некоторыми uuids разделов или томов raid / lvm), а также необходимые вам модули (ext3, ext4). , lvm, raid и т. д.).
  • в какой-то момент он монтирует обычную систему, и ваш rc.d-компонент берет на себя

Так вот почему вам нужны все эти файлы.

0
ответ дан 13 April 2017 в 15:25

Другие вопросы по тегам:

Похожие вопросы: