Вопрос или проблема
После перезагрузки удаленного сервера ошибка начала появляться сразу после консоли grub, и Ubuntu не загружается. Версия Ubuntu 16.04. Сервер с 64 ГБ оперативной памяти. Я новичок в этих темах, любая помощь будет приветствоваться.
Я не смог загрузить предыдущие ядра, та же ошибка возникает.
Ошибка в режиме восстановления:
Recovery mode
Также добавляю некоторую дополнительную информацию из PTUUID
PTUUID
Из комментариев…
memtest прошел без ошибок на 64 ГБ оперативной памяти.
Давайте проверим вашу файловую систему на ошибки.
Чтобы проверить файловую систему на вашем разделе Ubuntu…
- загрузитесь в меню GRUB
- выберите Дополнительные параметры
- выберите Режим восстановления
- выберите Доступ к корню
- введите в командной строке
sudo fsck -f /
- повторите команду
fsck
, если есть ошибки - введите
reboot
Если по какой-то причине вы не можете сделать вышеперечисленное…
- загрузитесь с Ubuntu Live DVD/USB
- запустите
gparted
и определите, какой /dev/sdaX является вашим разделом Ubuntu EXT4 - выйдите из gparted
- откройте окно терминала
- введите
sudo fsck -f /dev/sdaX
# заменяя X на номер, который вы нашли ранее - повторите команду fsck, если есть ошибки
- введите
reboot
В итоге я так и не смог исправить ошибку, поэтому переустановил ядро.
Пообщавшись с коллегой, я попробовал еще одно решение — исправить ошибку с помощью инструмента BootRepair. Инструмент нашел некоторые ошибки и, кажется, что-то исправил, но первоначальная ошибка (initrd слишком большой) сохранилась. После этого я выдохся и устал, поэтому решил переустановить.
Всем спасибо, особенно @heynnema.
После переустановки все снова работает.
Ответ или решение
Ошибка "initrd too big" может быть вызвана различными факторами, и её устранение требует комплексного подхода. Это особенно важно, когда вы имеете дело с матерым сервером, работающим на Ubuntu 16.04, как в вашем случае. Всестороннее понимание системы и корректировка различных аспектов может помочь решить данную проблему. Давайте рассмотрим возможные этапы решения.
Теория
Ошибка "initrd too big" в Ubuntu может возникнуть по следующим причинам:
-
Ограничения BIOS/UEFI: Некоторые старые системы BIOS имеют ограничение на размер инициализационного диска (initrd), и если он превышает это ограничение, то система не сможет загрузиться.
-
Недостаточное место в разделе /boot: Если раздел /boot заполнен, это может привести к ошибкам при создании новых initrd-файлов в процессе обновления ядра.
-
Проблемы с файловой системой: Ошибки в файловой системе могут также приводить к неправильному формированию initrd или неправильной работе загрузчика.
-
Программные ошибки: В редких случаях может быть ошибка в самом программном обеспечении, влияющая на создание или обработку initrd-файлов.
Пример
В приведённом вами описании есть несколько ключевых моментов, которые показывают, как можно выявить источник проблемы:
- Проверка файловой системы: Выполнение fsck на корневом разделе и в режиме восстановления показало, что вы ищете ошибки в файловой системе, которые могут мешать загрузке.
- Перезагрузка с Live CD/USB: Это позволяет изолировать проблему файловой системы от обычной загрузки системы, обеспечивая более безопасное восстановление.
- Использование BootRepair: Техническое решение, такое как BootRepair, позволяет автоматически исправить общие проблемы с загрузкой, но в вашем случае ошибка осталась.
- Повторная установка ядра: Это чрезвычайная мера, которая потребовала значительных ресурсов времени и усилий, но в конечном итоге привела к успешному решению.
Применение
Пошаговое руководство по устранению ошибки:
-
Проверка пространства на /boot:
- Загрузитесь с Ubuntu Live CD/USB.
- Откройте терминал и смонтируйте свое системное хранилище командой:
sudo mount /dev/sdaX /mnt
где
X
– это номер вашего корневого раздела. - Проверьте свободное место на разделе /boot:
df -h /mnt/boot
Если он переполнен, попробуйте удалить старые и ненужные ядра:
sudo apt-get autoremove --purge
-
Проверка и восстановление файловой системы:
- Используя Live CD/USB, выясните, какой раздел отвечает за ваш корневой каталог с помощью
gparted
. - Выполните проверку:
sudo fsck -f /dev/sdaX
где
X
– номер вашего корневого раздела. Повторите команду, если были выявлены ошибки.
- Используя Live CD/USB, выясните, какой раздел отвечает за ваш корневой каталог с помощью
-
Проверка и повторная генерация initrd:
- После освобождения места на /boot и исправления файловой системы, попробуйте вручную создать initrd:
sudo update-initramfs -u
- После освобождения места на /boot и исправления файловой системы, попробуйте вручную создать initrd:
-
Настройка UEFI/BIOS:
- Проверьте настройки BIOS/UEFI на наличие ограничений на размер загружаемого initrd. Если ваш BIOS старый, версия может иметь ограничения, и стоит рассмотреть возможность обновления BIOS, если это необходимо.
-
Если ошибка осталась нерешенной:
- Рассмотреть опции обновления ядра: В редких случаях ошибка может быть связана с самой версией ядра. Можно вручную установить другое ядро, чтобы устранить возможно связанные ошибки.
- Сброс конфигурации загрузчика (например, GRUB):
- Выполните восстановление GRUB:
sudo grub-install /dev/sda sudo update-grub
- Выполните восстановление GRUB:
-
Обратиться за помощью:
Если проблема не решается, возможно, необходимо проанализировать более конкретные признаки или логи ошибок. Обращение к сообществам Ubuntu или специализированным форумам может помочь выявить проблему.
Заключение
Устранение ошибки "initrd too big" требует систематического подхода и разумного управления ресурсами системы, такими как место на /boot и состояние файловой системы. Применение вышеуказанных шагов может помочь восстановить загрузочную способность вашей системы Ubuntu. Ваша методичность в диагностике, используя такие инструменты как BootRepair и fsck, уже говорит о правильном направлении работы. На будущее, проводите регулярные обновления и мониторинг состояния раздела /boot, чтобы избежать подобных ситуаций.