Emergency mode centos 7 исправить

Обновлено: 06.07.2024

Понимание процедуры загрузки в 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 .

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

date

17.01.2020

directory

CentOS, Linux

comments

комментария 3

В своей работе мне приходилось неоднократно сталкиваться с проблемой загрузки Linux в аварийном режиме с ошибкой Welcome to emergency mode. Чаще всего проблема возникает при аварийном отключении питания на сервере, при краше системы или других подобных воздействиях. В 90% случаев это ошибка связана с повреждением файловой системы Linux, которую можно решить.

В данной статье мы рассмотрим варианты решения подобной проблемы, их может быть несколько.

Исправляем ошибки файловой системы с помощью LiveCD

Рассмотрим пример, когда у вас был какой-то сбой на сервере, например, аварийное отключение питания и при загрузке Linux сервера в remote console или vnc, вы видите следующую картину:

ошибка загрузки Welcome to emergency mode! в linux centos

Аварийный режим emergency mode обеспечивает минимально возможную среду Linux для восстановления система, если ОС не может войти в режим восстановления (Rescue mode). В аварийном режиме система монтирует корневую файловую систему на для чтение. Другие локальные файловые системы не монтируются, сетевые интерфейсы не поднимаются.

Если нажать сочетание клавиш Control + D, то начинается загрузка системы, но в конечном итоге все возвращается к тому же Emergency mode:

бесконечная перезагрузка linux в Emergency mode

Чтобы решить данную проблему, вам нужно загрузиться на сервере с LiveCD или LiveUSB и использовать утилиту SystemRescueCd. Я загрузил образ с утилитой systemrescuecd:

systemrescuecd - livecd для восстановления linux

Теперь запустите проверку файловой системы сервера с исправлением всех найденных ошибок с помощью команды:

Проверку нужно выполнить со всеми разделами, после чего выполнить рестарт системы и в большинстве случаев, это решает вашу проблему.

Проблема с монтирование в fstab

Второй вариант, который может случиться, это повреждение или некорректная конфигурация файла fstab. В моем случае, при загрузке с systemrescuecd и проверки системы, проблем не было обнаружено и это не помогло. Но при открытии fstab я увидел, в конфигурации нет разделов диска для монтирования, а есть только запись о загрузочном диске:

пустой fstab

Чтобы решить вопрос, нужно получить UUID ваших дисков через утилиту blkid:

blkid получить uuid дисков

После этого нужно все данные в fstab, сохранить и перезапустить сервер, если все сделали правильно, то сервер запуститься в обычном режиме.

Linux установлен с USB флешки

usb устройство в fstab

Просто удалите данную строку, если вы теперь не используете флеш-накопитель.

Dualboot конфигурация Windows и Linux

Еще один из вариантов проблемы, замеченный пользователями — это параллельное использование Windows и СentOS на одном компьютере. При загрузке часто возникает ошибка emergency mode при монтировании разделов Windows. Обычное решение проблемы заключается в отключении быстрого запуска Windows.

параметры электропитания windows

отключить быстрый запуск windows

Сохраните изменения и перезапустите ваш сервер. После выполненных рекомендаций, CentOS должен запуститься.


В этой статье объясняется, как загрузить систему CentOS / RHEL 7 и 8 в режим восстановления или аварийный режим.

В CentOS / RHEL 7 и 8 режим восстановления ( Rescue ) и аварийный режим ( Emergency ) являются системными целями, которые заменили концепцию уровней запуска в предыдущих версиях CentOS / RHEL.

Режим восстановления эквивалентен однопользовательскому режиму и требует пароля root.

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

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

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

В аварийном режиме система монтирует корневую файловую систему только для чтения, не пытается монтировать другие локальные файловые системы, не активирует сетевые интерфейсы.

Загрузка в аварийный режим

1. Во время загрузки, когда появляется меню GRUB2, нажмите клавишу e для редактирования.

2. Добавьте следующий параметр в конец строки linux16 в системах x86-64 или строку linuxefi в системах UEFI:

Нажмите Ctrl + a (или Home) и Ctrl + e (или End), чтобы перейти к началу и концу строки.

3. Нажмите Ctrl + x, чтобы загрузить систему с параметром.


Загрузка в режим Rescue

1. Во время загрузки, когда появляется меню GRUB2, нажмите клавишу e для редактирования.

2. Добавьте следующий параметр в конец строки linux16 в системах x86-64 или строк

в системах UEFI: Нажмите Ctrl + a (или Home) и Ctrl + e (или End), чтобы перейти к началу и концу строки.

3. Нажмите Ctrl + x, чтобы загрузить систему с параметром.


Загрузка в Debug Shell

Debug shell systemd обеспечивает shell в процессе запуска, которую можно использовать для диагностики проблем загрузки, связанных с systemd.

Попав в этот шелл, команды systemctl, такие как systemctl list-jobs и systemctl list-unit, могут использоваться для диагностики проблем с загрузкой.

Во время загрузки, когда появляется меню GRUB2, нажмите клавишу e для редактирования.

Добавьте следующий параметр в конце строки linux16 в системах на базе BIOS x86-64 или в строке linuxefi в системах UEFI:


  1. Проверяем правильность время в BIOS
  2. Загружаемся с LiveCD или LiveUSB (например: GParted, SystemRescueCd)
  3. После входа в систему, открываем терминал и получаем root права: sudo -i
  4. Просматриваем, какие диски и какие разделы у нас имеются, командой: fdisk -l
  5. Запускаем проверку целостности файловой системы с исправлением всех ошибок в автоматическом режиме: fsck -y /dev/sda1
  6. Выполняем проверку остальных разделов жесткого диска
  7. Перезагружаем, проверяем.

Комментарии (38)

Спасибо тебе добрый человек. Все заработало.

Спасибо, толковая инфа, мне не помогла, но натолкнула на мысль. Оказалось, в авозагрузке стояла флешка, которую я вынула, и система, не обнаружив оной, сказала "Вай-вай-вай! Нет такого важного (наверное) диска" и отказалась работать. Удалила запись из файла /etc/fstab с записью об автозагрузке и система исцелилась. Ура!

Спасибо. Устанавливал ОС на флешку с другой флешки, а когда вынул установочную - основная отказывалась грузиться так как имела метку sdc

Вот ОН! самый верный совет! Спасибо вам!

все это не удобно, если диск сдох на удаленной машинке, и даже если диск поменяли, удалено его не перемонтировать

спасибо! Все заработало

Спасибо Анне, помогло выставить новые uid и номера разделов в /etc/fstab, я удалял разделы, там вообще другие стояли, посмотрел в gparted и сменил.

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

Автоматизировать запуск FSCK
В конфигурационном файле /etc/default/rcS присвоить переменной FSCKFIX значение yes:
FSCKFIX=yes

И до кучи ошибки ACPI на стареньких материнках в файлик /etc/modprobe.d/options.conf
добавить
options libata noacpi=1

Все заработало спасибо большое!

Спасибо тебе, добрый человек! Все помогло и для Opensuse 42.2 с Windows 10.

Огромное спасибо. Помогло с LinuxMint 18.3.

Спасибо большое, помогло! Linux Mint 18.2 + Windows 10

Премного благодарен. Ваш совет очень помог.
Системы: Linux Mint 18.3 C1innamon; Windows 10 Домашняя V 1709.

Spasibo bolwoe. bratan ty lutwiy

у меня sda1 linux
sda2 extended
sda5 linux swap
когда проверяю sda1 пишет: fsck 1.42.6
e2fsck 1.42.6
/dev/sda1: clean 496547/58925056 files 143010902/2356999200 blocks
******
тоже самое с sda2
/sbin/e2fsck: Attempt to read block from filesystem resulted in short read while trying to open /dev/sda2
Could this be a zero-lenght partition?
********
тоже самое с sda5
error 2 while executing fsck.swap for /dev/sda5


вот такая печенька! И система уже после проверки всё равно идет на emergency mode

Спасибо. Все заработало, но можно было не загружаясь с LiveCD или LiveUSB нажать Enter, тогда откроется командная строка и ввести все туда.(P.s. Там даже sudo не понадобится)

Спасибо, все заработало. fsck нашел ошибки файловой системы dev/sda6, а потом их исправил.

Как определить точную причину, почему Systemd входит в emergency mode

Система Linux при возникновении проблем во время загрузки может переходить в оболочку emergency mode (аварийный режим).

Экран предлагает выполнить команду

для поиска причин неполадок в системе.

Также предлагается выполнить

чтобы система попыталась загрузиться в нормальном режиме.


Вы можете попробовать ввести systemctl default — иногда это действительно помогает, но иногда требуется разрешить проблему, которая стала причиной Emergency mode.

Вывод journalctl -xb довольно обширный и его изучение без фильтров не всегда даёт подсказку, почему выбрасывает в аварийную оболочку. Рассмотрим способы, которые могут помочь отыскать проблему.

1. Поиск проблем с монтированием

Причин, по которой система переходит в Emergency mode не так уж много, обычно это проблемы с монтированием дисков и разделов. Посмотрите, что вам скажут следующие команды?

2. Поиск ошибок

3. Неудачный запуск fsck

Проверьте записи, связанные с fsck:

4. Неудачный запуск любых служб

Следующие команды (они идентичны) выведут список служб, которые не удалось запустить:

5. Поиск по журналу в Emergency mode и Maintenance mode

Вы можете выполнять поиск ошибок по журналу journald без использования команд — возможно, вам это будет удобнее. Поскольку journalctl использует для многостраничного просмотра команду less, то вы можете применять все сочетания клавиш этой утилиты для ваших поисков.

Если вы полагаетесь на функцию поиска (/) и ищите что-то вроде "error", "warning" или "fail", то с помощью -i убедитесь, что выполняется поиск без учёта регистра букв.

Список команд и клавиш для поиска по journalctl (и в целом по less):

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