Ubuntu 16.04 서버가 있습니다. unattended-upgrades
16.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