update-initramfs: /boot/initrd.img-4.15.0-112-generic이 값 1로 실패했습니다.

update-initramfs: /boot/initrd.img-4.15.0-112-generic이 값 1로 실패했습니다.

설명하다:

dist-upgrade를 실행할 때 다음 세부 정보에 문제가 있습니다.

1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_US:",
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LC_TERMINAL = "iTerm2",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Setting up initramfs-tools (0.136ubuntu6.6) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.136ubuntu6.6) ...
update-initramfs: Generating /boot/initrd.img-4.15.0-112-generic
W: Possible missing firmware /lib/firmware/ast_dp501_fw.bin for module ast
Error 24 : Write error : cannot write compressed block
E: mkinitramfs failure lz4 -9 -l 24
update-initramfs: failed for /boot/initrd.img-4.15.0-112-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:
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

누구든지 이 문제를 해결할 수 있나요?

답변1

모든 출력에 숨겨진 실제 오류 메시지는 Write error : cannot write compressed block새 initramfs 이미지를 생성하는 데 사용할 수 있는 여유 공간이 부족하여 압도적으로 발생합니다. 압축되지 않은 이미지를 수용한 다음 압축된 버전으로 교체하려면 폴더에 충분한 공간이 필요하다는 점을 명심하세요 /boot. 하지만 lz4 압축 알고리즘을 사용하고 있으므로 크기 차이가 크지 않을 수 있습니다(20% 미만인 것 같습니다. 나).

문제를 개선할 수 있는 몇 가지 다른 방법이 있습니다. /boot 디렉토리를 세밀하게 조사하고 안전하게 재배치/제거할 수 있는 항목을 찾는 것 외에 이것이 첫 번째 접근 방식이 되어야 합니다.

  1. 새 initrd 파일을 생성할 수 있는 추가 여유 공간이 충분하지 않은 경우 시스템에 제거할 수 있는 이전 커널 패키지가 있는지 확인하고 해당 initrd 파일을 사용해야 합니다. 터미널 에뮬레이터를 실행하고 의 출력을 검사하여 dpkg --list | grep '^linux-'현재 부팅 중인 커널과 일치하지 않는 버전 문자열을 찾으면 의 출력에서 ​​이를 빠르게 확인할 수 있습니다 uname -r. 이 기준을 충족하는 일부 패키지가 있고 패키지 업데이트를 성공적으로 완료하기 위해 이를 폐기하려는 경우 나중에 해당 패키지 이름을 인수로 제공하기만 하면 됩니다 sudo dpkg --purge.
  2. 실행 중인 커널 버전에 대한 패키지만 설치되어 있는 경우 현재 initrd 파일을 /boot 디렉토리에서 재배치하고 패키지 업데이트를 수행할 수 있는지 확인할 수 있습니다. 이는 물론 새로운 커널 버전의 Shiny를 사용하는 데 도움이 됩니다. initramfs를 사용하면 재배치된 이전 initramfs를 안전하게 삭제할 수 있습니다. 사용 중인 쉘 인스턴스의 작업 디렉토리가 /boot와 다른 파일 시스템에 있다고 가정하면 다음과 같습니다(일반 영어: cd먼저 다른 파티션의 일부 폴더로 이동해야 합니다. 그렇지 않은 경우 /tmp 폴더는 마운트된 tmpfs 파티션이고 cd /tmp) 다음을 실행합니다.
# This'll provide a useful report of the files that get moved incase the package
# update fails and you need to put them back where you found them
sudo mv -iv /boot/*initrd "$(pwd)"

# Now time to do a little housekeeping on the package manager and see if
# the update will complete successfully
sudo apt autoremove
sudo apt autoclean
sudo apt --fix-broken install
sudo dpkg --configure -a

여전히 동일한 오류가 발생하고 여유 공간 문제가 해결되었다고 확신하는 경우 현재 시스템에 존재하는 initramfs-tools 패키지에 실제로 문제가 있다는 결론을 내릴 수 있으므로 가져오십시오. 다음 명령을 사용하여 시퀀스를 원래 상태로 복원합니다.

sudo apt remove initramfs-tools
sudo apt clean
sudo apt -y install initramfs-tools

관련 정보