Grub не отображает новое ядро при загрузке

Вопрос или проблема

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

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

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

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

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

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

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

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

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

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

Удачи.

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

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

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

sudo grub-install /dev/sdX --boot-directory=/ваша_папка_загрузки.

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

Ответ или решение

Проблема, с которой вы столкнулись, связана с тем, что после обновления ядра в CentOS 6.7 конфигурация GRUB не была обновлена должным образом, что и привело к тому, что при загрузке система пытается загрузить отсутствующее старое ядро.

Вот несколько шагов, которые помогут вам решить проблему:

  1. Редактирование grub.conf: Если у вас есть доступ к командной строке GRUB, загрузитесь через неё и отредактируйте конфигурационный файл. Используя команду e, можете изменить параметры загрузки. Найдите строку с параметрами linux и initrd, и укажите правильные имена файлов для нового ядра.

  2. Запуск в режиме восстановления: Если вы не можете воспользоваться командной строкой GRUB, загрузитесь с живого диска (live CD) или диска восстановления. После этого выполните следующие действия:

    • Смонтируйте ваш корневой раздел и, если это необходимо, раздел /boot:
      mount /dev/sdXn /mnt  # замените sdXn на ваш корневой раздел
      mount /dev/sdYn /mnt/boot  # если /boot на отдельном разделе
    • Затем выполните команду grub для запуска интерфейса GRUB и введите следующую команду для загрузки вашей системы:
      root (hd0,0)  # замените hd0,0 на корректный номер вашего загрузочного раздела
      kernel /vmlinuz-<новая_версия_ядра>  # укажите файл нового ядра
      initrd /initramfs-<новая_версия_ядра>.img  # укажите файл initramfs
      boot
  3. Обновление grub.conf: Чтобы исправить конфигурацию GRUB на постоянной основе, вам нужно вручную обновить файл /boot/grub/grub.conf. Вас может заинтересовать следующая структура:

    default=0
    timeout=5
    title CentOS (новое ядро)
       root (hd0,0)
       kernel /vmlinuz-<новая_версия_ядра> ro root=/dev/sdXn
       initrd /initramfs-<новая_версия_ядра>.img

    Убедитесь, что вы правильно указали путь к новому ядру и initramfs.

  4. Использование grub-mkconfig (если возможно): Если ваш GRUB поддерживает grub-mkconfig, вы можете выполнить команду, чтобы обновить конфигурацию:

    sudo grub-mkconfig -o /boot/grub/grub.conf

    Однако, судя по вашему сообщению, ваша версия GRUB — это Legacy GRUB (0.97), и эта команда может быть недоступна. В этом случае вы можете рассмотреть возможность обновления до GRUB2, если это допустимо в вашей среде.

  5. Обновление BIOS и UEFI: После обновления BIOS и активации UEFI убедитесь, что ваше устройство корректно настроено для загрузки через UEFI. Вы можете попробовать отключить UEFI и использовать режим UEFI/Legacy, если у вас есть такая возможность. Также проверьте порядок загрузки в BIOS: убедитесь, что загрузка происходит с правильного диска.

Рекомендуется сделать резервные копии важных данных перед внесением каких-либо изменений в конфигурацию системы или BIOS.

Если после выполнения этих шагов проблема не устраняется, пожалуйста, предоставьте дополнительные сведения о версии ядра, конфигурации системы и любых сообщениях об ошибках, которые вы наблюдаете. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...