Почему старые initrd файлы удаленных ядер заполняющийся / раздел начальной загрузки?

На нескольких машинах Ubuntu я постоянно сталкиваюсь с проблемой раздела полной начальной загрузки, хотя я всегда удаляю все старые ядра. Проблема, кажется, происходит как многие 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 файлы вручную, то они будут сгенерированы снова, как только я пытаюсь сделать обновление.

Какова могла быть причина этой проблемы и как я могу избавиться от тех файлов постоянно?

13
задан 30 January 2018 в 02:37

2 ответа

Вы должны проверить частично удаленные ядра с помощью

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 , чтобы иметь только 2 недавних ядра.

Вы можете переустановить установленные ядра с их initramfses:

sudo apt-get install --reinstall \
$(dpkg -l linux-image-\* | grep ^ii | awk '{print $2}')
13
ответ дан 23 November 2019 в 03:40

Если вы уже использовали dpkg для очистки ядер / заголовков, и если вы уже проверили dpkg -l и по-прежнему не видите установленных там ядер / заголовков, но вы по-прежнему видят ссылки на эти старые ядра в / boot в форме файлов initrd-img , то правильный способ удалить эти ссылки и файлы - с помощью update-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- 104 и 4.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

для одновременного удаления нескольких ядер, но по какой-то причине этого не произошло. работать на меня.

3
ответ дан 23 November 2019 в 03:40

Другие вопросы по тегам:

Похожие вопросы: