В этом кратком руководстве объясняется, как исправить ошибку Busybox Initramfs на Ubuntu.
Я использую Ubuntu 20.04 LTS в качестве дистриба на моем ноутбуке Dell Inspiron.
Сегодня я включил его, и процесс загрузки упал до оболочки BusyBox, и в итоге я получил сообщение initramfs.
Насколько я помню, я не сделал ничего плохого.
Я не отключал его принудительно.
Вчера все работало отлично!
Когда я его сегодня включил, то попал в оболочку BusyBox:
BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs)
Я не могу пройти дальше этого экрана.
Также он не показывает, в чем именно проблема.
Я вижу только пустую оболочку busybox.
Я не знал, что мне делать в этот момент.
Поэтому я просто передал команду «exit», чтобы посмотреть, что произойдет.
А потом я увидел настоящую ошибку:
(initramfs) exit /dev/sda1 contains a file system with errors, check forced. Inode 4326476 extent tree (at level 1) could be narrower, IGNORED. /dev/sda1: Inode 4326843 extent tree (at level 1) could be narrower, IGNORED. /dev/sda1: Inode 4327012 extent tree (at level 1) could be narrower, IGNORED. /dev/sda1: Inode 4329004 extent tree (at level 1) could be narrower, IGNORED. /dev/sda1: Inodes that were part of a corrupted orphan linked list found. /dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY. (i.e., without -a or -p options) fsck exited with status code 4. The root filesystem on /dev/sda1 requires a manual fsck. BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs)
Как видно из вышеприведенного вывода, раздел /dev/sda1 поврежден.
В файловой системе этого раздела есть ошибки.
Если вы когда-либо сталкивались с подобной проблемой, просто следуйте инструкциям, приведенным ниже.
Для тех, кто задается вопросом, BusyBox – это программный пакет, который объединяет множество стандартных утилит UNIX в один небольшой исполняемый файл.
Он обеспечивает замену большинства утилит, которые вы обычно найдете в GNU fileutils, shellutils и т. д.
Initramfs – это начальная файловая система RAM, основанная на tmpfs.
Она содержит инструменты и скрипты, необходимые для монтирования файловых систем перед вызовом двоичного файла init в реальной корневой файловой системе.
Исправим ошибку Busybox Initramfs на Ubuntu
Чтобы устранить ошибку initramfs в Ubuntu, вам необходимо восстановить файловую систему в поврежденном разделе с помощью команды «fsck»:
(initramfs) fsck /dev/sda1 -y
Теперь она начнет автоматически исправлять все ломаные блоки в файловой системе.
Через пару минут вы увидите следующий результат:
/dev/sda1: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sda1: 497733/30531584 files (1.5% non-contiguous), ........
Теперь введите «reboot» и нажмите ENTER, чтобы перезагрузить систему!
(initramfs) reboot
Скрестите пальцы и дождитесь перезагрузки системы!
Если все прошло хорошо, ваша система загрузится без проблем.
В данной статье мы рассмотрим варианты решения проблем, когда виртуальный или физический серверы на базе 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 выполните:
# 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
Пользователи, которые любят экспериментировать со своей операционной системой время от времени сталкиваются с ошибкой загрузки, когда система выводит приглашение ввода 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 ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
The “initramfs boot problem” on Ubuntu or Linux Mint is a situation when a computer does not boot up properly and instead of going straight to the login screen, drops you to the BusyBox shell with the initramfs command-line prompt.
This error usually occurs when the partition containing the operating system got corrupted.
Luckily this problem has a very easy and straightforward solution and in this note i will show how to fix it.
The BusyBox shell with the initramfs prompt usually appears after booting the computer if the partition containing the operating system got corrupted:
BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.3) built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs)
Type exit
to find out the exact name of the corrupted partition:
(initramfs) 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. (i.e., without -a or -p options) fsck exited with status code 4. The root filesystem on /dev/mapper/ubuntu--vg-root requires a manual fsck. BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.3) built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs)
To solve the “initramfs boot problem” on Ubuntu or Linux Mint, you need to fix the filesystem errors on the corrupted partition using the fsck
command:
(initramfs) fsck /dev/mapper/ubuntu--vg-root -y
Once the filesystem is repaired, reboot the computer:
...
/dev/mapper/ubuntu--vg-root: ***** FILE SYSTEM WAS MODIFIED *****
/dev/mapper/ubuntu--vg-root: 725778/7512064 files (0.8% non-contiguous), 1160813/3002163 blocks
(initramfs) reboot
Was it useful? Share this post with the world!
(@mial)
Участник Admin
Присоединился: 5 лет назад
Записи: 267
Создатель темы 27/07/2019 5:17 пп
Вопрос: Что делать если при запуске выскакивает надпись BusyBox v1.30.1 (Debian 1:1.30.1-4) built-in shell (Bash) Enter ‘help’ for a list of built-in commands
Проблема в том, что не получается смонтировать корневую файловую систему. Чтобы лучше понять причину, нужно ответить на вопрос: До этого система работала или эта ошибка сразу после установки?
Если раньше система работала, а потом перестала
Если раньше система работала, а потом перестала, значит по каким-то причинам повредилась файловая система — нужно выполнить проверку диска.
Для этого в консоли наберите
exit
То есть:
BusyBox v1.17.1 (Ubuntu 1:1.17.1-10ubuntu1) built-in shell (ash)
Enter 'help' for a list of built-in commands
(initramfs) exit
После этого будет показано что-то вроде:
/dev/sda1: Unexpected …
fsck exited ….
The root filesystem on /dev/sda1 requires manual fsck.
После этого используйте следующую команду:
fsck /dev/sda1
Обратите внимание, что если у вас другое имя раздела или его номер, то замените данные на свои. Например на /dev/sdb1 или /dev/sdc1.
Если система не загружается сразу после установки
Если система не загружается сразу после установки, значит в загрузчики просто неправильно указано название диска.
Установить правильный диск можно изменив параметры загрузки ядра, но для этого нужно знать, какой именно диск указывать.
Для этого наберите
exit
и посмотрите, какой диск система пытается загрузить.
Затем измените параметры загрузки ядра. Для этого:
1. Начните перезагружать систему.
2. Чтобы прервать загрузку GRUB (первый шаг) во время запуска компьютера нажмите и удерживайте клавишу SHIFT.
3. Затем нажмите клавишу «e» и вы перейдёте к редактированию настроек загрузки.
4. Если на экране отсутствует нужная нам строка, пролистните курсорными клавишами вниз и найдите строку, начинающуюся с linux.
5. Найдите строку, содержащую root=/dev/sdxX. В этой строке sdxX должна быть вашим /, то есть корневым разделом. Вам нужно исправить текущее значение на верное, которое мы узнали чуть ранее. Если вы совершенно не представляете, какая буква и какой номер у вашего раздела, то попробуйте варианты:
- root=/dev/sda1
- root=/dev/sdb1
- root=/dev/sdc1
- root=/dev/sdd1
- root=/dev/sda2
- root=/dev/sdb2
- root=/dev/sdc2
- root=/dev/sdd2
6. Когда всё готово нажмите Ctrl+x или F10, чтобы загрузка продолжилась с установленными опциями.
После успешной загрузки в систему поменяйте имя загружаемого диска. Например, в моём случае имя диска оказалось /dev/sdс1 (с буквой c). Тогда команда для изменения загрузочного диска будет выглядеть так:
sudo grub-install --recheck /dev/sdc
sudo grub-mkconfig -o /boot/grub/grub.cfg
Вместо /dev/sdc подставьте имя вашего диска или флэшки.
Пример решения подобной проблемы: https://hackware.ru/?p=2801#7