Чи не завантажується 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 e2fsck 1.44.1 (24-Mar-2018) / dev / vda2 is mounted. e2fsck: Can not 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