Ошибка initramfs при загрузке linux

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

В этом режиме будет сложно что-то исправить, но можно попытаться понять где находится причина проблемы. В этой статье мы рассмотрим что делать если Linux не загружается с initramfs. Такой проблеме подвержены все дистрибутивы, но мы рассмотрим решения на примере Ubuntu.

Почему Linux не загружается дальше initramfs

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

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

1. Неверный корневой раздел в загрузчике

В данном случае она сообщает, что не может найти раздел /dev/sda10:

Alert: /dev/sda10 does not exist. Dropping to a shell

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

ls /dev/ | grep sd

В этом окружении есть BusyBox, а значит есть большинство утилит Unix. Вы можете примонтировать каждый из этих разделов с помощью команды mount и узнать где находится ваш новый корневой раздел, например:

mkdir /mnt
mount /dev/sda5 /mnt
ls

Вы также можете узнать здесь же UUID данного раздела диска, для этого выполните:

blkid /dev/sda5

В данном случае, корневой раздел имеет имя /dev/sda5. Именно это имя можно передать ядру в конфигурации загрузчика Grub, а можно UUID, но если в этом нет крайней необходимости, то короткое имя использовать гораздо проще. Надо перезагрузить компьютер, в меню Grub выбрать нужную загрузочную запись и нажать клавишу E:

Далее найти пункт, начинающейся со слова linux и в нём параметр root. Его значение вместе со словом UUID надо стереть, а вместо него прописать имя корневого раздела:

После этого система загрузится, а вам останется только создать новый конфигурационный файл grub с помощью команды:

update-grub

2. Повреждённая файловая система

Подобная ошибка может появляться также при серьезных ошибках в файловой системе, которые мешают примонтировать корневой раздел. Обычно, fsck восстанавливает файловую систему автоматически, но если проблема серьезная и грозит потерей данных, утилите надо подтверждение пользователя для работы. Тогда система показывает такую ошибку:

The root filesystem on /dev/sda5 requires a manual fsck

Вы можете прямо здесь же попытаться восстановить файловую систему. Для этого выполните:

fsck -y /dev/sda5

Здесь /dev/sda5 — это корневой раздел, его нужно заменить на свой. Опция -y указывает утилите, что на все вопросы надо ли исправлять блок нужно отвечать утвердительно. После успешного восстановления надо перезагрузить компьютер и попытаться загрузить систему снова.

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

Вылазит initramfs при загрузке Ubuntu

initramfs — файловая система оперативной памяти, которая используется для начального запуска операционных систем на базе ядра Linux. При установке ОС все библиотеки, утилиты и конфигурационные файлы сжимаются в архив, после чего передаются указанной файловой системой в загрузчик, где и продолжается старт системы. Иногда пользователи дистрибутива Ubuntu сталкиваются с тем, что при включении компьютера они попадают в консоль управления именно этой ФС без возможности дальнейшей загрузки системы. Связано это с повреждением потока запуска и восстанавливается достаточно простым методом.

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

exit /dev/mapper/ubuntu--vg-root contains a file system with errors, check forced. Inodes that were part of a corrupted orphan linked list found. /dev/mapper/ubuntu-vg-root: UNEXPECTED INCONSISTENCY; Run fsck MANUALLY. (ie, without -a or -p options) fsck exited with status code 4. The root file system on /dev/mapper/ubuntu--vg-root requires manual fsck.

При возникновении подобной ситуации лучшим методом исправления проблему будет восстановление работы суперблока, а сделать это можно следующим образом:

  1. Загрузите ISO-образ с такой же версией Ubuntu, как установлена на компьютере, с официального сайта и создайте загрузочную флешку. Детальнее об этой процедуре вы можете узнать в другой нашей статье по следующей ссылке.
  2. Подробнее: Инструкция по созданию загрузочной флешки с Ubuntu

  3. При запуске ОС выберите загрузку с флешки, и при отображении окна инсталляции переходите в режим «Try Ubuntu».
  4. Запуск установщика операционной системы Ubuntu в демонстрационном режиме

  5. Здесь отобразится стандартный графический интерфейс. Откройте меню и двойным щелчком ЛКМ по иконке запустите приложение «Терминал». Делается это также зажатием комбинации клавиш Ctrl + Alt + T.
  6. Переход к терминалу Ubuntu при запуске в демонстрационном режиме

  7. Узнайте номер системного раздела жесткого диска с установленной системой, введя команду sudo fdisk -l|grep Linux|grep -Ev 'swap'.
  8. Определение номера системного раздела жесткого диска через терминал Ubuntu

  9. В новой строке вы увидите обозначение, например /dev/sda1. Запомните его, ведь в дальнейшем это потребуется для исправления ошибки.
  10. Отображение номера системного раздела жесткого диска после активации команды в Ubuntu

  11. Запустите процедуру перечисления всех существующих суперблоков, указав sudo dumpe2fs /dev/sda1 | grep superblock. В каждом суперблоке хранится определенное количество метаданных файловой системы, поэтому сбои в их работе и провоцируют отказ загрузки ОС.
  12. Команда для отображения всех суперблоков на жестком диске через терминал в Ubuntu

  13. В новых строках после активации команды отобразится список всех присутствующих в разделе суперблоков.
  14. Отображение всех суперблоков жесткого диска через терминал в Ubuntu

  15. Возьмите за пример любой блок, например, первый. С его помощью будет производиться восстановление ФС. Запуск этой операции осуществляется после ввода sudo fsck -b 32768 /dev/sda1 -y, где 32768 — номер суперблока, а /dev/sda1 — необходимый раздел жесткого диска.
    Восстановление файловой системы жесткого диска через суперблок в Ubuntu

    Благодаря опции -y все изменения будут автоматически приниматься, и при успешном завершении процесса на экране отобразится следующее уведомление:

    fsck 1.40.2 (12-Jul-2007) e2fsck 1.40.2 (12-Jul-2007) /dev/sda1 was not cleanly unmounted, check forced. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information Free blocks count wrong for group #241 (32254, counted=32253). Fix? yes Free blocks count wrong for group #362 (32254, counted=32248). Fix? yes Free blocks count wrong for group #368 (32254, counted=27774). Fix? yes .......... /dev/sda1: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sda1: 59586/30539776 files (0.6% non-contiguous), 3604682/61059048 blocks

  16. Осталось смонтировать системный раздел sudo mount /dev/sda1 /mnt.
  17. Монтирование системного раздела через терминал в Ubuntu

  18. Далее перейдите в него через cd /mnt, чтобы все команды выполнялись непосредственно из самого каталога.
  19. Переход в системный раздел через терминал в операционной системе Ubuntu

  20. Просмотрите содержимое ФС через sudo mkdir test ls -l. Успешное выполнение этой операции говорит о том, что восстановление прошло удачно и можно перезапускать ОС.
  21. Проверка файловой системы после ее исправления в терминале Ubuntu

Иногда даже после успешного исправления рассмотренной проблемы юзеры сталкиваются с ошибками при запуске операционной системы. Чаще всего они связаны с поломкой стандартного загрузчика GRUB. Поэтому придется дополнительно восстановить и этот стандартный компонент. Развернутое руководство о том, как выполняется поставленная задача через Boot-Repair, ищите в материале далее.

Читайте также: Восстановление загрузчика GRUB через Boot-Repair в Ubuntu

По завершении всех процедур флешка с LiveCD Ubuntu вам больше не понадобится. Если возникло желание ее отформатировать и использовать далее для своих целей, советуем ознакомиться с отдельной нашей статьей по проведению этой операции.

Читайте также: Форматирование флешки в Linux

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

Еще статьи по данной теме:

Помогла ли Вам статья?

В данной статье мы рассмотрим варианты решения проблем, когда виртуальный или физический серверы на базе Ubuntu/Mint/Kali не загружаются и отваливается в busybox в момент инициализации initramfs. При этом Linux не загружается, и пользователю доступна только командная строка initramfs.

Initramfs – это начальная файловая система в ОЗУ, основанная на tmpfs, которая не использует отдельное блочное устройство. Как и initrd, она содержит утилиты и скрипты, требуемые для монтирования файловых систем перед вызовом init, который располагается на корневой файловой системе.

ошибка initramfs BusyBox в Ubuntu / Mint / Kali

Проблема с суперблоком

Если Ubuntu свалилась в busybox при инициализации initramfs, возможно на диске оказался испорченный суперблок. Linux хранит несколько копий суперблоков.

Для восстановления в случае такой проблемы, нам нужно загрузиться с образа/диска и запустить Terminal. После загрузки, в терминале вводим команду:

# sudo fdisk -l|grep Linux|grep -Ev 'swap'

Команда вернет информацию о нашем разделе:

/dev/vda2 4096 83884031 83879936 40G Linux filesystem

Запомните имя раздела и укажите его в следующей команде:

# sudo dumpe2fs /dev/vda2 | grep superblock

Команда вернет список запасных суперблоков:

dumpe2fs /dev/vda2 | grep superblock вывод всех сперблоков

Мы будем использовать второй резервный суперблок для замены поврежденного (можно выбрать любой, кроме Primary). Выполним проверку диска с использованием резевного суберблока для восстановления:

# sudo fsck -b 98304 /dev/vda2 -y

Если вы получите вывод:

fsck from util-linux 2.31.1
e2fsck 1.44.1 (24-Mar-2018)
/dev/vda2 is mounted.
e2fsck: Cannot continue, aborting

Нужно отмонтировать раздел:
# umount /dev/vda2

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

fsck from util-linux 2.31.1
e2fsck 1.44.1 (24-Mar-2018)
/dev/vda2 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #231 (32254, counted=32253).
Fix? yes
 Free blocks count wrong for group #352 (32254, counted=32248).
Fix? yes
Free blocks count wrong for group #358 (32254, counted=27774).
Fix? yes
..........
/dev/vda2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/vda2: 85986/905464576 files (0.2% non-contiguous), 3904682/905464576 blocks

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

Ошибка диска fsck

Второй вариант ошибки, наличие следующей строки в окне терминала:

/dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
The root filesystem on /dev/sda1 requires a manual fsck.

busybox initramfs - UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY

Если вы не видите такой ошибки, попробуйте ввести (initramfs) exit в окне терминала. Ошибка может появиться после этого..

В ошибке будет указан том, который требует запуска ручной проверки диска. В командной строке initramfs выполните:

# fsck /dev/sda1 -y

После полной проверки, нужно перезапустить сервер и проверить все ли в порядке.

Ошибка диска: /dev/sda1 does not exist

Проблема с fstab

Если при загрузке сервера вы видите ошибку:

ALERT! /dev/sda1 does not exist. Dropping to a shell.

initramfs в busybox /dev/sda1 does not exist

Скорее всего вы только что установили Linux или то на вашем сервере есть проблемы в fstab. Чаще всего проблема возникает при установке системы с usb-накопителя. Раздел на который ругается система, может быть какой угодно. Как и в первом случае, нам нужно загрузиться с образа системы и выполнить некоторые действия. Проверьте UUID диска командой:

# sudo blkid

Система выдаст что-то подобное:

/dev/sda2: UUID="36cce3d5-cbdb-46f4-adbf-3f9aaa01d729" TYPE="ext4" PARTUUID="fea4dab1-4e12-4327-85c6-76ade18f64e1"

Отсюда уже видно, что система должна загружаться с sda2, а по факту загружается с sda1.

Монтируем наш раздел в любую директорию, например:

# sudo mount /dev/sda2 /mnt

Получаем в директории /mnt весь наш раздел /dev/sda2, находим там файл /etc/fstab и изменяем строку, содержащую /dev/sda1 на:

UUID=36cce3d5-cbdb-46f4-adbf-3f9aaa01d729 / ext4 errors=remount-rw 0 1

Сохраняем файл. Отмонтируем раздел от /mnt и перезагрузимся, если проблема была связана с не неправильным адресом разделе, сервер загрузится.

Так же данный вариант можно решить, загрузившись в emergency. Перемонтируйте корень для записи:

# sudo mount -o remount,rw /

После чего измените fstab и перезапустите сервер.

Проблема с железом

На некоторых материнских платах порты SATA могут получать произвольные номера. Это также может вызвать описанную в предыдущем пункте ошибку. Для исправления ошибки нужно изменить загрузчик grub.

Загрузитесь в режиме emergency или с live-cd и измените файл /boot/grub/grub.cfg

В строке где происходит загрузка раздела, например:

Linux /boot/vmlinuz-4.15.0-70-generic root=/dev/sda1 rw quiet elevator=noop fsck.repair=yes

Измените путь до диска на UUID:

Linux /boot/vmlinuz-4.15.0-70-generic root=UUID=36cce3d5-cbdb-46f4-adbf-3f9aaa01d729 ro quiet elevator=noop fsck.repair=yes

укажите UUID диска в grub.cfg

Главная » Linux » Ubuntu » initramfs ubuntu не загружается. 10 способов решения ошибки initramfs

Опубликовано 14.03.2023

Содержание

  1. Что такое initramfs?
  2. Причины возникновения ошибки initramfs
  3. Способы решения ошибки initramfs
  4. Еще 10 способов решения ошибки initramfs
  5. Заключение

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

Что такое initramfs?

Перед тем, как мы начнем обсуждать ошибку initramfs, давайте разберемся, что это такое. Initramfs (Initial RAM Filesystem) — это временная файловая система, которая создается во время загрузки операционной системы Linux. Она содержит все необходимые модули и драйверы, которые позволяют ядру Linux запуститься на конкретном железе. Во время загрузки операционной системы, ядро сначала загружает initramfs, а затем использует его для загрузки оставшейся части файловой системы.

Причины возникновения ошибки initramfs

Существует несколько причин, почему может возникнуть ошибка initramfs в Ubuntu. Ниже перечислены некоторые из них:

  1. Проблемы с файловой системой. Если во время загрузки системы обнаруживается, что файловая система повреждена или имеет ошибки, это может привести к ошибке initramfs.
  2. Неправильно настроенное ядро. Если в ядре Linux отсутствуют необходимые модули или драйверы для запуска на конкретном оборудовании, это может привести к ошибке initramfs.
  3. Проблемы с оборудованием. Если оборудование, на котором работает Ubuntu, не работает должным образом, это также может привести к ошибке initramfs.
  4. Неправильная установка Ubuntu. Если Ubuntu была установлена неправильно, это может привести к ошибке initramfs.

initramfs ubuntu не загружается

initramfs ubuntu не загружается

Способы решения ошибки initramfs

Существует несколько способов решения ошибки initramfs в Ubuntu. Ниже перечислены некоторые из них:

  1. Проверьте файловую систему. Если ошибка initramfs связана с проблемами файловой системы, вам может потребоваться проверить ее на наличие ошибок. Для этого можно воспользоваться инструментом fsck. Например, чтобы проверить файловую систему на диске sda1, нужно выполнить следующую команду:sudo fsck /dev/sda1.
  2. Переустановите ядро Linux. Если ошибка initramfs связана с отсутствием необходимых модулей или драйверов в ядре Linux. То можно попробовать переустановить ядро. Для этого нужно выполнить следующую команду:sudo apt-get install --reinstall linux-image-$(uname -r).
  3. Исправьте проблемы с оборудованием. Если ошибка initramfs связана с проблемами оборудования, то необходимо исправить эти проблемы. Например, если проблема связана с жестким диском, то нужно заменить его на новый.
  4. Переустановите Ubuntu. Если ошибка initramfs связана с неправильной установкой Ubuntu, то можно попробовать переустановить ее заново. При этом следует убедиться, что вы используете правильный образ диска и правильно выполняете установку.
  5. Восстановите систему из резервной копии. Если вы регулярно создаете резервные копии системы, то вы можете попробовать восстановить систему из последней доступной резервной копии. Это позволит избежать потери данных и вернуть систему в рабочее состояние.

Еще 10 способов решения ошибки initramfs

Также Ошибка initramfs может произойти при загрузке Ubuntu и вызвать некоторые проблемы для пользователей. Однако, есть несколько способов решения этой проблемы. Вот десять способов, которые могут помочь вам решить ошибку initramfs:

  1. Перезагрузите компьютер. Иногда простая перезагрузка компьютера может решить проблему. Попробуйте перезагрузить компьютер и проверить, исправилась ли ошибка.
  2. Попробуйте загрузиться в режиме восстановления. Загрузка в режиме восстановления позволяет пользователю обойти некоторые настройки и загрузить систему в минимальном режиме. Часто это позволяет загрузить систему, которая не загружается нормально.
  3. Используйте Live CD/USB для восстановления. Если компьютер не может загрузиться даже в режиме восстановления, то можно попробовать загрузиться с Live CD или USB. Это позволит вам запустить Ubuntu с внешнего носителя и исправить проблему.
  4. Проверьте файловую систему на наличие ошибок. Ошибки в файловой системе могут вызвать проблемы при загрузке Ubuntu. Вы можете проверить файловую систему на наличие ошибок, используя утилиту fsck.
  5. Проверьте наличие свободного места на диске. Недостаточное количество свободного места на диске может вызвать проблемы при загрузке Ubuntu. Проверьте, достаточно ли свободного места на вашем диске.
  6. Попробуйте изменить параметры загрузки ядра. Вы можете изменить параметры загрузки ядра в меню загрузки Ubuntu, чтобы обойти некоторые проблемы. Например, вы можете попробовать добавить параметр nomodeset, чтобы обойти проблемы с графическими драйверами.
  7. Попробуйте переустановить ядро. Если проблема связана с ядром Linux, то переустановка ядра может помочь исправить проблему.
  8. Проверьте наличие необходимых модулей и драйверов. Если проблема связана с отсутствием необходимых модулей или драйверов в ядре Linux, то можно попробовать установить их.
  9. Проверьте оборудование на наличие проблем. Проблемы с оборудованием могут вызывать ошибку initramfs. Вы можете проверить оборудование на наличие проблем, например, с помощью программы memtest86, которая позволяет проверить оперативную память на наличие ошибок.
  10. Попробуйте восстановить систему из резервной копии. Если вы создали резервную копию системы, то можно попробовать восстановить систему из нее. Это позволит вернуть систему к состоянию, которое было на момент создания резервной копии.

Заключение

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

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

Ubuntu также может встретить вас с подобными проблемами, и «initramfs» – одна из них. Это проблема загрузки Ubuntu, которая возникает из-за сбойных блоков или сбойных секторов в памяти, которые не позволяют загрузиться операционной системе.

Ваша система содержит много важных файлов, поэтому такая ошибка определенно может вызвать панику. Не о чем беспокоиться; В этой статье основное внимание уделяется тому, как решить проблему с initramfs и нормально загрузить Ubuntu. Итак, начнем:

Если на вашем экране отображается ошибка «initramfs», вы уже находитесь в режиме восстановления, что означает, что вы можете вводить команды и выполнять различные операции. Ошибка будет такой:

Вы можете ввести «exit», чтобы получить подробную информацию об ошибке. Обратите внимание, что вы не можете получать подробные сведения об ошибке каждый раз, когда набираете «exit». Как обсуждалось выше, эта ошибка «initramfs» возникает при повреждении загрузочного диска. Вы можете подключить несколько дисков для их проверки, используйте:

или же

Разделы можно просмотреть по имени /dev/sda,/dev/sdb или любому другому. Теперь, чтобы исправить ошибку «initramfs», мы используем   утилиту «fsck», также известную как «проверка целостности файловой системы», которая проверяет и устраняет проблемы файловой системы. Следуйте приведенному ниже синтаксису:

(initramfs) fsck [partitian name (/dev/sdXX)]

Например, если наш раздел называется «/dev/sdb», то команда будет такой:

Нажмите «Enter», команда автоматически удалит поврежденные сектора из памяти. Когда появится запрос, нажмите «y». Чтобы предотвратить появление подсказок, просто используйте опцию «-y» с командой:

(initramfs) fsck/dev/sdb -y

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

(initramfs) reboot

Если перезагрузка не работает, введите «exit». Вот так; ошибка устранена, и Ubuntu загрузится нормально.

Заключение

«Initramfs» ошибка может устрашить вас, но, к счастью, эта ошибка имеет очень простое и простое решение. Эта ошибка возникает, когда ваша память повреждена, особенно диск, содержащий операционную систему, и не позволяет ей загружаться. Чтобы исправить это, просто используйте утилиту «fsck». В этой статье подробно объясняется процесс устранения ошибки «initramfs» для нормальной загрузки Ubuntu.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Понимание процедуры загрузки в 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. Таким образом, просмотр приглашения на вход в систему не обязательно означает, что сервер еще полностью функционирует.
На каждом из перечисленных этапов могут возникнуть проблемы из-за неправильной настройки или других проблем. Таблица суммирует, где настроена определенная фаза и что вы можете сделать, чтобы устранить неполадки, если что-то пойдет не так.

Фаза загрузки Где настроено Как попытаться починить
POST Железо (F2, Esc, F10, или другая кнопка) Замена железа
Выбор загрузочного устройства BIOS/UEFI конфигурация или загрузочное устройство Замена железа или использовать восстановление системы
Загрузка загрузчика (GRUB 2) grub2-install и редактирует в /etc/defaults/grub Приглашение GRUB для загрузки и изменения в /etc/defaults/grub, после чего следует выполнить grub2-mkconfig.
Загрузка ядра Редактирует конфигурацию GRUB и /etc/dracut.conf Приглашение GRUB для загрузки и изменения в /etc/defaults/grub, после чего следует  выполнить grub2-mkconfig.
Запуск /sbin/init Компиляция в initramfs init = kernel аргумент загрузки,
rd.break аргумент загрузки ядра
Обработка initrd.target Компиляция в initramfs Обычно ничего не требуется
Переключение на корневую файловую систему /etc/fstab /etc/fstab
Запуск цели по умолчанию /etc/systemd/system/default.target Запустить rescue.target как аргумент при загрузке ядра

Передача аргементов в 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=emergency.target Входит в минимальный режим, когда загружается минимальное количество системных юнитов.
Требуется пароль root.
Чтобы увидеть, что загружено только очень ограниченное количество файлов юнитов, вы можете ввести команду systemctl list-units.

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». Выберите этот пункт, чтобы получить доступ к параметрам, необходимым для ремонта машины.


Выбрав «Troubleshooting», появится выбор из 4-х опций.

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

ВНИМАНИЕ!

После запуска «Rescue a CentOS System» обычно требуется включить полный доступ к установке на диске. Обычно аварийный диск обнаруживает вашу установку и монтирует ее в каталог /mnt/sysimage. Чтобы исправить доступ к файлам конфигурации и их расположениям по умолчанию, поскольку они должны быть доступны на диске, используйте команду chroot /mnt/sysimage, чтобы сделать содержимое этого каталога реальной рабочей средой. Если вы не используете команду chroot, многие утилиты не будут работать, потому что, если они записывают в файл конфигурации, это будет версия файла конфигурации, существующего на диске восстановления (и по этой причине только для чтения). Использование команды chroot гарантирует, что все пути к файлам конфигурации верны.

Пример использования «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.

Конфигурация dracut рассредоточена по разным местам:

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

Вот так выглядит по умолчанию файл /etc/dracut.conf:

[root@server1 ~]# cat /etc/dracut.conf
# PUT YOUR CONFIG HERE OR IN separate files named *.conf
# in /etc/dracut.conf.d
# SEE man dracut.conf(5)
# Sample dracut config file
#logfile=/var/log/dracut.log
#fileloglvl=6
# Exact list of dracut modules to use. Modules not listed here are not going
# to be included. If you only want to add some optional modules use
# add_dracutmodules option instead.
#dracutmodules+=""
# dracut modules to omit
#omit_dracutmodules+=""
# dracut modules to add to the default
#add_dracutmodules+=""
# additional kernel modules to the default
#add_drivers+=""
# list of kernel filesystem modules to be included in the generic
initramfs
#filesystems+=""
# build initrd only to boot current hardware
#hostonly="yes"
#
# install local /etc/mdadm.conf
#mdadmconf="no"
# install local /etc/lvm/lvm.conf
#lvmconf="no"
# A list of fsck tools to install. If it is not specified, module's
hardcoded
# default is used, currently: "umount mount /sbin/fsck* xfs_db xfs_
check
# xfs_repair e2fsck jfs_fsck reiserfsck btrfsck". The installation is
# opportunistic, so non-existing tools are just ignored.
#fscks=""
# inhibit installation of any fsck tools
#nofscks="yes"
# mount / and /usr read-only by default
#ro_mnt="no"
# set the directory for temporary files
# default: /var/tmp
#tmpdir=/tmp

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

В пределах статьи, подобной этой, невозможно рассмотреть все возможные проблемы, с которыми можно столкнуться при работе с 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.

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

Если вы неправильно настроили монтирование файловой системы, процедура загрузки может просто закончиться сообщением «Give root password for maintenance.». Это сообщение, в частности, генерируется командой fsck, которая пытается проверить целостность файла системы в /etc/fstab при загрузке. Если fsck терпит неудачу, требуется ручное вмешательство, которое может привести к этому сообщению во время загрузки. Убедитесь, что вы знаете, что делать, когда это происходит с вами!

Если упомянуто устройство, которого нет, или если в UUID, который используется для монтирования устройства, есть ошибка, например, systemd сначала ожидает, вернется ли устройство само по себе. Если этого не происходит, выдается сообщение «Give root password for maintenance.». Если это произойдет, вы должны сначала ввести пароль root. Затем вы можете ввести journalctl -xb, как предлагается, чтобы увидеть, записываются ли в журнал соответствующие сообщения, содержащие информацию о том, что не так. Если проблема ориентирована на файловую систему, введите mount -o remount, rw /, чтобы убедиться, что корневая файловая система смонтирована только для чтения, проанализировать, что не так в файле /etc/fstab, и исправить это.

Если вы видите подобный текст, то у вас есть проблема с /etc/fstab:

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

  • Ошибка initializeprintprovider для поставщика inetpp dll
  • Ошибка initialization failed no speaker mic present
  • Ошибка initial start nissan almera
  • Ошибка ingress timeout stream id
  • Ошибка info string length exceeded