Ядро Linux «наполовину настроено»

Ядро Linux «наполовину настроено»

Я использовал Debian Wheezy больше года без каких-либо проблем до недавнего времени. Без всякой видимой причины система внезапно решила, что ядро ​​Linux настроено только наполовину, и ни одно из исправлений, которые я нашел в сети, не сработало. В результате aptпытается исправить это каждый раз при выполнении обновлений и терпит неудачу.

Подробности

Симптом

При каждом запуске обновлений aptв какой-то момент будет предпринята попытка исправить ядро, но произойдет сбой, и процесс обновления прервется с сообщением об ошибке, а затем с сообщением о том, что система обновлена.

Любая деятельность по обновлению aptзаканчивается следующим:

Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/dkms 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
E: /usr/sbin/update-initramfs.orig.initramfs-tools - command not found
E: On Debian based systems, update-initramfs from initramfs-tools
E: can be installed with:
E:   apt-get install initramfs-tools
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-4-amd64.postinst line 696.
dpkg: error processing linux-image-3.2.0-4-amd64 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 linux-image-3.2.0-4-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ядро

Практически та же проблема была описана ввопрос на Ask Ubuntu. Принятый ответ указал на проблему с dpkgфайлом статуса. Запись статуса дляlinux-image-3.2.0-4-amd64сказал, что он наполовину настроен.

В качестве первого шага я попробовал следующее:

administrator@Kwheezy:~$ sudo dpkg-reconfigure linux-image-3.2.0-4-amd64
/usr/sbin/dpkg-reconfigure: linux-image-3.2.0-4-amd64 is broken or not fully installed

Переустановка не помогла, значит, проблема в системе.

Решение Ask Ubuntu заключалось в удалении записи из dpkgфайла состояния и последующей переустановке. В моем случае это тоже не сработало. Когда процесс был завершен, dpkgфайл состояния заменил запись другой, которая все еще говорила, что она наполовину настроена, и поведение системы было прежним.

Удачный вывод

Сосредоточимся на сообщениях об ошибках в aptвыводе. Ошибки всегда начинаются с:

/usr/sbin/update-initramfs.orig.initramfs-tools - command not found

Конечно, этот файл не существует. Полезное сообщение сообщает, что его можно установить, установивinitramfs-tools. Это уже было установлено, но я переустановил его. Оказывается, он aptуже делал это сам по себе. Все сообщения об ошибках, следующие за руководством по установкеinitramfs-toolsгенерируется этой попыткой установки, которая никогда не приводит к/usr/sbin/update-initramfs.orig.initramfs-toolsв процессе установки.

Краткое содержание

  • У меня есть последнее доступное ядро ​​Linux из репозитория Wheezy. Это хорошая копия, все зависимости выполнены, и нет сообщений о проблемах с ней у других пользователей.
  • Система сообщает, что она не полностью настроена. Я не нашел способа ни настроить ее, ни заставить систему перестать думать, что она не полностью настроена.

решение1

Разрешение

sudo apt-get remove live-tools
sudo apt-get install --reinstall initramfs-tools
sudo apt-get install -f

Объяснение

Получив более полное представление о системе fixer1234в чате, я определил, что установленный пакет live-toolsконфликтует с initramfs-tools.

При live-toolsустановке он переопределяет /usr/sbin/update-initramfsсвой собственный скрипт и помещает оригинал в /usr/sbin/update-initramfs.orig.initramfs-tools.

live-toolsимеет некоторые проверки работоспособности, которые определяют, находится ли он в работающей системе. Если он не в работающей системе, а в установленной системе, он пытается запустить /usr/sbin/update-initramfs.orig.initramfs-tools, который является правильным скриптом для обновления initramfs.

В системе fixer1234 /usr/sbin/update-initramfs.orig.initramfs-toolsбыл удалён.

Поскольку система является установленной, live-toolsона, вероятно, не нужна, поэтому я и рекомендовал ее удалить.

Вот как работает каждый шаг, предложенный в разделе «Решение» выше:

sudo apt-get remove live-tools

При удалении live-toolsбудет предпринята попытка восстановиться /usr/sbin/update-initramfs.orig.initramfs-toolsдо /usr/sbin/update-initramfs, но поскольку /usr/sbin/update-initramfs.orig.initramfs-toolsне существует, возникнет ошибка.

live-toolsвсе равно будут удалены, и это главное.

Нас все еще не хватает /usr/sbin/update-initramfs.

sudo apt-get install --reinstall initramfs-tools

Чтобы восстановить /usr/sbin/update-initramfs, мы переустанавливаем пакет, который предоставляет этот файл. А именно, initramfs-tools.

sudo apt-get install -f

Установка ядра была не завершена из-за сбоя с live-toolsи initramfs-tools, поэтому для завершения установки и устранения всех проблем с пакетами необходим этот последний шаг.

Теперь у вас должна быть полностью работоспособная система Debian.

(Кстати, эти шаги теоретически работают в Debian 8, Ubuntu 12.04, Ubuntu 14.04, Ubuntu 15.10, Ubuntu 16.04 и Ubuntu 16.10.)

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