Я недавно обновил свое ядро на CentOS 6.7. Это также очистило все более старые версии, которые также обновили мой /boot/grub/grub.conf, в нем есть одна запись (из нового ядра). Теперь, когда я перезагружаюсь, загрузка завершается с ошибкой "файл не найден", причина в том, что она все еще пытается загрузиться с более старым ядром, которого больше нет в /boot. Когда я перехожу на страницу со списком ядер, на ней отображается только старое ядро (которого больше нет), никаких признаков появления нового ядра в этом списке. Наконец, мне пришлось загружаться с помощью командной строки grub, все работало нормально. Я проверил /etc/grub.conf, это ссылка на /boot/grub/grub.conf. В каталоге /boot /efi /EFI /redhat / есть еще один файл grub.conf, но он также идентичен /boot/grub/grub.conf. Я искал строку версии ядра, чтобы проверить, ссылается ли она на что-то еще, это не так. Потом я узнал, что это за мной, что-то все еще не хорошо. Пожалуйста, посоветуйте мне.

Обновление Это может быть связано с последним обновлением BIOS, где теперь включена загрузка uefi. Когда я вручную выбираю загрузочный диск, я вижу 2 варианта, один из которых начинается с загрузочного загрузчика UEFI aaaaaa OS, а другой - с загрузочного диска SATA aaaaaaaa. Когда я выбираю загрузочный диск, он загружается с последним ядром. Должен ли я что-либо изменить после обновления BIOS?

2 ответа2

0

Вы можете загрузиться через командную строку grub? Просто отредактируйте grub.conf в соответствии с исправлениями, которые вы сделали для однократной загрузки, сделайте резервную копию и посмотрите ниже о grub-mkconfig.

---- Я перечитал и нашел больше деталей; В следующем разделе предполагается, что вы не можете загрузить ----

Так как вы не можете загрузиться, вы можете попробовать две вещи: отредактировать boot.cfg вручную или загрузить rescue-disk/live-cd и запустить grub-mkconfig.

Первый вариант требует, чтобы вы знали имя нового файла ядра или могли его найти (например, с помощью rescue-disk/live-cd). Отредактируйте /boot/grub/grub.cfg (или нажмите горячую клавишу в меню grub, чтобы просто отредактировать строку загрузки для однократной загрузки) и найдите строку, содержащую «linux [...] vmlinuz [...]. Вам необходимо изменить раздел строки vmlinuz, чтобы он соответствовал новому имени файла. Если применимо, вам также нужно изменить раздел initramfs на соответствующее новое имя файла. Сохраните его и посмотрите, сможете ли вы загрузиться (или сделайте правку в grub и посмотрите, загружается ли он, а затем отредактируйте его, как только вы войдете.)

Однако grub-mkconfig уничтожит эти изменения, если они не будут работать правильно, поэтому, если вы работаете над чем-то, что загружается вообще, сохраните рабочий grub.cfg в качестве резервной копии.

Последний шаг - убедиться, что (sudo) grub-mkconfig -o /boot/grub/grub.cfg правильно сгенерирует правильные строки загрузки. Если вы используете live-cd и вам еще не удалось загрузиться в ОС, используйте chroot, чтобы сменить root на свой настоящий диск, чтобы он выбрал нужные загрузочные файлы (и не забудьте смонтировать / загрузить, если он отдельный раздел). Запустите команду и посмотрите, загружается ли она.

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

Если выясняется, что grub-mkconfig не работает, вам нужно немного разобраться в /etc/grub(.d), чтобы определить, какой файл конфигурации работает неправильно. Эти файлы конфигурации очень сложны, чтобы справляться со многими ситуациями, поэтому вы можете упростить, закомментировать и жестко закодировать свои собственные вещи, чтобы они снова заработали для вас.

Удачи.

0

Мой env по-прежнему использует устаревший grub (0.97), поэтому нет никакой возможности сделать grub-mkconfig.

Согласны ли вы с обновлением от grub legacy до grub2?

Затем вы можете обновить его с помощью apt-get, затем:

sudo grub-install /dev/sdX --boot-directory=/your_boot_folder.

Затем выполните уже обсужденную команду: sudo grub-update (grub-mkconfig ...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .