“볼륨 부트에는 남은 디스크 공간이 0 바이트입니다.”


32

최근 업데이트 후 다음과 같은 경고 메시지가 나타납니다.

The volume boot has only 0 bytes disk space remaining

그러나 내 컴퓨터에는 HD 공간이 충분하지 않습니다. 누구든지 내가 어떻게 해결할 수 있는지 알고 있습니다. 관련이 있으면 Ubuntu 12.04의 대체 설치 이미지의 전체 디스크 암호화 기능을 사용하고 있습니다.


실제로 컴퓨터에 Ubuntu를 설치 한 방법에 따라 다릅니다. 터미널에서 "sudo fdisk -l"을 수행하여 거의 꽉 찬 작은 파티션이 있는지 확인할 수 있습니까?
Paulius Šukys

4
따옴표없이 'df -H -x tmpfs -x devtmpfs'명령을 실행하고 출력을 여기에 붙여 넣으십시오.
fabricator4

이 질문과 답변문제와 관련이 있으며 도움이 될 수 있습니다.
elomage

암호화 된 파티션에 대해 알려진 문제인 것 같습니다. 답변 askubuntu.com/a/230942/231504 는 훌륭합니다. 또한,하지만, 우분투 추적기에 영향을받는 사용자의 수를 증가하십시오 bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/...
pestophagous

답변:


48

모든 커널을 나열하려면
dpkg --get-selections | grep "linux-image-[[:digit:]].*" | tr "\t" ";" | cut -d ";" -f1

결과는 다음과 같습니다.

linux-image-3.19.0-7-generic 
linux-image-3.18.0-13-generic  
linux-image-3.16.0-23-generic

모든 커널을 삭제하지 말고 오래된 커널 만 삭제하십시오!

다음으로 3.16 커널을 제거하겠습니다.
sudo apt-get purge linux-image-3.16.0-23-generic

그런 다음 시스템에서 사용하지 않는 모든 패키지 :
sudo apt-get autoclean && sudo apt-get autoremove


나도 전화를 extra했습니다 (예 : linux-image-3.13.0-40-generic및) linux-image-extra-3.13.0-40-generic. 와 함께 삭제할 수 있습니까 extra?
Mads Skjern

이것은 매우 도움이되었지만 내 문제를 완전히 해결 하지 못했습니다 (오래된 커널을 제거하는 것이 여전히 실패했습니다). 오래된 커널 파일을 수동으로 제거해야했습니다. 을 사용하여 몇 가지 큰 것을 발견했습니다 find /boot/ -type f | xargs du | sort -n. 현재 실행중인 커널은 3.13.0-66-generic이므로 관련 내용을 삭제하지 않도록주의하지만 다음을 제거했습니다 sudo rm /boot/initrd.img-3.13.0-63-generic /boot/initrd.img-3.13.0-65-generic /boot/vmlinuz-3.13.0-65-generic /boot/vmlinuz-3.13.0-63-generic. 마지막으로, 오래된 커널에서 제거를 실행하면 성공합니다.
blong

4
실제로 0 바이트의 여유 공간이 있으면 @blong이 말한 것처럼 작동하지 않습니다. 제거 프로세스에서 일부 파일을 작성해야하고 0 바이트가 남아 있으면 실패합니다.
pomarc

1
오래된 커널을 어떻게 알 수 있습니까? 내 출력은 linux-image-4.10.0-42-generic linux-image-4.13.0-26-generic linux-image-4.13.0-32-generic linux-image-4.13.0-37-generic linux-image입니다. -4.13.0-38-generic linux-image-4.13.0-39-generic linux-image-4.13.0-41-generic linux-image-4.13.0-43-generic linux-image-4.8.0-36 -일반
야곱

25

그 원인은 실제로 오래된 커널 이미지였습니다.
내가해야 할 모든 것을 정리하려면 한 줄을 실행하는 것이 었습니다.

sudo apt-get autoclean && sudo apt-get autoremove

이것은 오래된 커널을 자동으로 인식하여 제거했습니다.


9

/boot시간이 지남에 따라 업그레이드를 수행하는 동안 파티션에 너무 많은 커널 버전이 누적 되었을 수 있습니다 . 이 파티션은 디스크 파티션 과 분리되어있을 가능성이 높습니다 (로 마운트 됨 /). /boot다음과 같이 파티션 공간을 확인할 수 있습니다 (/ boot 행을 찾으십시오).

df -h

오래된 커널을 제거하는 방법대한 좋은 페이지가 있습니다 .

요컨대, 현재 커널 버전을 확인하고 설치된 항목의 목록을 얻은 다음 이전 버전을 apt-get 제거하십시오. 페이지에는 "매직"단일 라이너 명령이있어 모든 작업을 수행 할 수 있습니다. 그러나 자신의 책임하에 사용하십시오.

자세한 지침 :

  1. 유지하려는 현재 커널 버전을 가져 옵니다 .

    uname -r
    
  2. 설치된 모든 커널 목록을 가져옵니다.

    dpkg -l | grep linux-image-
    
  3. 제거하려는 커널에서 apt-get remove를 실행하십시오. 최신이 아닙니다 ! 예를 들면 다음과 같습니다.

    sudo apt-get remove linux-image-2.6.32-22-generic
    

더 많은 메모 :

  • dpkg -l패키지 이름 앞에 (커널) 패키지상태를 알려줍니다 . 예를 들면 다음과 같습니다.

    rc  linux-image-3.13.0-39-generic  ...
    ii  linux-image-3.13.0-40-generic  ...
    
    • 패키지는 "RC"수단은 r은 emoved하고있다 c를 onfiguration 파일. 이것들은 더 이상 제거 할 필요가 없습니다.
    • 패키지가 표시되어 있음 "II"이라 내가 nstallation되고 이 설치 한

    이를 기반으로 설치된 커널 패키지 만 나열 할 수 있습니다.

    dpkg -l | grep "ii.*linux-image-"
    

GUI 도구 Ubuntu Tweak를 사용하는 대체 솔루션 .

Computer Janitor를 설치하고 이동하여 System-> Old Kernel and System-> Unneeded packages를 확인한 다음 Clean을 누릅니다.


3

이 스크립트를 사용하여 현재 버전과 이전 (마지막 1 커널 버전)을 떠나는 다른 모든 이전 커널을 제거하십시오.

KERNELMAGES=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-image/g'`

KERNELHEADERS=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-headers/g'`

for PURGEKERNEL in `echo $KERNELMAGES $KERNELHEADERS`; do

apt-get autoremove -y && apt-get purge $PURGEKERNEL -y

done

명령 행에서 "Paradiesstaub"의 답변을 수행 할 수없는 경우에도 완벽하게 작동했습니다.
험악한

"권한이 거부되었습니다"가 표시됩니다.
Richard Hardy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.