чистка старих ядер не може видалити старі файли initrd


14

Не можу пояснити, чому ... Я припускаю, що просто не видалити їх вручну, тому деякі вказівки будуть вдячні. Ось ls мого / boot каталогу (очевидно, я запускаю 3.13.0-51 ядро):

-rw-r--r-- 1 root root  1164671 Apr 15 09:03 abi-3.13.0-51-generic
-rw-r--r-- 1 root root   165762 Apr 15 09:03 config-3.13.0-51-generic
drwxr-xr-x 5 root root     1024 Apr 30 14:33 grub
-rw-r--r-- 1 root root 22431280 Nov 26 14:16 initrd.img-3.13.0-36-generic.old-dkms
-rw-r--r-- 1 root root 22427261 Nov 26 14:16 initrd.img-3.13.0-37-generic.old-dkms
-rw-r--r-- 1 root root  9098067 Nov 26 18:00 initrd.img-3.13.0-39-generic.old-dkms
-rw-r--r-- 1 root root  9109727 Feb  5 15:22 initrd.img-3.13.0-40-generic.old-dkms
-rw-r--r-- 1 root root  9110419 Jan 18 02:29 initrd.img-3.13.0-43-generic.old-dkms
-rw-r--r-- 1 root root  9109659 Apr  5 23:11 initrd.img-3.13.0-44-generic.old-dkms
-rw-r--r-- 1 root root  9109097 Apr  5 23:01 initrd.img-3.13.0-46-generic.old-dkms
-rw-r--r-- 1 root root  5814104 Apr 30 14:13 initrd.img-3.13.0-48-generic
-rw-r--r-- 1 root root 22483793 Apr 30 13:52 initrd.img-3.13.0-48-generic.old-dkms
-rw-r--r-- 1 root root  9124331 Apr 30 14:28 initrd.img-3.13.0-49-generic.old-dkms
-rw-r--r-- 1 root root 22496134 Apr 30 13:59 initrd.img-3.13.0-51-generic
-rw-r--r-- 1 root root  4112384 Apr 30 12:16 initrd.img-3.13.0-51-generic.old-dkms
drwx------ 2 root root    12288 Aug  4  2014 lost+found
-rw-r--r-- 1 root root   176500 Mar 12  2014 memtest86+.bin
-rw-r--r-- 1 root root   178176 Mar 12  2014 memtest86+.elf
-rw-r--r-- 1 root root   178680 Mar 12  2014 memtest86+_multiboot.bin
-rw------- 1 root root  3389875 Apr 15 09:03 System.map-3.13.0-51-generic
-rw------- 1 root root  5818368 Apr 15 09:03 vmlinuz-3.13.0-51-generic

Чорт - вибачте за форматування ...
Крістофер Скотт

Ви завжди можете редагувати публікацію та відформатувати її, виділивши текст та клацнувши піктограмою над текстовим полем. або чекайте, коли хтось зробить це за вас.
user68186

У мене ніколи не було файлів * .old-dkms. Що ти зробив, щоб їх мати?
jarno

@jarno Їх створює DKMS Dell (Динамічна система управління ядрами) для модулів, не включених до основного ядра. Наприклад nvidiaй bbsswitchджерело при компіляції може замінити /boot/initrd.imgтак зробити резервну копію , яка може бути відновлена , якщо dkmsвикористовується для видалення змін. Я сьогодні працюю над тим, щоб оновити свій rm-kernelsскрипт bash, щоб видалити їх застарілими .old-dkms.
WinEunuuchs2Unix

@jarno Відповідно до моєї відповіді нижче, перегляд сценарію bash більше не потрібен. Люди просто потребують одноразового ручного процесу, щоб видалити ті, /boot/*.old-dkmsщо належать до видалених ядер.
WinEunuuchs2Unix

Відповіді:


10

Видалити їх безпечно вручну. Також схоже, що подано звіт про помилку: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=717584

Я можу повідомити про те, що відбувається тут з ядром 3.13.0-54 та ядром 3.13.0-55.

-rw-r--r-- 1 root root 1.2M Jun 17 20:03 abi-3.13.0-55-generic
-rw-r--r-- 1 root root 1.2M Jun 19 05:04 abi-3.13.0-57-generic
-rw-r--r-- 1 root root 162K Jun 17 20:03 config-3.13.0-55-generic
-rw-r--r-- 1 root root 162K Jun 19 05:04 config-3.13.0-57-generic
drwxr-xr-x 5 root root  12K Jul 11 15:54 grub
-rw-r--r-- 1 root root  11M Jul  7 21:37 initrd.img-3.13.0-54-generic.old-dkms
-rw-r--r-- 1 root root  27M Jul  4 13:37 initrd.img-3.13.0-55-generic
-rw-r--r-- 1 root root  27M Jul  4 13:37 initrd.img-3.13.0-55-generic.old-dkms
-rw-r--r-- 1 root root  27M Jul  6 18:28 initrd.img-3.13.0-57-generic
-rw-r--r-- 1 root root 173K Mar 12  2014 memtest86+.bin
-rw-r--r-- 1 root root 174K Mar 12  2014 memtest86+.elf
-rw-r--r-- 1 root root 175K Mar 12  2014 memtest86+_multiboot.bin
-rw------- 1 root root 3.3M Jun 17 20:03 System.map-3.13.0-55-generic
-rw------- 1 root root 3.3M Jun 19 05:04 System.map-3.13.0-57-generic
-rw------- 1 root root 5.6M Jun 17 20:03 vmlinuz-3.13.0-55-generic
-rw------- 1 root root 5.6M Jun 19 05:04 vmlinuz-3.13.0-57-generic

Дякуємо за посилання на помилку. Переглянувши його, я виявив, що виправлення було зроблено вище за течію в квітні 2017 року. Це врятувало мене переглядом сценарію bash, як я відповів нижче.
WinEunuuchs2Unix

Так! Насправді я випадково помітив сьогодні вранці, що ті старі файли dkms успішно видаляються. Приємний збіг там.
Nicomachus

@ WinEunuuchs2Unix о, здається, моє виправлення ввійшло в якийсь реліз Ubuntu. Відповідний звіт про помилку Launchpad тут . Яку версію dkms ви використовуєте?
jarno

@jarno В даний час я працюю, 2.2.0.3але я не маю уявлення, яка версія працювала, коли застарілі initrd.img*.old-dkmsфайли залишилися позаду.
WinEunuuchs2Unix

@ WinEunuuchs2Unix dkms 2.2.0.3-1.1ubuntu5.14.04.9 (в Ubuntu 14.04), схоже, не має виправлення. Навіть 16.10 використовується версія 2.2.0.3. Тож я не знаю, що видалили файли .old-dkms у вашій системі.
jarno

3

Ви можете запустити команду за rm /boot/*.old-dkmsдопомогою привілеїв Root. Однак переконайтесь, що видалені * .old-dkms файли не потрібні старим ядрам, які, можливо, ви встановили. Ви можете побачити список встановлених на даний момент ядер, виконавши йогоdpkg-query -l "linux-image-[0-9]*" | grep -e "^ii" .


0

Я планував змінити свій rm-kernelsскрипт bash для видалення цих старих резервних копій, якщо ядро ​​було видалено за допомогою sudo apt purge *<kernel_version>*. Однак під час дослідження звітів про помилки я виявив, що це було виправлено вище в потоці в квітні 2017 року.

Якщо ви не заперечуєте запускати додатки GUI як root, ви також pkexec nautilusможете знайти застарілі резервні копії для видалення:

boot-initrd.img.old-dkms

У моїй системі Nautilus показує ядра версії 4.4.8, 4.9.21і 4.10.10встановлюється і може використовувати .old-dkmsрезервні копії. Виділені копії - це застарілі резервні копії, які я видалив.

ПРИМІТКА: pkexec потрібна настройка набору політик. Він призначений для заміни gksuта gksudoякі ви будете бачити посилання багато разів в історичних повідомленнях.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.