제거 된 커널의 오래된 initrd 파일이 / boot 파티션을 채우는 이유는 무엇입니까? 10M Jan 30 10:03 initrd.img-4.4.0-45-generic -rw-r–r– 1

여러 우분투 컴퓨터에서 나는 항상 모든 오래된 커널을 제거하지만 전체 부팅 파티션의 문제에 끊임없이 직면하고 있습니다. initrd관련 커널이 실제로 설치되어 있지 않더라도 부트 파티션에 많은 파일이 있기 때문에 문제가 발생하는 것 같습니다 . 예를 들어 :

root@Jacobi:/boot# ls -lah
insgesamt 202M
drwxr-xr-x  3 root root 3,0K Jan 30 10:03 .
drwxr-xr-x 25 root root 4,0K Jan 30 10:03 ..
-rw-r--r--  1 root root 1,2M Dez 11 15:36 abi-4.4.0-104-generic
-rw-r--r--  1 root root 1,2M Jan  9 22:28 abi-4.4.0-109-generic
-rw-r--r--  1 root root 1,2M Jan 19 14:06 abi-4.4.0-112-generic
-rw-r--r--  1 root root 187K Dez 11 15:36 config-4.4.0-104-generic
-rw-r--r--  1 root root 187K Jan  9 22:28 config-4.4.0-109-generic
-rw-r--r--  1 root root 187K Jan 19 14:06 config-4.4.0-112-generic
drwxr-xr-x  5 root root 1,0K Jan 30 10:03 grub
-rw-r--r--  1 root root  10M Jan 30 10:03 initrd.img-3.13.0-39-generic
-rw-r--r--  1 root root  10M Jan 30 10:02 initrd.img-4.4.0-101-generic
-rw-r--r--  1 root root  10M Jan 30 10:02 initrd.img-4.4.0-103-generic
-rw-r--r--  1 root root  38M Jan 30 10:02 initrd.img-4.4.0-104-generic
-rw-r--r--  1 root root  38M Jan 30 10:02 initrd.img-4.4.0-109-generic
-rw-r--r--  1 root root  10M Jan 30 10:03 initrd.img-4.4.0-38-generic
-rw-r--r--  1 root root  10M Jan 30 10:03 initrd.img-4.4.0-45-generic
-rw-r--r--  1 root root  10M Jan 30 10:02 initrd.img-4.4.0-59-generic
-rw-r--r--  1 root root  10M Jan 30 10:02 initrd.img-4.4.0-77-generic
-rw-r--r--  1 root root  10M Jan 30 10:02 initrd.img-4.4.0-78-generic
-rw-r--r--  1 root root  10M Jan 30 10:02 initrd.img-4.4.0-81-generic
-rw-r--r--  1 root root 179K Jan 28  2016 memtest86+.bin
-rw-r--r--  1 root root 181K Jan 28  2016 memtest86+.elf
-rw-r--r--  1 root root 181K Jan 28  2016 memtest86+_multiboot.bin
-rw-------  1 root root 3,8M Dez 11 15:36 System.map-4.4.0-104-generic
-rw-------  1 root root 3,8M Jan  9 22:28 System.map-4.4.0-109-generic
-rw-------  1 root root 3,8M Jan 19 14:06 System.map-4.4.0-112-generic
-rw-------  1 root root 6,8M Dez 11 15:36 vmlinuz-4.4.0-104-generic
-rw-------  1 root root 6,8M Jan  9 22:28 vmlinuz-4.4.0-109-generic
-rw-------  1 root root 6,8M Jan 19 14:06 vmlinuz-4.4.0-112-generic

그러나 linux-image-4.4.0-104-generic 및 linux-image-4.4.0-109-generic 만 설치됩니다.

root@Jacobi:/boot# dpkg -l linux-image-\* | grep ^ii
ii  linux-image-4.4.0-104-generic       4.4.0-104.127 amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-109-generic       4.4.0-109.132 amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-104-generic 4.4.0-104.127 amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-109-generic 4.4.0-109.132 amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP

불필요한 initrd 파일을 수동으로 삭제하면 업그레이드를 시도하자마자 다시 생성됩니다.

이 문제의 원인은 무엇이며 어떻게 해당 파일을 영구적으로 제거 할 수 있습니까?



답변

부분적으로 제거 된 커널을 확인해야합니다.

dpkg -l linux-image-\* | grep ^rc

예를 들어 제거하십시오 sudo apt-get purge linux-image-4.4.0-101-generic.

삭제하면에서 initramfs 생성 규칙이 제거됩니다 /var/lib/initramfs-tools/.

도움이되지 않으면 initramfs 목록에서 수동으로 제거 할 수 있습니다.

sudo rm /var/lib/initramfs-tools/3.13.0-39-generic
sudo rm /var/lib/initramfs-tools/4.4.0-101-generic
sudo rm /var/lib/initramfs-tools/4.4.0-103-generic
sudo rm /var/lib/initramfs-tools/4.4.0-38-generic
sudo rm /var/lib/initramfs-tools/4.4.0-45-generic
sudo rm /var/lib/initramfs-tools/4.4.0-59-generic
sudo rm /var/lib/initramfs-tools/4.4.0-77-generic
sudo rm /var/lib/initramfs-tools/4.4.0-78-generic
sudo rm /var/lib/initramfs-tools/4.4.0-81-generic

보통 나는 실행할 purge-old-kernels다음 sudo apt-get autoremove만이 최근의 커널을 가지고.

설치된 커널을 초기화하여 다시 설치할 수 있습니다 :

sudo apt-get install --reinstall \
$(dpkg -l linux-image-\* | grep ^ii | awk '{print $2}')


답변

이미 dpkg커널 / 헤더를 제거하는 데 사용 하고 이미 확인한 dpkg -l후에도 여전히 커널 / 헤더가 설치되어 있지 않은 경우에도 파일 형식으로 이러한 이전 커널대한 참조가 표시됩니다. 이러한 참조 및 파일을 제거하는 것은 명령을 사용하는 것입니다./bootinitrd-imgupdate-initramfs

예를 들어, 4.4.0-109설치 만 되었지만 여전히 다음에 표시되는 경우 /boot:

-rw-r--r--  1 root root  10M Jan 30 10:02 initrd.img-4.4.0-103-generic
-rw-r--r--  1 root root  38M Jan 30 10:02 initrd.img-4.4.0-104-generic
-rw-r--r--  1 root root  38M Jan 30 10:02 initrd.img-4.4.0-109-generic

당신은 안전하게 제거 할 수 있습니다 4.4.0-1044.4.0-103에서 /boot다음 명령을 :

$ sudo update-initramfs -d -k 4.4.0-103-generic
$ sudo update-initramfs -d -k 4.4.0-104-generic
$ sudo update-initramfs -c -k all

처음 두 명령 initramfs은에있는 파일뿐만 아니라 생성 규칙 에서 해당 커널에 대한 참조를 삭제합니다 /boot. 마지막 명령은 initramfs에게 initrd.img업데이트 된 규칙에 따라 파일 을 재생성하도록 지시 합니다.

이론적으로도 사용할 수 있습니다

$ sudo update-initramfs -d -k 4.4.0-{103,104}-generic

여러 커널을 한 번에 삭제하지만 어떤 이유로 든 작동하지 않습니다.


답변