/boot에 커널이 가득합니다. 무엇을 제거해야 할까요?

/boot에 커널이 가득합니다. 무엇을 제거해야 할까요?

Ubuntu 16.04 서버가 있습니다. unattended-upgrades16.04부터 자동으로 활성화되며  /boot별도의 파티션입니다. 자동 보안 업데이트로 인해 새 커널의 부팅 파티션 공간이 부족합니다.

(가용성 이유로) 시스템을 재부팅할 수 없으므로 머신은 여전히 ​​두 번째에서 마지막 코어를 사용하고 있습니다.

어떤 커널을 제거해야 합니까? 현재, 가장 오래된, 최신 이외의 모든 것?

의견 있으십니까?

또한 최신 커널 상태가 "반 구성"인 것으로 나타났습니다. 이 커널이 작동하지 않을 수 있는데, 이 커널을 제거하고 이전 커널을 사용해야 합니까?

출력 dpkg -l | grep linux-image:

ii  linux-image-4.4.0-21-generic --> old kernel
ii  linux-image-4.4.0-34-generic --> current kernel
ii  linux-image-4.4.0-36-generic --> new kernel
ii  linux-image-4.4.0-38-generic --> new kernel
ii  linux-image-4.4.0-42-generic --> new kernel
ii  linux-image-4.4.0-45-generic --> new kernel
ii  linux-image-4.4.0-47-generic --> new kernel
ii  linux-image-4.4.0-51-generic --> new kernel
ii  linux-image-4.4.0-53-generic --> new kernel
iF  linux-image-4.4.0-57-generic --> new kernel

답변1

이전 커널을 지우려면 purge-old-kernels명령줄 도구를 사용할 수 있습니다.

이 프로그램은 시스템에서 오래된 커널과 헤더 패키지를 제거하여 디스크 공간을 확보합니다. 현재 실행 중인 커널은 절대 제거되지 않습니다. 기본적으로 최신 코어 2개 이상을 유지하지만 사용자는 --keep 매개변수를 사용하여 이 값을 재정의할 수 있습니다. 추가 매개변수는 직접 전달됩니다.apt-get

설치하다purge-old-kernels, 달리기:

sudo apt install byobu

또는

sudo apt install bikeshed

최신 커널을 계속 실행하려면 n:

sudo purge-old-kernels --keep n

예를 들어, g: n=2

sudo purge-old-kernels --keep 2

갱신 grub:

sudo update-grub

답변2

Ubuntu의 경우 Grub2는 자동으로 최신 커널을 표시하고 이전 커널을 숨깁니다. 이를 보려면 시작 시 Shift 키를 누르십시오.

따라서 이전 커널을 제거하기 전에 사용 가능한 최신 커널로 부팅하십시오(grub2는 부팅 시 기본적으로 이를 로드합니다). 사용 중인 코어를 확인하려면 다음 명령을 사용할 수 있습니다.

uname -r

최신 코어를 포함하여 최소 2개 또는 바람직하게는 3개의 코어를 유지하는 것이 좋습니다. 그 이유는 최신 커널로 부팅할 수 없는 경우 부팅할 수 있는 다른 커널이 최소한 1~2개 있기 때문입니다.

이전 커널을 제거하려면 터미널을 열고 현재 커널을 확인하세요.

uname -r 

그런 다음 시스템에 설치된 모든 커널을 나열합니다.

dpkg --list | grep linux-image 

현재 커널보다 낮은 커널을 모두 찾습니다. 선택한 커널을 제거하려면 다음 명령을 실행하십시오.

sudo apt-get purge linux-image-x.x.x.x-generic 

마지막으로 다음 명령을 실행하여 grub2를 업데이트합니다.

sudo update-grub2 

시스템을 다시 시작하세요.

답변3

apt-get autoremove, 정기적으로 실행하면 원하는 것을 달성하는 데 도움이 될 수 있습니다. 실행 중인 커널, 이전 커널 및 두 개의 최신 커널이면 충분합니다.

답변4

이전 커널 중 하나를 부팅합니다.

첫 시도apt autoremove --purge

작동하지 않으면 dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

제거되는 항목을 제어합니다.

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo dpkg -P 그러면 아래 명령에서 listet 커널이 지워집니다.

sudo apt -f install

틀림없이

 sudo update-grub

관련 정보