- Ubuntu не загружается дальше initramfs
- Почему Linux не загружается дальше initramfs
- 1. Неверный корневой раздел в загрузчике
- 2. Повреждённая файловая система
- Выводы
- Не загружается Ubuntu/Mint/Kali с initramfs в BusyBox
- Проблема с суперблоком
- Ошибка диска fsck
- Ошибка диска: /dev/sda1 does not exist
- Проблема с fstab
- Проблема с железом
- Восстанавливаем свалившийся в busybox из-за ошибки initramfs Linux
Ubuntu не загружается дальше initramfs
Пользователи, которые любят экспериментировать со своей операционной системой время от времени сталкиваются с ошибкой загрузки, когда система выводит приглашение ввода BusyBox с initramfs. Эта ошибка означает, что ядро не может загрузить корневой раздел, та файловая система, к которой у вас есть доступ из этого режима не имеет ничего общего с вашей системой. Это содержимое образа initramfs, которое содержит только самые необходимые компоненты, используемые ядром для загрузки системы.
В этом режиме будет сложно что-то исправить, но можно попытаться понять где находится причина проблемы. В этой статье мы рассмотрим что делать если Linux не загружается с initramfs. Такой проблеме подвержены все дистрибутивы, но мы рассмотрим решения на примере Ubuntu.
Почему Linux не загружается дальше initramfs
Если вы столкнулись с данной ошибкой, то после нескольких десятков секунд загрузки увидите такое сообщение:
Первое, что можно попытаться сделать в таком случае — выполнить команду exit, чтобы система попыталась загрузится и тогда она покажет вам более подробное сообщение об ошибке.
1. Неверный корневой раздел в загрузчике
В данном случае она сообщает, что не может найти раздел /dev/sda10:
Alert: /dev/sda10 does not exist. Dropping to a shell
Очень часто такая ошибка возникает после манипуляций с разделами дисков, особенно изменения их размера. UUID диска меняется и ядро больше не может его найти. Вы можете посмотреть доступные в системе разделы с помощью команды:
В этом окружении есть BusyBox, а значит есть большинство утилит Unix. Вы можете примонтировать каждый из этих разделов с помощью команды mount и узнать где находится ваш новый корневой раздел, например:
mkdir /mnt
mount /dev/sda5 /mnt
ls
Вы также можете узнать здесь же UUID данного раздела диска, для этого выполните:
В данном случае, корневой раздел имеет имя /dev/sda5. Именно это имя можно передать ядру в конфигурации загрузчика Grub, а можно UUID, но если в этом нет крайней необходимости, то короткое имя использовать гораздо проще. Надо перезагрузить компьютер, в меню Grub выбрать нужную загрузочную запись и нажать клавишу E:
Далее найти пункт, начинающейся со слова linux и в нём параметр root. Его значение вместе со словом UUID надо стереть, а вместо него прописать имя корневого раздела:
После этого система загрузится, а вам останется только создать новый конфигурационный файл grub с помощью команды:
2. Повреждённая файловая система
Подобная ошибка может появляться также при серьезных ошибках в файловой системе, которые мешают примонтировать корневой раздел. Обычно, fsck восстанавливает файловую систему автоматически, но если проблема серьезная и грозит потерей данных, утилите надо подтверждение пользователя для работы. Тогда система показывает такую ошибку:
The root filesystem on /dev/sda5 requires a manual fsck
Вы можете прямо здесь же попытаться восстановить файловую систему. Для этого выполните:
Здесь /dev/sda5 — это корневой раздел, его нужно заменить на свой. Опция -y указывает утилите, что на все вопросы надо ли исправлять блок нужно отвечать утвердительно. После успешного восстановления надо перезагрузить компьютер и попытаться загрузить систему снова.
Выводы
В этой статье мы разобрались что делать если в Linux не загружается initramfs, как посмотреть сообщение об ошибке, а также как устранить самые распространённые причины.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Не загружается Ubuntu/Mint/Kali с initramfs в BusyBox
22.11.2019
VyacheslavK
Ubuntu
комментариев 13
В данной статье мы рассмотрим варианты решения проблем, когда виртуальный или физический серверы на базе Ubuntu/Mint/Kali не загружаются и отваливается в busybox в момент инициализации initramfs. При этом Linux не загружается, и пользователю доступна только командная строка initramfs.
Initramfs – это начальная файловая система в ОЗУ, основанная на tmpfs, которая не использует отдельное блочное устройство. Как и initrd, она содержит утилиты и скрипты, требуемые для монтирования файловых систем перед вызовом init, который располагается на корневой файловой системе.
Проблема с суперблоком
Если 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
Команда вернет список запасных суперблоков:
Мы будем использовать второй резервный суперблок для замены поврежденного (можно выбрать любой, кроме 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.
Если вы не видите такой ошибки, попробуйте ввести (initramfs) exit в окне терминала. Ошибка может появиться после этого..
В ошибке будет указан том, который требует запуска ручной проверки диска. В командной строке initramfs выполните:
После полной проверки, нужно перезапустить сервер и проверить все ли в порядке.
Ошибка диска: /dev/sda1 does not exist
Проблема с fstab
Если при загрузке сервера вы видите ошибку:
ALERT! /dev/sda1 does not exist. Dropping to a shell.
Скорее всего вы только что установили Linux или то на вашем сервере есть проблемы в fstab. Чаще всего проблема возникает при установке системы с usb-накопителя. Раздел на который ругается система, может быть какой угодно. Как и в первом случае, нам нужно загрузиться с образа системы и выполнить некоторые действия. Проверьте UUID диска командой:
Система выдаст что-то подобное:
/dev/sda2: UUID="36cce3d5-cbdb-46f4-adbf-3f9aaa01d729" TYPE="ext4" PARTUUID="fea4dab1-4e12-4327-85c6-76ade18f64e1"
Отсюда уже видно, что система должна загружаться с sda2, а по факту загружается с sda1.
Монтируем наш раздел в любую директорию, например:
Получаем в директории /mnt весь наш раздел /dev/sda2, находим там файл /etc/fstab и изменяем строку, содержащую /dev/sda1 на:
UUID=36cce3d5-cbdb-46f4-adbf-3f9aaa01d729 / ext4 errors=remount-rw 0 1
Сохраняем файл. Отмонтируем раздел от /mnt и перезагрузимся, если проблема была связана с не неправильным адресом разделе, сервер загрузится.
Так же данный вариант можно решить, загрузившись в emergency. Перемонтируйте корень для записи:
После чего измените 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
Предыдущая статья Следующая статья
Установка и настройка GLPI и FusionInventory, инвентаризация ИТ инфраструктуры
Установка и использование подсистемы Linux (WSL 2) в Windows 10
Zabbix: установка и базовая настройка системы мониторинга
Zabbix: проверка доступности запросом ICMP Ping
Восстанавливаем свалившийся в busybox из-за ошибки initramfs Linux
Недавно при включении компьютера, Ubuntu меня «порадовала» тем, что решила не загружаться и «свалилась» в busybox в момент инициализации пользовательского пространства (userspace) оно же initramfs. Немного ошарашенный начал разбираться. Оказалось, что мой старенький жёсткий диск дал небольшой сбой, и подпортил суперблок файловой системы. Впрочем, оказалось что это не смертельно, и проблема эта, довольно просто и быстро решается.
Суперблок — это часть на диске, отведенная под служебную информацию файловой системы. В нем хранится информация о разделе: тип файловой системы, размер, статус и информацию о других структурах метаданных. В случае потери информации с суперблока, велик риск потерять всю информацию с раздела. Поэтому Linux хранит несколько копий этой информации — т.е. несколько суперблоков.
Перед тем, как продолжить, я должен предупредить, что не обязательна причина в суперблоке. Такая проблема может возникать и по другим причинам, установить которые можно только имея определенный опыт, либо опытным путем. В любом случае, вся суть проводимых ниже действия, лишь в проверке диска на ошибки, поэтому как минимум ничем не повредит.
Для восстановления нам понадобится загрузочный диск или флэшка с Linux. Загружаемся, и запускаем терминал. В терминале пишем:
sudo fdisk -l|grep Linux|grep -Ev 'swap'
В результате выполнения команды, будет выведен список всех разделов:
/dev/sda2 371306496 976771071 605464576 288.7G 83 Linux
В моем случае это был один раздел. В этом списке нужно найти нужный раздел, и запомнить его. Он понадобится нам дальше. Далее посмотрим список доступных запасных суперблоков:
sudo dumpe2fs /dev/sda2 | grep superblock
В команде выше, /dev/sda2 необходимо заменить на полученный ранее, нужный раздел. В результате выполнения команды, будет выведен список всех суперблоков:
Primary superblock at 0, Group descriptors at 1-19 Backup superblock at 32768, Group descriptors at 32769-32787 Backup superblock at 98304, Group descriptors at 98305-98323 Backup superblock at 163840, Group descriptors at 163841-163859 Backup superblock at 229376, Group descriptors at 229377-229395 Backup superblock at 294912, Group descriptors at 294913-294931 Backup superblock at 819200, Group descriptors at 819201-819219 Backup superblock at 884736, Group descriptors at 884737-884755 Backup superblock at 1605632, Group descriptors at 1605633-1605651 Backup superblock at 2654208, Group descriptors at 2654209-2654227 Backup superblock at 4096000, Group descriptors at 4096001-4096019 Backup superblock at 7962624, Group descriptors at 7962625-7962643 Backup superblock at 11239424, Group descriptors at 11239425-11239443 Backup superblock at 20480000, Group descriptors at 20480001-20480019 Backup superblock at 23887872, Group descriptors at 23887873-23887891 Backup superblock at 71663616, Group descriptors at 71663617-71663635
Из списка запасных суперблоков, выбираем любой кроме Primary и запускаем проверку диска с указанием запасного суперблока:
sudo fsck -b 32768 /dev/sda2 -y
Параметр -y необходим для того, чтобы fsck не спрашивал что делать с каждой найденной ошибкой, а вместо этого ее автоматически исправлял если это возможно. После того, как fsck закончит, результат выполнения будет примерно таким:
fsck 1.40.2 (23-March-2016) e2fsck 1.40.2 (23-March-2016) /dev/sda2 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/sda2: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sda2: 59586/605464576 files (0.6% non-contiguous), 3604682/605464576 blocks
После этого перезагружаемся, отключаем флэшку/вынимаем диск из привода, и всё должно работать. 🙂