Ошибка initramfs при установке / обновлении

У меня возникла ошибка при обновлении или запуске любого apt Команда на неделю или около того. Обновление до LTS 18.04 не разрешило его и не удалило все старые ядра. Космос тоже не проблема.

Попытка переустановить initramfs не работает Я получаю ошибку:

   Reading package lists...
Building dependency tree...
Reading state information...
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up linux-image-4.15.0-47-generic (4.15.0-47.50) ...
Setting up initramfs-tools (0.130ubuntu3.7) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for linux-image-4.15.0-47-generic (4.15.0-47.50) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.15.0-47-generic
E: /usr/share/initramfs-tools/hooks/fsck failed with return 1.
update-initramfs: failed for /boot/initrd.img-4.15.0-47-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-4.15.0-47-generic (--configure):
 installed linux-image-4.15.0-47-generic package post-installation script subprocess returned error exit status 1
Processing triggers for initramfs-tools (0.130ubuntu3.7) ...
update-initramfs: Generating /boot/initrd.img-4.15.0-47-generic
E: /usr/share/initramfs-tools/hooks/fsck failed with return 1.
update-initramfs: failed for /boot/initrd.img-4.15.0-47-generic with 1.
dpkg: error processing package initramfs-tools (--configure):
 installed initramfs-tools package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 linux-image-4.15.0-47-generic
 initramfs-tools

У кого-нибудь есть идеи относительно того, что я могу сделать?

Благодарю.

14 ответов

Запуск автоматического удаления и очистки работал в моей ситуации.

apt-get auto-remove && apt-get clean && apt-get update && apt-get upgrade

Для меня это была проблема с пакетом initramfs-tools

Я только что сделал:

# apt remove initramfs-tools

# apt clean

# apt install initramfs-tools

Тогда я больше не получал ошибку

У меня эта ошибка была больше года. Теперь я нашел решение.

cd ~
mkdir initramfs
cd initramfs
cp -r /boot .
cd boot
sudo update-initramfs -ut -b .
sudo cp -r * /boot
sudo apt-get autoremove

Объяснение: /boot находится на другом разделе, на котором недостаточно места для выполнения операции. Решение: выполните обновление на диске, на котором достаточно места, и скопируйте результаты.

Как указал Харальд, проблема заключалась в нехватке места в разделе / ​​boot.

Его решение не сработало для меня, но привело меня непосредственно к тому, что сработало:

cd /boot, тогда lsчтобы посмотреть версии уже имеющихся файлов. затемrm каждый файл, имеющий несколько версий, обязательно удалите все, кроме самой новой, затем sudo apt update

sudo apt remove initramfs-tools
sudo apt clean
sudo apt install initramfs-tools
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get clean
sudo apt-get update 
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get -f install
sudo dpkg --configure -a

Это было для меня решением.

Похожий вопрос имеет такое решение:

sudo apt-get autoclean
sudo apt-get clean
sudo apt-get update 
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get -f install
sudo dpkg --configure -a

Дополнительно убедитесь, что эта команда:

ll /usr/share/initramfs-tools/hooks/fsck

возвращает этот вывод:

-rwxr-xr-x 1 root root 2468 Sep 18  2018 /usr/share/initramfs-tools/hooks/fsck*

У меня тоже была эта пробема. Мой /bootраздел был заполнен. Итак, я получал ошибки initframsкомпиляция при попытке запуска apt-update. Мое решение состояло в том, чтобы удалить старые ядра, чтобы освободить место, следуя инструкциям Lekensteyn в: Как мне освободить больше места в /boot?

В нем будут перечислены все образы ядра и заголовки, установленные на данный момент:

      ~ % kernelver=$(uname -r | sed -r 's/-[a-z]+//')
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve $kernelver

linux-headers-5.4.0-94
linux-headers-5.4.0-94-generic
linux-headers-5.4.0-96
linux-headers-5.4.0-96-generic
linux-headers-5.4.0-99
linux-headers-5.4.0-99-generic
linux-image-5.4.0-94-generic
linux-image-5.4.0-96-generic
linux-image-5.4.0-99-generic

Вы можете очистить старый linux-headersа также linux-imageпакеты с помощью apt-get purgeс осторожностью (помните, что нельзя удалять пакеты, связанные с используемым ядром), например:

      sudo apt-get purge linux-image-5.4.0-94 linux-image-5.4.0-96 linux-headers-5.4.0-94 linux-headers-5.4.0-96

Это должно позаботиться также о сопоставлении genericпакеты.

После этого я побежал

      sudo apt-get auto-remove && sudo apt-get clean && sudo apt-get update && sudo apt-get upgrade

и ошибки были исправлены.

У меня только что была очень похожая проблема, когда я делал sudo apt autoremove и не удалось установить файлы ядра для ядра, которого у меня нет. мой uname -a показывает, что я использую ядро ​​версии 5.0.0-20 и работает ls -al /boot показывает только это и ядро ​​5.0.0-17 установлено. Тем не мение, apt неожиданно обнаружил ошибки и попытался установить файлы в моем /boot для старых ядер, включая 5.0.0-15, 4.18.0-17, 4.13.0-45. Что странно.

Поэтому я полагаю, что каким-то образом они изменили логику dkms (или что-то, связанное с initramfs) и проверяет некоторые другие местоположения, чтобы увидеть, могут ли быть установлены ядра, а затем выполняет обновления этих ядер и заменяет отсутствующие файлы.

Я не уверен, что именно это исправить, но я сделал:

sudo apt purge *5.0.0-15* *4.18.0-17* *4.13.0-45* 
#check carefully that it's not removing anything you need though, this is a hammer to crack a nut

ls -al /lib/modules 
# which revealed lots of old module folders that I removed with ...
sudo rm -rf /lib/modules/4.* 
# and similarly for the 5.0.0-15 modules

Тогда я сделал:

ls -al /usr/src/ 
# which again showed old source trees that I pruned with
sudo rm -rf sudo rm -rf /usr/src/linux-headers-4.*

Тогда я сделал:

locate -e 4.13.0 
# which found old kernel files in
ls -al /var/lib/initramfs-tools/ 
# so I removed with
sudo rm -rf /var/lib/initramfs-tools/4*

У меня проблемы с очень туго /boot папка по историческим причинам и поэтому удалила старые файлы ядра с:

sudo rm -i /boot/**4* 
# and similar for all but my current and next oldest kernels
# -i is interactive mode so you have to answer 'y' to remove
# that's a really useful safety check, 'sudo rm' is a dangerous tool!

Наконец я побежал:

sudo apt -f install

Что закончилось, как ожидалось, и вернуло систему в ожидаемое состояние, не пытаясь установить посторонние ядра. Я не проверял, как я пошел, поэтому не могу гарантировать, какая часть исправила это, но это не было вредным, чтобы очистить эти старые файлы из AFAICT.

Помимо проверки моего /var/log/apt/history.log файл, это, кажется, начало этой конкретной ошибки:

Start-Date: 2019-07-01  17:59:10
Commandline: /usr/bin/unattended-upgrade
Upgrade: linux-tools-common:amd64 (4.15.0-52.56, 4.15.0-54.58)
End-Date: 2019-07-01  17:59:16

Start-Date: 2019-07-01  17:59:22
Commandline: /usr/bin/unattended-upgrade
Install: linux-image-5.0.0-20-generic:amd64 (5.0.0-20.21~18.04.1, automatic), linux-modules-extra-5.0.0-20-generic:amd64 (5.0.0-20.21~18.04.1, automatic), linux-modules-5.0.0-20-generic:amd64 (5.0.0-20.21~18.04.1, automatic)
Upgrade: linux-image-generic-hwe-18.04-edge:amd64 (5.0.0.17.73, 5.0.0.20.76), linux-image-extra-virtual-hwe-18.04-edge:amd64 (5.0.0.17.73, 5.0.0.20.76)
Error: Sub-process /usr/bin/dpkg returned an error code (1)
End-Date: 2019-07-01  18:00:10

Но это может быть ложным флагом, так как для меня ограниченное / загрузочное пространство может быть причиной error code (1),

У меня была эта проблема на двух отдельных машинах сегодня после выполнения apt update а также apt upgrade кроме моего был для linux-image-4.15.0-48-generic. (Ubuntu 18.04.2)

Мое исправление было так (воспроизведено на обеих машинах):

sudo rm /var/lib/dpkg/info/linux-image-4.15.0-48-generic.postinst
sudo dpkg --configure -a
sudo apt-get update

Затем переустановите пакет:

sudo apt install linux-image-4.15.0-48-generic

Это установит пакет на установку вручную и заменит файл *.postinst.

Попробуйте очистить неиспользуемые ядра. Если проблема не устраняется, удалите все изображения initrd с помощью

sudo rm /boot/initrd.img*

затем сгенерируйте новые образы 'initrd' для всех существующих существующих ядер

sudo update-initramfs -c -k all

Ни одно из приведенных выше предложений не работает для меня. Я пытаюсь запустить очистку от старых ядер, и мне говорят запустить dpkg --configure -a, но когда я это делаю, я получаю сообщение об ошибке ниже, и что бы я ни делал, я не могу найти решение.

dpkg --configure -a Настройка инструментов initramfs (0.136ubuntu6.7) ...update-initramfs: отсрочка обновления (активирован триггер) Обработка триггеров для инструментов initramfs (0.136ubuntu6.7) ...update-initramfs: Генерация /boot/initrd.img-5.13.0-41-genericE: amd64-microcode: не удалось создать или добавить ранние initramfs к initramfs /sbin/iucode_tool: /lib/firmware/intel-ucode: невозможно открыть: нет такого файл или каталог E: intel-microcode: не удалось создать или добавить ранние initramfs к initramfs

cpio: пустая строка игнорируется

Это очень разочаровывающая петля. Любые идеи?

Лоуренс

Я следовал всем советам здесь, и ничего не помогло. Я исправил это, убедившись, что раздел boot/efi смонтирован, чего в моем случае не было. /etc/fstab был настроен неправильно из-за несоответствия partuuid/uuid/lable. Затем я обновил и обновил без ошибок, после чего обновил grub и перезагрузился.

ошибка initramfs при установке/обновлении

У меня по-прежнему была эта проблема даже после удаления старых ядер. Я имел дело с загрузочным разделом размером 250 МБ, который, похоже, уже недостаточно велик...

Если вы пробовали все остальное, дополнительным способом освобождения места в /boot может быть переключение алгоритма сжатия, который initramfs использует для создания образов initrd.

Откройте следующий файл:

      sudo vim /etc/initramfs-tools/initramfs.conf

Проверьте, что установлено COMPRESS. В моем случае это было:

      COMPRESS=lz4

Алгоритм xz значительно уменьшит размер образа initrd.img-xxx. Просто сделав следующее изменение, он был уменьшен примерно на 50%.

      COMPRESS=xz

Это происходило со мной. В итоге /boot был заполнен.

Проверьте пространство загрузочного раздела с помощью df -h

Затем освободите место с помощью: Как мне освободить больше места в /boot?

Другие вопросы по тегам