Як я можу видалити старі ядра / встановити нові, коли / завантаження заповнене?


31

Я знаю, що це питання задавали багато разів раніше, проте, зі мною, я думаю, це трохи інше.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       224G  5.2G  208G   3% /
udev            1.9G  4.0K  1.9G   1% /dev
tmpfs           777M  260K  777M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            1.9G     0  1.9G   0% /run/shm
/dev/sda2        90M   88M     0 100% /boot
/dev/sda6       1.9G  514M  1.3G  29% /tmp

Мій завантажувальний розділ заповнений.

Поточне ядро:

# uname -r
3.2.0-35-generic

Усі ядра:

# dpkg --list | grep linux-image
ii  linux-image-3.2.0-32-generic    3.2.0-32.51                         Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii  linux-image-3.2.0-34-generic    3.2.0-34.53                         Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii  linux-image-3.2.0-35-generic    3.2.0-35.55                         Linux kernel image for version 3.2.0 on 64 bit x86 SMP
iF  linux-image-3.2.0-37-generic    3.2.0-37.58                         Linux kernel image for version 3.2.0 on 64 bit x86 SMP
iF  linux-image-3.2.0-38-generic    3.2.0-38.60                         Linux kernel image for version 3.2.0 on 64 bit x86 SMP
iU  linux-image-generic             3.2.0.37.45                         Generic Linux kernel image

Тож я подумав видалити загальне ядро ​​3.2.0.32 за допомогою:

# sudo apt-get purge linux-image-3.2.0-32-generic
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 linux-generic : Depends: linux-headers-generic (= 3.2.0.37.45) but 3.2.0.38.46 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Немає успіху.

Коли я намагаюся, apt-get -f installце також не вдається:

# apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.2.0-34 linux-headers-3.2.0-35 linux-headers-3.2.0-34-generic linux-headers-3.2.0-35-generic
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  linux-generic linux-image-generic
The following packages will be upgraded:
  linux-generic linux-image-generic
2 upgraded, 0 newly installed, 0 to remove and 9 not upgraded.
5 not fully installed or removed.
Need to get 0 B/4,334 B of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? y
Setting up initramfs-tools (0.99ubuntu13.1) ...
update-initramfs: deferring update (trigger activated)
Setting up linux-image-3.2.0-37-generic (3.2.0-37.58) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
The link /initrd.img is a dangling linkto /boot/initrd.img-3.2.0-38-generic
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-37-generic /boot/vmlinuz-3.2.0-37-generic
update-initramfs: Generating /boot/initrd.img-3.2.0-37-generic

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-3.2.0-37-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-37-generic.postinst line 1010.
dpkg: error processing linux-image-3.2.0-37-generic (--configure):
 subprocess installed post-installation script returned error exit status 2
Setting up linux-image-3.2.0-38-generic (3.2.0-38.60) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
The link /initrd.img is a dangling linkto /boot/initrd.img-3.2.0-37-generic
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-38-generic /boot/vmlinuz-3.2.0-38-generic
update-initramfs: Generating /boot/initrd.img-3.2.0-38-generic

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-3.2.0-38-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-38-generic.postinst line 1010.
dpkg: error processing linux-image-3.2.0-38-generic (--configure):
 subprocess installed post-installation script returned error exit status 2
dpkg: dependency problems prevent configuration of linux-image-generic:
 linux-image-generic depends on linux-image-3.2.0-37-generic; however:
  Package linux-image-3.2.0-37-generic is not configured yet.
dpkg: error processing linux-image-generic (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of linux-generic:
 linux-generic depends on linux-image-generic (= 3.2.0.37.45); however:
  Package linux-image-generic is not configured yet.
 linux-generic depends on linux-headers-generic (= 3.2.0.37.45); however:
  Version of linux-headers-generic on system is 3.2.0.38.46.
dpkg: error processing linux-generic (--configure):
 dependency problems - leaving unconfigured
Processing triggers for initramfs-tools ...
No apport report written because the error message indicates its a followup error from a previous failure.
No apport report written because MaxReports is reached already
  update-initramfs: Generating /boot/initrd.img-3.2.0-35-generic

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-3.2.0-35-generic with 1.
dpkg: error processing initramfs-tools (--configure):
 subprocess installed post-installation script returned error exit status 1
No apport report written because MaxReports is reached already
Errors were encountered while processing:
 linux-image-3.2.0-37-generic
 linux-image-3.2.0-38-generic
 linux-image-generic
 linux-generic
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

Будь-яка допомога буде дуже вдячна.

Оновлення: я зробив:

sudo rm /boot/*-3.2.0-32-generic /boot/*-3.2.0-34-generic

Після цього наступна проблема з apt-get -f install:

root@localhost:/# apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
  linux-generic
The following packages will be upgraded:
  linux-generic
1 upgraded, 0 newly installed, 0 to remove and 9 not upgraded.
1 not fully installed or removed.
Need to get 0 B/1,722 B of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? y
dpkg: dependency problems prevent configuration of linux-generic:
 linux-generic depends on linux-image-generic (= 3.2.0.37.45); however:
  Version of linux-image-generic on system is 3.2.0.38.46.
 linux-generic depends on linux-headers-generic (= 3.2.0.37.45); however:
  Version of linux-headers-generic on system is 3.2.0.38.46.
dpkg: error processing linux-generic (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error     from a previous failure.
                      Errors were encountered while processing:
 linux-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)


Дивіться мою відповідь про те, коли авторемонт не працює через брак місця.
nslntmnx

Відповіді:


22

Ви не можете використовувати apt-get, коли ваше ядро ​​застаріло.

cd /boot
sudo rm *-2.6.35-6.9-generic
sudo rm *-3.16.0-23-generic

скористайтеся, lsщоб побачити, що знаходиться в папці, видаліть найдавнішу одну або дві потім

sudo apt-get -f install

Тоді ви орієнтуєтесь або на влучну чистку, як на

sudo apt-get purge linux-image-3.2.0-32-generic linux-image-3.2.0-34-generic

або просто продовжуйте з rm.

ви також повинні, sudo update-grubколи вас оштрафують


Команда install перевстановила багато старих ядер, що призвело до повноцінного завантажувального диску. Команда очищення вирішила це для мене.
SPRBRN

Я дотримувався цієї відповіді до цього часу sudo apt-get -f install, потім перезапустив, щоб переконатися, що все добре, і видалив решту, apt autoremoveяк було запропоновано в попередніх командах виводу.
Барт C

10

Мабуть, це працює:

sudo apt-get autoremove 

За даними apt-getman-page:

autoremove використовується для видалення пакунків, які були автоматично встановлені для задоволення залежностей від інших пакетів і тепер більше не потрібні.

3.16.0-39 - це те, що я намагався встановити, але не вдалося, оскільки / завантаження було повним. 3.16.0-38 - це моя поточна версія. Видно, що пропустили -38.

server:~$ uname -r
3.16.0-38-generic
server:~$ sudo apt-get autoremove 
[sudo] password for mikeb: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-3.16.0-30 linux-headers-3.16.0-30-generic
  linux-headers-3.16.0-31 linux-headers-3.16.0-31-generic
  linux-headers-3.16.0-33 linux-headers-3.16.0-33-generic
  linux-headers-3.16.0-34 linux-headers-3.16.0-34-generic
  linux-headers-3.16.0-36 linux-headers-3.16.0-36-generic
  linux-headers-3.16.0-39 linux-headers-3.16.0-39-generic
  linux-image-3.16.0-30-generic linux-image-3.16.0-31-generic
  linux-image-3.16.0-33-generic linux-image-3.16.0-34-generic
  linux-image-3.16.0-36-generic linux-image-3.16.0-39-generic
  linux-image-extra-3.16.0-30-generic linux-image-extra-3.16.0-31-generic
  linux-image-extra-3.16.0-33-generic linux-image-extra-3.16.0-34-generic
  linux-image-extra-3.16.0-36-generic linux-image-extra-3.16.0-39-generic
0 upgraded, 0 newly installed, 24 to remove and 0 not upgraded.

Мені подобається ця відповідь, але вона пропускає деякий посібник, щоб точно знати для чого autoremove.
s3m3n

1
autoremove працює лише в тому випадку, якщо будь-які раніше введені в чергу чергові дії належно виконані. Автомобільна робота не працюватиме, якщо ви вже отримуєте помилку "не залишається місця на пристрої" - ті дії, які раніше стояли в черзі, вийдуть з ладу, і автоматичне переміщення не запуститься. Іншими словами, автомобіль працює ... поки не стане.
user535733

@ user535733 ви праві. Дивіться мою відповідь про те, коли авторемонт не працює через брак місця.
nslntmnx

7

У терміналі виконайте таку команду:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get purge

Ця команда перераховує всі встановлені на даний момент ядра Linux, а потім вибирає всі ті, які наразі не використовуються, та видаляє їх.


2
Можливо, ви б хотіли пояснити, що саме робить ця команда. Це виглядає досить складно: загалом, людей слід попередити від виконання таких команд, як вони цього не розуміють, особливо з важливим для їх системи.
mtdevans

@mtdevans: Я додав, що вищевказана команда перераховує всі встановлені в даний час ядра Linux, потім вибирає всі ті, які наразі не використовуються, а потім видаляє всі ядра, які наразі не використовуються.
Крістіан

4
Команда корисна, просто запустіть частину перед "| xargs" спочатку, щоб перевірити, що ви збираєтесь видалити. Також, | grep -v може знадобитися для збереження останнього ядра, яке ще не використовується, але потрібне.
Роман Сусі

4
це небезпечно, оскільки воно також відповідає linux-libc-dev: amd64
Фредерік Норд

2
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

Якщо виконання вищевказаної команди без "sudo apt-get -y purge" відповідає вашому linux-libc-dev: amd64, ви можете додати крапку з комою до регулярного виразу, щоб не включати її:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ :]*\).*/\1/;/[0-9]/!d' | xargs

Тепер просто переконайтесь, що це добре виглядає, і додайте "sudo apt-get -y purge"


1

Для Ubuntu 12.04 спробуйте це sudo apt-get purge linux-image-[kernel version]

Це видалить будь-яку версію ядра. Якщо у вашій завантажувальній папці багато ядер, не забудьте оновити grub та перезавантажити систему

колишній sudo apt-get purge linux-image-3.11.6 *


2
Проблема полягає в тому, що це більше не працює, коли виникає проблема, коли виникають проблеми із залежністю, як і попереду.
Paŭlo Ebermann

Це працює для мене!
Даніель

0

Багато відповідей кажуть, що використовувати "apt autoremove", але це може не спрацювати, коли / boot заповнений, оскільки apt намагається додати ядра перед видаленням.

Наступний apt autoremove не видалить жодні ядра, згадані в /etc/apt/apt.conf.d/01autoremove-kernels, тому нам потрібно це виправити.

Ось процес, який працював на мене.

Видаліть небажані конфігураційні файли ядра.

sudo dpkg --purge $ (COLUMNS = 200 dpkg -l | grep "linux-image-extra" | grep "^ rc" | tr -s '' | cut -d '' -f 2)

Оновіть /etc/apt/apt.conf.d/01autoremove-kernels, запустивши ...

sudo /etc/kernel/postinst.d/apt-auto-removal

Сподіваємось, влучний autoremove спрацює.

sudo apt autoremove --purge

Якщо ні, то ви можете вручну видалити з / завантаження дуже старі та невикористані ядра.

Спочатку з’ясуйте, яке ядро ​​у вас працює.

унаме -р

Не видаляйте поточне ядро ​​чи попереднє ядро.

sudo rm /boot/initrd.img-V.XX.Y-ZZ-generic

Тепер у вас повинно бути достатньо місця, щоб спробувати влучну авторемонтувати ще раз. Якщо ні, видаліть ще одне дуже старе ядро. Звичайно, зберігайте поточну та наступну найстарішу.


-2

Я сподіваюся, що це може допомогти:

Я зазвичай видаляю старі ядра за допомогою двірника ubuntu-tweak, приємного GUI та простого :)

натисніть на "система", і там з'явиться список старих ядер, просто натисніть на нього і очистіть


1
це сервер ubuntu, і я підключений через шпаклівку. (Але у мене також є доступ до Webmin на сервері)
Marcel

Як я можу встановити цей двірник ubuntu-tweak будь ласка?
Дженні О'Рейлі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.