Categories: Ubuntu

Не загружается Ubuntu/Mint/Kali с initramfs в BusyBox

В данной статье мы рассмотрим варианты решения проблем, когда виртуальный или физический серверы на базе 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_x000D_e2fsck 1.44.1 (24-Mar-2018)_x000D_/dev/vda2 is mounted._x000D_e2fsck: Cannot continue, aborting

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

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

fsck from util-linux 2.31.1_x000D_e2fsck 1.44.1 (24-Mar-2018)_x000D_/dev/vda2 was not cleanly unmounted, check forced._x000D_Pass 1: Checking inodes, blocks, and sizes_x000D_Pass 2: Checking directory structure_x000D_Pass 3: Checking directory connectivity_x000D_Pass 4: Checking reference counts_x000D_Pass 5: Checking group summary information_x000D_Free blocks count wrong for group #231 (32254, counted=32253)._x000D_Fix? yes_x000D_ Free blocks count wrong for group #352 (32254, counted=32248)._x000D_Fix? yes_x000D_Free blocks count wrong for group #358 (32254, counted=27774)._x000D_Fix? yes_x000D_.........._x000D_/dev/vda2: ***** FILE SYSTEM WAS MODIFIED *****_x000D_/dev/vda2: 85986/905464576 files (0.2% non-contiguous), 3904682/905464576 blocks

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

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

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

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

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

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

# fsck /dev/sda1 -y

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

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

Проблема с fstab

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

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

Скорее всего вы только что установили 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

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 недели ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 недели ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 недели ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 недели ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

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

2 недели ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 недели ago