После изменения раздела системного диска система не загружается, переходит в «Dracut Emergency Shell». Как мне заставить ее загрузиться?

После изменения раздела системного диска система не загружается, переходит в «Dracut Emergency Shell». Как мне заставить ее загрузиться?

Фон

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

У системного диска также была проблема с загрузкой в ​​правильном режиме kernel, которую я, похоже, не мог исправить (я следовал всем инструкциям grub, но он просто не загружался правильно kernelпо умолчанию, только если вы вручную выбирали правильный). Поэтому я решил, что лучшим способом будет просто выполнить новую установку на Fedora Serverновый диск, и это исправит проблему загрузки по ходу дела.

Что случилось

Новый диск был намного больше, поэтому я разбил его немного по-другому во время процесса установки. Затем я извлек привод и вставил новый и старый системные диски в другой сервер, который был у меня поблизости. Из предосторожности я сохранил с fstabнового системного диска, зная, что на нем есть раздел UUIDs.

Есть много способов перемещать вещи, и я решил, что мне нужен чистый корневой раздел на новом системном диске. Я подумал, что, ddвозможно, смогу это сделать, но я привык использовать его, когда разделы имеют одинаковый размер, и был немного не уверен, поэтому вместо этого я просто переформатировал корневой раздел ("/") с помощью gparted. Затем я переместил файлы с помощью обычных инструментов ОС. Затем я вырезал и вставил UUIDматериал из новой установки и вставил его в очень нестандартный fstabс сервера, который я чинил.

Все прошло отлично.

Затем я попытался загрузить систему. Она загрузилась, затем добралась до grubзагрузчика, автоматически выбрала нужное ядро ​​и понеслась! ... Пока не перестала!

Он должен был "показать экран загрузки Plymouth" или что-то в этом роде, сделать паузу, а затем выдать кучу предупреждений о тайм-ауте от чего-то, называющего себя dracut. Отсюда я сделал снимок экрана с помощью своего телефона. Там написано:

Warning: Could not boot.
Starting Dracut Emergency Shell...
Warning: /dev/disk/by-uuid/<a uuid> does not exist
Generating "/run/initramfs/rdsosreport.txt"

затем следует предложение использовать journalctlи, возможно, сохранить rdsosreport.txtдля сообщения об ошибках.

ACK! Что делать? Я искал везде и всюду это Warning [...] does not existи dracut emergency shellто, что было упомянуто выше. Nada!

решение1

Обновить fstab

Необходимо обновить /etc/fstabфайлы с правильным UUID раздела.

Обновление криптотаба

Если ваш предыдущий раздел был зашифрован, вам необходимо удалить запись из/etc/crypttab

Если ваш новый раздел зашифрован, вам необходимо добавить соответствующую запись в/etc/crypttab

Регенерировать initramfs

После обновления /etc/fstabфайла /etc/crypttabвам необходимо обновить образ initramfs с помощью dracut.

Вы можете обновить образ dracut из аварийной оболочки dracut, запустив

# dracut --hostonly --regenerate-all --force
Рекомендации

решение2

Сообщение:

Warning: /dev/disk/by-uuid/<uuid> does not exist

является важной подсказкой.

Оказывается, корневой раздел UUIDхранится в двух местах в grub2части раздела современного Fedora Server /boot. Но в этом сценарии на самом деле есть три UUIDпроблемы.

Переформатирование корневого раздела («/») фактически изменило UUID.Итак, новое UUIDдолжно быть сначала обнаружено, а затем помещено в правильные места. Есть много способов найти, UUIDsно один инструмент командной строки для этого blkid- как в этом примере:

# blkid
/dev/sda1: UUID="64bbac09-1a12-4bea-8873-212ffb56f2a8" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="primary" PARTUUID="8a09913a-fdb2-42a0-98e3-6b89e16374d2"

Обратите внимание, что для каждого раздела есть два, UUIDsпоказанных этим инструментом; вам нужен первый из них. Обратите внимание также, что непривилегированные пользователи не могут запускать blkid.

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

  1. В /etc/fstabстроке, где описано монтирование корневого раздела, и;
  2. В /boot/grub2.cfgстроке настройки параметров ядра. Самый быстрый способ найти его — поискать первый, UUIDесли он у вас еще есть. Или поискать "set kernelopts="root=UUID=", и;
  3. В /boot/grub2/grubenvстроке, которая похожа на строку, указанную в /boot/grub2.cfgфайле. Найдите:kernelopts=root=UUID=

Не забудьте изменить только один новый UUID и оставить все остальное как есть. Возможно, сделайте резервную копию файла перед редактированием, на всякий случай!

Связанный контент