Не загружается centos 7

Обновлено: 01.07.2024

Некоторые пользователи RHEL 8 и CentOS 8 столкнулись с проблемами после установки вчерашнего обновления загрузчика GRUB2 с устранением критической уязвимости. Проблемы проявляются в невозможности загрузки после установки обновления, в том числе на системах без UEFI Secure Boot.

На некоторых системах (например, HPE ProLiant XL230k Gen1 без UEFI Secure Boot) проблема проявляется в том числе на свеже-установленном в минимальной конфигурации RHEL 8.2. После обновления пакетов и перезагрузки наблюдается зависание и даже не показывается меню GRUB. Похожие проблемы с загрузкой отмечаются для RHEL 7 и CentOS 7, а также для Ubuntu и Debian.

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

О проблеме на форумах и багтрекерах писали в июля 2020 года. Похоже, что проблема затрагивает все системы с UEFI загрузчиком и актуальна как минимум для версий CentOS 7.8 и 8.2.

Проблема проявляет себя в момент перезагрузки сервера в виде зависшего экрана с заставкой биоса, от чего сначала вообще не понятно, что происходит — ни ошибок, ни консоли grub, только зависшая заставка bios.

Решение

Если после обновления сервер не перезагружался, то чтобы не получить кирпич при последующей перезагрузке достаточно откатить обновление grub2 пакетов и их зависимостей:

Если же сервер перезагрузили и кирпич все-таки получили, то чтобы восстановить загрузчик понадобится Live-CD диск или флешка. Последовательность действий для отката пакетов на не грузящейся системе будет следующей:

  • Загрузиться с Live-CD (7 версию можно взять тут);
  • Настроить сеть;
  • Смонтировать корневой раздел в /mnt/sysimage;
  • Смонтировать раздел /boot в /mnt/sysimage/boot и раздел /boot/efi в /mnt/sysimage/boot/efi;
  • Выполнить последовательность команд:

После этого загрузчик обновится на старую версию и сервер должен загрузиться.

Исключение пакетов из обновления

Чтобы при следующем обновлении загрузчик опять не сломался, надо добавить проблемные пакеты в исключения (строка exclude=grub2* shim* mokutil ) в файл конфигурации yum /etc/yum.conf .

Проблемные версии пакетов для CentOS 7, именно с ними ломается UEFI загрузчик:

Понимание процедуры загрузки в Linux RHEL7/CentOS

Следующие шаги суммируют, как процедура загрузки происходит в Linux.

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

2. Выбор загрузочного устройства: В загрузочной прошивке UEFI или в основной загрузочной записи находится загрузочное устройство.

3. Загрузка загрузчика: с загрузочного устройства находится загрузчик. На Red Hat/CentOS это обычно GRUB 2.

4. Загрузка ядра: Загрузчик может представить пользователю меню загрузки или может быть настроен на автоматический запуск Linux по умолчанию. Для загрузки Linux ядро загружается вместе с initramfs . Initramfs содержит модули ядра для всего оборудования, которое требуется для загрузки, а также начальные сценарии, необходимые для перехода к следующему этапу загрузки. На RHEL 7/CentOS initramfs содержит полную операционную систему (которая может использоваться для устранения неполадок).

5. Запуск /sbin/init: Как только ядро загружено в память, загружается первый из всех процессов, но все еще из initramfs . Это процесс /sbin/init , который связан с systemd . Демон udev также загружается для дальнейшей инициализации оборудования. Все это все еще происходит из образа initramfs .

6. Обработка initrd.target: процесс systemd выполняет все юниты из initrd.target , который подготавливает минимальную операционную среду, в которой корневая файловая система на диске монтируется в каталог /sysroot . На данный момент загружено достаточно, чтобы перейти к установке системы, которая была записана на жесткий диск.

7. Переключение на корневую файловую систему: система переключается на корневую файловую систему, которая находится на диске, и в этот момент может также загрузить процесс systemd с диска.

8. Запуск цели по умолчанию (default target): Systemd ищет цель по умолчанию для выполнения и запускает все свои юниты. В этом процессе отображается экран входа в систему, и пользователь может проходить аутентификацию. Обратите внимание, что приглашение к входу в систему может быть запрошено до успешной загрузки всех файлов модуля systemd . Таким образом, просмотр приглашения на вход в систему не обязательно означает, что сервер еще полностью функционирует.
На каждом из перечисленных этапов могут возникнуть проблемы из-за неправильной настройки или других проблем. Таблица суммирует, где настроена определенная фаза и что вы можете сделать, чтобы устранить неполадки, если что-то пойдет не так.

Передача аргементов в GRUB 2 ядру во время загрузки

Если сервер не загружается нормально, приглашение загрузки GRUB предлагает удобный способ остановить процедуру загрузки и передать конкретные параметры ядру во время загрузки. В этой части вы узнаете, как получить доступ к приглашению к загрузке и как передать конкретные аргументы загрузки ядру во время загрузки.

Когда сервер загружается, вы кратко видите меню GRUB 2. Смотри быстро, потому что это будет длиться всего несколько секунд. В этом загрузочном меню вы можете ввести e, чтобы войти в режим, в котором вы можете редактировать команды, или c, чтобы ввести полную командную строку GRUB.


После передачи e в загрузочное меню GRUB вы увидите интерфейс, показанный на скриншоте ниже. В этом интерфейсе прокрутите вниз, чтобы найти раздел, начинающийся с linux16 /vmlinuz , за которым следует множество аргументов. Это строка, которая сообщает GRUB, как запустить ядро, и по умолчанию это выглядит так:



После ввода параметров загрузки, которые вы хотите использовать, нажмите Ctrl + X, чтобы запустить ядро с этими параметрами. Обратите внимание, что эти параметры используются только один раз и не являются постоянными. Чтобы сделать их постоянными, вы должны изменить содержимое файла конфигурации /etc/default/grub и использовать grub2-mkconfig -o /boot/grub2/grub.cfg , чтобы применить изменение.

Когда у вас возникли проблемы, у вас есть несколько вариантов (целей), которые вы можете ввести в приглашении загрузки GRUB:

■ rd.break Это останавливает процедуру загрузки, пока она еще находится в стадии initramfs .
Эта опция полезна, если у вас нет пароля root.

■ init=/bin/sh или init=/bin/bash Указывает, что оболочка должна быть запущена сразу после загрузки ядра и initrd . Это полезный вариант, но не лучший, потому что в некоторых случаях вы потеряете консольный доступ или пропустите другие функции.

■ systemd.unit=rescue.target Команда запускает еще несколько системных юнитов, чтобы привести вас в более полный рабочий режим. Требуется пароль root.
Чтобы увидеть, что загружено только очень ограниченное количество юнит-файлов, вы можете ввести команду systemctl list-units .

Запуск целей(targets) устранения неполадок в Linux

1. (Пере)загружаем Linux. Когда отобразиться меню GRUB, нажимаем e ;

2. Находим строку, которая начинается на linux16 /vmlinuz. В конце строки вводим systemd.unit=rescue.target и удаляем rhgb quit ;

3. Жмем Ctrl+X, чтобы начать загрузку с этими параметрами. Вводим пароль от root;

4. Вводим systemctl list-units и смотрим. Будут показаны все юнит-файлы, которые загружены в данный момент и соответственно загружена базовая системная среда;

5. Вводим systemctl show-environment . Видим переменные окружения в режиме rescue.target;

6. Перезагружаемся reboot ;

7. Когда отобразится меню GRUB, нажимаем e . Находим строку, которая начинается на linux16 /vmlinuz. В конце строки вводим systemd.unit=emergency.target и удаляем rhgb quit ;

8. Снова вводим пароль от root;

9. Система загрузилась в режиме emergency.target;

10. Вводим systemctl list-units и видим, что загрузился самый минимум из юнит-файлов.

Устранение неполадок с помощью загрузочного диска Linux

Еще один способ восстановления работоспособности Linux использовать образ операционки.

Если вам повезет меньше, вы увидите мигающий курсор в системе, которая вообще не загружается. Если это произойдет, вам нужен аварийный диск. Образ восстановления по умолчанию для Linux находится на установочном диске. При загрузке с установочного диска вы увидите пункт меню "Troubleshooting". Выберите этот пункт, чтобы получить доступ к параметрам, необходимым для ремонта машины.

  • Install CentOS 7 in Basic Graphics Mode: эта опция переустанавливает систему. Не используйте её, если не хотите устранить неполадки в ситуации, когда обычная установка не работает и вам необходим базовый графический режим. Как правило, вам никогда не нужно использовать эту опцию для устранения неисправностей при установке.
  • Rescue a CentOS System: это самая гибкая система спасения. Это должен быть первый вариант выбора при использовании аварийного диска.
  • Run a Memory Test: если вы столкнулись с ошибками памяти, это позволяет пометить плохие микросхемы памяти, чтобы ваша машина могла нормально загружаться.
  • Boot from local drive: здесь я думаю всё понятно.

Пример использования "Rescue a CentOS System"

1. Перезагружаем сервер с установочным диском Centos 7. Загружаемся и выбираем "Troubleshooting".

2. В меню траблшутинга выбираем "Rescue a CentOS System" и загружаемся.


3. Система восстановления теперь предлагает вам найти установленную систему Linux и смонтировать ее в /mnt/sysimage . Выберите номер 1, чтобы продолжить:
4. Если была найдена правильная установка CentOS, вам будет предложено, чтобы система была смонтирована в /mnt/sysimage . В этот момент вы можете дважды нажать Enter, чтобы получить доступ к оболочке восстановления.



5. Ваша система Linux на данный момент доступна через каталог /mnt/sysimage . Введите chroot /mnt/sysimage . На этом этапе у вас есть доступ к корневой файловой системе, и вы можете получить доступ ко всем инструментам, которые необходимы для восстановления доступа к вашей системе.

Переустановка GRUB с помощью аварийного диска

Одна из распространенных причин, по которой вам нужно запустить аварийный диск, заключается в том, что загрузчик GRUB 2 не работает. Если это произойдет, вам может понадобиться установить его снова. После того, как вы восстановили доступ к своему серверу с помощью аварийного диска, переустановить GRUB 2 несложно, и он состоит из двух этапов:

  1. Убедитесь, что вы поместили содержимое каталога /mnt/sysimage в текущую рабочую среду.
  2. Используйте команду grub2-install , а затем имя устройства, на котором вы хотите переустановить GRUB 2. Если это виртуальная машина KVM используйте команду grub2-install /dev/vda и на физическом сервере или виртуальная машина VMware, HyperV или Virtual Box, это grub2-install /dev/sda .

Повторное создание Initramfs с помощью аварийного диска

Иногда initramfs также может быть поврежден. Если это произойдет, вы не сможете загрузить свой сервер в нормальном рабочем режиме. Чтобы восстановить образ initramfs после загрузки в среду восстановления, вы можете использовать команду dracut . Если используется без аргументов, эта команда создает новый initramfs для загруженного в данный момент ядра.
Кроме того, вы можете использовать команду dracut с несколькими опциями для создания initramfs для конкретных сред ядра. Существует также файл конфигурации с именем /etc/dracut.conf , который можно использовать для включения определенных параметров при повторном создании initramfs .

  • /usr/lib/dracut/dracut.conf.d/*.conf содержит системные файлы конфигурации по умолчанию.
  • /etc/dracut.conf.d содержит пользовательские файлы конфигурации dracut.
  • /etc/dracut.conf используется в качестве основного файла конфигурации.

Исправление общих проблем

В пределах статьи, подобной этой, невозможно рассмотреть все возможные проблемы, с которыми можно столкнуться при работе с Linux. Однако есть некоторые проблемы, которые встречаются чаще, чем другие. Ниже некоторые наиболее распространенные проблемы.

Переустановка GRUB 2

Код загрузчика не исчезает просто так, но иногда может случиться, что загрузочный код GRUB 2 будет поврежден. В этом случае вам лучше знать, как переустановить GRUB 2. Точный подход зависит от того, находится ли ваш сервер в загрузочном состоянии. Если это так, то довольно просто переустановить GRUB 2. Просто введите grub2-install и имя устройства, на которое вы хотите его установить. У команды есть много различных опций для точной настройки того, что именно будет установлено, но вам, вероятно, они не понадобятся, потому что по умолчанию команда устанавливает все необходимое, чтобы ваша система снова загрузилась. Становится немного сложнее, если ваш сервер не загружается.

Если это произойдет, вам сначала нужно запустить систему восстановления и восстановить доступ к вашему серверу из системы восстановления. После монтирования файловых систем вашего сервера в /mnt/sysimage и использования chroot /mnt/sysimage , чтобы сделать смонтированный образ системы вашим корневым образом: Просто запустите grub2-install , чтобы установить GRUB 2 на желаемое установочное устройство. Но если вы находитесь на виртуальной машине KVM, запустите grub2-install /dev/vda , а если вы находитесь на физическом диске, запустите grub2-install /dev/sda .

Исправление Initramfs

В редких случаях может случиться так, что initramfs будет поврежден. Если вы тщательно проанализируете процедуру загрузки, вы узнаете, что у вас есть проблема с initramfs , потому что вы никогда не увидите, как корневая файловая система монтируется в корневой каталог, и при этом вы не увидите запуска каких-либо системных модулей. Если вы подозреваете, что у вас есть проблема с initramfs , ее легко создать заново. Чтобы воссоздать его, используя все настройки по умолчанию (что в большинстве случаев нормально), вы можете просто запустить команду dracut --force . (Без --force команда откажется перезаписать ваши существующие initramfs .)
При запуске команды dracut вы можете использовать файл конфигурации /etc/dracut.conf , чтобы указать, что именно записывается в initramfs . В этом файле конфигурации вы можете увидеть такие параметры, как lvmconf = «no» , которые можно использовать для включения или выключения определенных функций. Используйте эти параметры, чтобы убедиться, что у вас есть все необходимые функции в initramfs .

Восстановление после проблем с файловой системой

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

В результате операционная система (в нашем случае CentOS) не загружается.

Рассмотрим 2 варианта восстановления загрузчика.

Восстановление GRUB при помощи установочного дистрибутива CentOS





Выбираем пункт Обновить существующую установку , в нашем случае система установлена
на softRAID массиве /dev/md0 :


Выбираем пункт Создать новую конфигурацию загрузчика :


Выбираем диск на который будет установлен загрузчик:



В результате будет загружен обновленный загрузчик GRUB .

Восстановление GRUB с помощью Rescatux

Один из вариантов чтобы восстановить загрузчик GRUB в системах Linux нужно загрузиться с помощью Live-cd.
Для этого будем использовать специализированный live-cd Rescatux для аварийного восстановления системы.

Загрузить iso образ live-cd Rescatux можно с официального сайта.

После загрузки iso образа, его необходимо записать на оптический диск либо на USB-флешь носитель с помощью программы rufus

Далее производим загрузку live-cd Rescatux выставив необходимые параметры в BIOS.

Выбираем загрузку Rescatux autodetect :


Выбираем пункт GRUB :




Выбираем диск на котором требуется восстановить GRUB :


Нажимаем OK , перезагружаемся и видим восстановленный GRUB с Вашей
операционной системой.

У меня была машина Windows 7 с 500 ГБ диском. Я сжал раздел Windows, чтобы предоставить пространство для CentOS 7 (примерно 230 ГБ). Я создал USB-накопитель USB CentOS 7 и загрузился из него. Я запустил установку, как я знал, чтобы установить CentOS 7 в свободное пространство (а не на весь диск). Я сделал чистую установку, и все, казалось, прошли хорошо, но когда она перезагрузилась, я вернулся в Windows и не смог попасть в CentOS.

В настоящее время USB netOS 7 netinstall показывает мне следующие разделы на диске:

«Другие» разделы Windows:

Это выглядит нормально, но когда я снова вхожу в CentOS 7 Installation, он говорит мне, что мне нужно создать точки монтирования для корневого раздела. Я не делал этого первоначально, поскольку я думал, что это будет сделано автоматически, когда я щелкнул «Нажмите здесь, чтобы создать их автоматически» для установки диска в первый раз, когда я установил.

И таблица разделов, доступная с помощью cfdisk из «Спасение системы CentOS . » выглядит следующим образом:

Как уже упоминалось, когда я пытаюсь загрузить эту конфигурацию, я получаю «отсутствующую операционную систему». Если я верну флаг загрузки обратно в sda1, тогда он загрузится в Windows 7 в порядке.

I (re) установлен grub2 с помощью grub2-install из netinstall on /dev/sda , и теперь, когда я загружаюсь с диска, я получаю grub . Я могу использовать его для загрузки в Windows. Однако, когда я пытаюсь загрузиться в CentOS 7, я получаю какую-то трассировку /дамп.

ПРИМЕЧАНИЕ: Я считаю, что linux является основным загрузочным разделом для CentOS

Попытка вышесказанного просто сработает.

Я установил NTFS-3G и NTFSPROGS с помощью yum из репозитория EPEL.

Я запустил grub2-mkconfig -o /boot/grub2/grub.cfg , а затем перезагрузился, чтобы найти Windows 7 (Loader) в меню загрузки. Но когда я его выбираю, я получаю:

, который звучит не очень хорошо, но, по крайней мере, некоторый прогресс.

Я также должен сказать, что теперь у меня есть CentOS 7 только на внутреннем диске, и я работаю над этим диском в качестве внешнего USB-накопителя (следовательно, /dev/sdb )

Может кто-нибудь помочь мне получить Windows для загрузки?

У меня есть фон Unix, но в основном я использую Mac OS X. Я всегда отключаюсь при настройке двойной загрузки Windows и Linux.

Наконец, у меня есть система CentOS 6.5, работающая отлично на другой машине, а также на моем Mac.

Failed to issue method call: Invalid argument.

Пытаюсь выполнить руками:

Как раз появляется эта ошибка

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

Посмотрите другие вопросы с метками linux centos или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.1.10.35756

Edit: single user works for original kernel. But if I try single user with new kernel the monitor goes black. I must have gotten a bad nouveau driver or something

Я только что установил новую установку CentOS 7.2, а после выполнения yum update я не могу загрузиться в свою машину. Ядро было обновлено, я вижу оба ядра в GRUB2, но я не могу загрузиться ни в одну из них, я даже не могу загрузиться в ядро ​​спасения. Когда я делаю монитор, он становится черным и не возвращается, или останавливается во время загрузки и не будет реагировать на нажатия клавиш. Кажется, я забыл сделать grub2-mkconfig -o /boot/grub2/grub.cfg ? Любой совет?

Редактировать: один пользователь работает для исходного ядра. Но если я попробую одного пользователя с новым ядром, монитор станет черным. Должно быть, я получил плохой водитель нуво или что-то

Создан 20 янв. 17 2017-01-20 22:15:59 Timothy Pulliam


После очередной перезагрузки не могу попасть на рабочий стол. При загрузке есть 3 режима:

1) такая ошибка : 2.491185 kvm disabled by bios

Это означает, что при загрузке модуля kvm он жалуется, что апппаратная виртуализация поддерживается процессором, но выключена в BIOS.

гугл(ц) ,
в биосе сбрасывал настройки на дефолтные. отключал/ включал функцию intel virtualization, не помогло

если 2 режим:
зависает на запуске процесса

started Dynamic system tuning daemon


3) также зависает на запуске процессов, но уже на

P.S материнка : asus H81M-K, перед возникновением проблемы были установлены обновления centos , и также решал проблему с расширением монитора через xrandr)

  1. цифры перед ошибкой kvm disabled by bios всегда разные , что они означают ? (2.491185 / 2.737283 )
  2. Как можно диагностировать проблему подробнее ? Что можно предпринять для устранения ошибок?


UPD2:
отключил, квм, продолжает зависать на started gnome display manager или
started dynamic system tuning daemon
в режиме single загружается, там при journalctl , последние логи такие :

Читайте также: