it-swarm-tr.com

Önyükleme menüsünü temizlemek için eski çekirdek sürümlerini nasıl kaldırırım?

Ne zaman yeni bir Linux çekirdeği kurduğumda, grub_config içinde kalıyor ve açılış menüsünü her seferinde daha uzun yapıyor.

Yüklü paketleri manuel olarak arayabilir ve kaldırabilirim.

Ubuntu onları temizlemek veya önyükleme listesinde görünmelerini engellemek için daha kolay bir yöntem sunuyor mu?

698
ImaginaryRobots

16.04 ve daha yeni Ubuntu sürümleri

Sudo apt autoremove

Bu komut, bir bağımlılığı çözmek için otomatik olarak kurulan paketleri kaldırır ancak artık bağımlı değildir. Bu, linux-headers-* ve linux-image-* eski sürümlerini içerir. (Çekirdeğin yedek bir versiyonunu bir geri dönüş olarak bırakarak, bu süreç hakkında da akıllıca!)

11.10 ve daha yeni Ubuntu sürümleri

GRUB2 ve tüm çekirdekleri göstermesi

b2 'nin en son sürümleri bunt' da kurulu en yeni çekirdeği otomatik olarak görüntüler ve kurduğunuz eski çekirdeği gizler.

GNU GRUB

grub ifadesini göremiyorsanız - tuşuna basmayı unutmayın Shift önyükleme yaparken.

Görebileceğiniz gibi, yalnızca en son çekirdek görüntülenir.

Gösterilen seçeneği tercih ederseniz ( Enter) o zaman tüm eski çekirdekler görünür hale gelir ve önyüklenebilir hale gelir.

GNU GRUB Previous versions

Eski çekirdekleri kalıcı olarak silme

İlk kullanılabilir çekirdeğe sahip ilk açılış.

Eski çekirdekleri silmenin birkaç yolu vardır. Şahsen, dokunmadım Computer Janitor çünkü bu, bilgisayarınızın önerilerini kırdığı için onaylandı.

sinaptik

Alternatif bir --- Synaptic (Sudo apt install synaptic)

linux-image arayın, bir çekirdeğe sağ tıklayın ve tam kaldırma işlemini seçin ve sonunda çekirdeği silmek için ygula düğmesine tıklayın.

Synaptic Package Manager

Aramayı tekrarlayın, ancak bu kez linux-header için tekrarlayın - daha önce seçilen çekirdek resim için ilişkili başlıkları silebilirsiniz.

Synaptic ne kaldırmaya çalıştığınızı doğrulamaya çalışmasa da ... yanlışlıkla en yeni çekirdeğinizi silebilirsiniz - ya da hatta bu aracı kullanarak tüm çekirdeklerinizi silinmez hale getirerek terk edebilirsiniz bunt !.

Hangi çekirdeği kullandığınızı kontrol etmeyi unutmayın:

uname -r

Sonuç şuna benzer olurdu:

Terminal <uname -r>

Sonucu ve numarayı hatırlayın - ilgili resmi veya başlığı silmediğinizden emin olun.

Öneri

Benim tavsiyem, en son da dahil olmak üzere en az iki veya tercihen üç tane çekirdek tutmaktır. Tavsiyenin nedeni, en son hangi çekirdeğin önyükleme yapamayacağınız veya kırılmış kablosuz gibi gerilimli bir kabiliyete sahip olamayacaksanız, önyüklenecek en az bir/iki çekirdeğe sahip olmanızdır.

600
fossfreedom

İlk olarak, en son çekirdeği kullandığından emin olmak için Sisteminizi yeniden başlatın. Ardından terminali açın ve mevcut çekirdeğinizi kontrol edin:

uname -r 

BU KERNELİ ÇIKARMAYIN!

Sonra, sisteminizde kurulu tüm çekirdekleri görüntülemek/listelemek için aşağıdaki komutu yazın.

dpkg --list 'linux-image-*'

Şu anki çekirdeğinizden daha düşük olan bütün çekirdeği bulun. Hangi çekirdeğin kaldırılacağını bildiğinizde, kaldırmak için aşağıdan devam edin. Seçtiğiniz çekirdeği kaldırmak için aşağıdaki komutları çalıştırın.

Sudo apt-get purge linux-image-x.x.x-x-generic 

Son olarak, grub2'yi güncellemek için aşağıdaki komutları çalıştırın

Sudo update-grub2 

Sisteminizi yeniden başlatın.

382
penreturns

Eski çekirdekleri kaldırmak için tek astarım (bu aynı zamanda disk alanını boşaltır)

dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p' | xargs Sudo apt-get -y purge

Açıklama (unutmayın, |, önceki komutun çıktısını diğerine girdi olarak kullanır)

  • dpkg --list kurulu tüm paketleri listeler
  • grep linux-image, yüklü linux görüntülerini arar
  • awk '{ print $2 }' sadece 2. sütunu (paket adı olan) çıkarır
  • sort -V, öğeleri sürüm numarasına göre sıraya koyar
  • sed -n '/'`uname -r`'/q;p' geçerli çekirdekten önceki satırları yazdırır
  • xargs Sudo apt-get -y purge bulunan çekirdekleri temizler

sed invocation'ın açılması:

  • -n, sed öğesinin sessiz olduğunu söyler
  • `uname -r` geçerli yüklü çekirdek yayınını çıktılar - çıktıyı komutun bir parçası olarak içerecek şekilde backticks'e ekleriz (bunu $(uname -r) olarak da görebilirsiniz)
  • /something/q, 'bir şey' ile eşleştiğinizde durma diyor (bu durumda, bir şey çıktısı uname -r) - / çevreleyen bir ifade
  • p yazdırıldı
  • ; komut ayırıcısıdır, bu nedenle /something/q;p bir şeyle eşleştiğinizde istifa diyor, basar

tamamen, sed -n '/'`uname -r`'/q;p', satırları geçerli çekirdek adıyla eşleşene kadar yazdırır.

Paranoyaksanız (benim gibi), son kısmı xargs echo Sudo apt-get -y purge yapabilirsiniz, böylece eski çekirdekleri temizleme komutu yazdırılır, daha sonra çalıştırılmadan önce beklenmeyen hiçbir şeyin bulunmadığını kontrol edebilirsiniz.


Başlıkları kaldırmak için değiştirilmiş sürüm:

dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs Sudo apt-get -y purge
dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs Sudo apt-get -y purge

Not: sed çağrısı değiştirildi. "$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")", yalnızca "-generic" olmayan veya uname -r'den benzer olmayan sürümleri (ör. "3.2.0-44") çıkarır.


Görüntüleri ve başlıkları kaldırmak için hepsi bir arada sürüm (yukarıdaki iki sürümü birleştirir):

echo $(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p') $(dpkg --list | grep linux-headers | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p') | xargs Sudo apt-get -y purge
283
David Kemp

Ubuntu 16.04+:

$ Sudo apt autoremove
...
The following packages will be REMOVED:
  linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic linux-tools-4.4.0-57 linux-tools-4.4.0-57-generic

Ubuntu 15.10 ve altı:

Bunu en kolay ve en hızlı yol olarak buluyorum. En son çekirdeğin yanı sıra iki tane daha tutar:

Sudo apt-get install bikeshed
Sudo purge-old-kernels

Tutulan ilave çekirdeklerin sayısını değiştirmek için:

Sudo purge-old-kernels --keep 3
60
bmaupin

Girişleri Grub 2'den Çıkarma Girişler, /etc/grub.d klasöründeki dosyaları düzenleyerek veya kaldırarak çıkarılmalıdır. /Boot/grub/grub.cfg dosyası salt okunurdur ve normalde düzenleme gerektirmemelidir.

Çok Fazla Çekirdek? (

  • Kullanmakta olduğunuz çekirdekten emin değilseniz, bir terminal türünde -r uname.

  • APT (Synaptic, "apt-get remove", vb.) Aracılığıyla kaldırılan çekirdekler otomatik olarak grub.cfg dosyasını günceller ve kullanıcı işlemine gerek yoktur.

  • Çekirdekleri (ve menü girişlerini) kaldırmak için harika bir araç, güvenli ve kullanımı kolay bir GUI uygulaması olan Ubuntu-Tweak'tir.

  • Ubuntu Tweak'ı yükleyin

  • Ubuntu-Tweak, Uygulamalar> Sistem Araçları altında bulunabilecek.

Eski Çekirdek Girdileri Kaldır

  • Soldaki "Paket Temizleyici" yi ve sağ panelden "Çekirdeği Temizle" yi seçin.

  • Sağ alt kısımdaki "Kilit Aç" düğmesine basın, şifrenizi girin.

  • Görüntülenen listeden çekirdek görüntüleri ve kaldırmak istediğiniz başlıkları seçin. Kullanılan çekirdek listelenmemiş.

  • Seçilen çekirdek görüntülerini ve başlıklarını kaldırmak için sağ alt kısımdaki "Temizleme" düğmesine basın.

İşletim Sistemlerini Grub menüsünden kaldırma

  • Bilgisayardan kaldırılan diğer İşletim Sistemleri "update-grub" root olarak çalıştırıldığında menüden de kaldırılacaktır.

  • Menü öğeleri Grub2 menüsüne komut dosyaları ile yerleştirilir. Menüye başka İşletim Sistemlerinin girilmesini istemiyorsanız /etc/grub.d/30_osprober işlevini devre dışı bırakın.

  • Komut dosyasının çalışmasını durdurmak için bu komutu çalıştırın
    Sudo chmod -x /etc/grub.d/30_os-prober

  • DISABLE_30_OS-PROBER =/etc/default/grub içinde 'true'

Memtest86 + 'ı Grub Menüsünden Kaldırma
Sudo chmod -x /etc/grub.d/20_memtest86+

  • Değişikliklerin grub.cfg içine dahil edilmesine izin vermek için update-grub komutunu çalıştırın.

Kaynak

Not: Çekirdek güncellemesinden sonra, GRUB menüsüne yeni bir giriş eklenir. İsterseniz daha eski olanı kaldırabilirsiniz. , çoğu deneyimli kullanıcı, yükseltme işleminde bir sorun olması durumunda en az bir yedek giriş yapmanızı tavsiye eder ve sorun giderme amacıyla eski bir çekirdek sürümünü başlatmanız gerekir.

Çekirdek girdilerini kaldırmanın alternatif yolu (10.04'ten önce)

GRUB için GRUB2 değil

startupmanagerInstall startupmanager

Sistem >> Yönetim >> altında bulabilirsiniz. alt text
alt text
İkinci ekran görüntüsünde kaç tane çekirdek gösterileceğini seçebiliyor musunuz? Genelde sadece 1'de tutuyorum, ancak bir çekirdek yükseltme aldığımda, yeniden başlatmadan önce her zaman 2 olarak değiştiririm, böylece yeni çekirdek donanımımla ilgili sorunlar yaşarsa eski çekirdeği seçebilirim. Bir keresinde yeni çekirdeğin iyi çalıştığını öğrendiğimde 1 olarak değiştiriyorum.

43
karthick87

Tamamen komut satırı, bu mevcut ve ikinci en güncel olanların hepsini kaldıracaktır (aşağıdaki kafa komutundaki "-2" ile):

OLD=$(ls -tr /boot/vmlinuz-* | head -n -2 | cut -d- -f2- |
    awk '{print "linux-image-" $0 " linux-headers-" $0}' )
if [ -n "$OLD" ]; then
    apt-get -qy remove --purge $OLD
fi
apt-get -qy autoremove --purge
39
Kees Cook

Güncelleme: purge-old-kernels is kullanımdan kaldırıldı günümüzde.

Zor koşullarda bile çekirdekleri temizlemek için bir senaryo hazırladım. Buna linux-purge denir ve onu bulabilirsiniz burada .

Yalnızca şu anda kullanılan çekirdekten daha eski olan çekirdekleri (ve ilgili paketleri) temizlemek istiyorsanız, sistem bozulmadığında, bu komut dosyası kullanabilirsiniz.

Eski çekirdekleri çıkarmayla ilgili katkıda bulunduğum bir Ubuntu dokümantasyon sayfası da var burada .

34
jarno

Bunu yapmak için "Katılımsız yükseltmeler" paket bölümünü kullanarak/ Otomatik Güvenlik Güncelleştirmeleri makalesini Ubuntu Wiki'de takip edebilirsiniz.

Aşağıdaki satırı değiştirmelisiniz / etc/apt/apt.conf.d/50unattended-upgradedes dosya;

//Unattended-Upgrade::Remove-Unused-Dependencies "false";

ile

Unattended-Upgrade::Remove-Unused-Dependencies "true";

çekirdekler dahil eski paketleri otomatik olarak kaldırmak için.

Ayrıca satırı kaldırın veya yorum yapın

"^linux-image.*"; 

dosyasının "NeverAutoRemove" bölümünde //etc/apt/apt.conf.d/01autoremove.

29
Qwerty

Ubuntu ile gelen en hızlı/basit yol (en az 12.04'ten beri uygulanabilir) apt-get. Kullanılmayan tüm eski çekirdek sürümlerini kaldırmak istiyorsanız, aşağıdakileri yapın (Kullanılmayan önceki sürüm hariç). önceki durumuna geri dön). Aşağıdakileri yapın:

Sudo apt-get autoclean

Bu, sahip olabileceğiniz tüm eski dosyaları (çekirdek sürümleri dahil) ortadan kaldıracaktır. Birçok eski sürümünüz varsa, çekirdek sürümünün kaldırılmasının sorun yaşamadığından emin olmak için bir süre alacağını unutmayın. Benim için, son 12 çekirdekli sürümleri kaldırmak yaklaşık 2 dakika sürdü. Ayrıca aşağıdakileri yapabilirsiniz:

Sudo apt-get clean

Bu da apt'nin önbellek klasöründe indirilen ve saklanan her şeyi ortadan kaldıracaktır. Son olarak:

Sudo apt-get autoremove

kullanılmayan paketleri kontrol eder ve gerekirse bunları kaldırır. Bu, artık yüklü herhangi bir uygulamanın ihtiyaç duymadığı kütüphaneler ve bağımlılık paketleri için harikadır.

27
Luis Alvarado

Hangi çekirdeklerin ve başlıkların yüklü olduğunu bulmak için

dpkg -l | grep linux-image

dpkg -l | grep linux-headers

Onları birer birer ya da bir arada kaldırabilirsiniz, sadece en son kullandığınızdan emin olun.

Kaldırma işlemini otomatikleştirmek için bazı kullanışlı komutlar ve komut dosyaları da vardır.

http://ubuntuforums.org/showthread.php?t=1658648

Aşağıdakiler kullanılmayan tüm çekirdekleri ve başlıkları kaldırmayı talep eder:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | grep -v hwe | xargs Sudo apt-get purge

(soru sormadan kaldırmak için apt-get -y kullanın)

18.04.1'de çalıştırıldığında ne olur:

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

\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | xargs Sudo apt-get -y purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.15.0-33* linux-headers-4.15.0-33-generic* linux-headers-4.15.0-34* linux-headers-4.15.0-34-generic* linux-image-4.15.0-33-generic* linux-image-4.15.0-34-generic*
  linux-modules-4.15.0-33-generic* linux-modules-4.15.0-34-generic* linux-modules-extra-4.15.0-33-generic* linux-modules-extra-4.15.0-34-generic*
0 upgraded, 0 newly installed, 10 to remove and 1 not upgraded.
After this operation, 671 MB disk space will be freed.
(Reading database ... 227403 files and directories currently installed.)
Removing linux-headers-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-headers-4.15.0-33 (4.15.0-33.36) ...
Removing linux-headers-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-headers-4.15.0-34 (4.15.0-34.37) ...
Removing linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-image-4.15.0-33-generic (4.15.0-33.36) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-33-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Found linux image: /boot/vmlinuz-4.15.0-34-generic
Found initrd image: /boot/initrd.img-4.15.0-34-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-image-4.15.0-34-generic (4.15.0-34.37) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.15.0-36-generic
I: /initrd.img.old is now a symlink to boot/initrd.img-4.15.0-36-generic
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-34-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
(Reading database ... 156180 files and directories currently installed.)
Purging configuration files for linux-image-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
dpkg: warning: while removing linux-modules-4.15.0-33-generic, directory '/lib/modules/4.15.0-33-generic' not empty so not removed
Purging configuration files for linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-image-4.15.0-33-generic (4.15.0-33.36) ...
Purging configuration files for linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
~$ uname -r
4.15.0-36-generic
25
mikewhatever

10.04 GUI Yöntemi

Computer Janitor eski çekirdekleri temizleyebilir ve varsayılan olarak Ubuntu'da (fakat Kubuntu'da) kurulu olmadığını düşünüyorum.

GRUB 1, eğer kullanıyorsanız, maksimumda kaç tane çekirdek göstermesi gerektiğini belirtmek için /boot/grub/menu.lst seçeneğinde bir seçenek vardır. GRUB 2, söyleyebileceğim kadarıyla yok.

25
maco

Eski Linux imaj çekirdeğini kaldırmak için, ilk önce çekirdeğin içinde saklamak istediğini çiz.

Çekirdek sürümünü, uname -r komutunu kullanarak da kontrol edebilirsiniz, böylece yanlış olanı yanlışlıkla kaldırmazsınız.

Şimdi sinaptik paket yöneticisine gidin ve linux-image için arama yapın ve üst komutta gösterilenler dışında eski sürümleri kaldırın. Genellikle en son olanı tercih ederim.

Şimdi yeniden başlattığınızda daha temiz bir grub menüsü göreceksiniz.

16
anurag-jain

buntu-Tweak yükleyebilir ve ardından Uygulamalar -> Sistem aracı -> ubuntu Tweak

enter image description here paket temizleyici ve temiz çekirdekleri tıklayın. şu anda kullanılan çekirdeği göstermediğinden daima güvende olursunuz.

14
Lincity

Şahsen ben Synaptic kullanmayı seviyorum. Olanlar konusunda kendimi daha güvende hissettiriyor. Eski çekirdekleri kaldırma seçeneği olan kullandığım tek uygulama buntu Tweak .

Kullanmadığınız çekirdeklerin çıkarılması:

  • UbuntuTweak’i açın.
  • Sol bölmedeki 'Uygulamalar' altındaki 'Paket Temizleyici'yi tıklayın.
  • 'Temizlik görünümünün' sağ tarafında 'Temiz Çekirdeğe' basın
  • Tüm çekirdeği seç - Kullanımda olanın listelenmemiş olduğunu düşünüyorum. Ancak terminalde uname -a
8
Alan Featherston

Synaptic'i kullanarak eski çekirdekleri (linux-image-... paketleri) kaldırabilir ve bu onları önyükleme menüsünden kaldıracaktır. Çalışan çekirdeği çıkarmamaya dikkat edin (versiyonunu uname -r ile kontrol edebilirsiniz).

Bir veya iki eski sürüme sahip olmanın, bir şeyler ters giderse sorun gidermenize yardımcı olabileceğini unutmayın.

Alternatif olarak, girişleri el ile düzenleyebilir/kaldırabilirsiniz (gksu gedit /boot/grub/grub.cfg), ancak daha yeni bir çekirdeğe güncellediğinizde bunlar yeniden oluşturulur. recovery mode seçeneklerini kaldırmayı düşünüyorsanız - yapma. Sizi açmanızı engelleyen bir şeyi kırarsanız kullanışlı olabilirler.


bu sayfa.

6
evgeny

Bu saf bir komut satırı çözümüdür.

Öncelikle, şu anda çalışan çekirdek dışında yüklü olan tüm çekirdek sürümlerinin bir listesini oluşturun:

dpkg-query -W -f='${Package}\n' |
  grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
    grep -v $(uname -r | cut -d- -f1,2))

Alternatif olarak, son ikisi hariç tüm yüklü çekirdek sürümlerinin bir listesini oluşturun:

dpkg-query -W -f='${Package}\n' |
  grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
    sort -V | head -n -2)

Listeyi inceleyin. Saklamak istediğiniz çekirdek sürümlerinin listenin bir parçası olmadığından emin olun. Çalışmakta olan çekirdeğin sürümünü görmek için uname -r komutunu kullanın.

Sonuçlardan memnunsanız, paketleri kaldırmak için apt-get kullanabilirsiniz.

İlk önce kuru çalışma (örneğin ilk jeneratörü kullanarak):

Sudo apt-get --dry-run purge $(
  dpkg-query -W -f='${Package}\n' |
    grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
      grep -v $(uname -r | cut -d- -f1,2)))

O zaman gerçek bir koşu:

Sudo apt-get purge $(
  dpkg-query -W -f='${Package}\n' |
    grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
      grep -v $(uname -r | cut -d- -f1,2)))

İşlemi otomatikleştirmek istiyorsanız, --yes parametresini ekleyin:

Sudo apt-get --yes purge $(
  ...)
4
lesmana

Bu cevabın avantajı yerli Ubuntu Bash üncü parti uygulamalar kurmadan kullanılıyor. apt veya dpkg kullanmayan özel çekirdekleri kullananlar bu bash betiğini ihtiyaçlarına göre değiştirebilir. Bu cevabı temel alır ( Eski çekirdekleri her seferinde nasıl seçici olarak temizler ).

Zenity tabanlı çözüm

Zenity, bir listeyi işlemek ve radio-buttons ile öğeleri seçmek için terminale Nice GUI arayüzü sağlar::

rm-kernels 1

Başlığın gösterdiği gibi, başlattığınız çekirdeğin kaldırılması mümkün değildir ve listeye dahil edilmez. Rapor edilen büyüklük, /boot dizinine ne kadar tasarruf sağlanacağıdır. Çekirdek ikili dosyaları diğer alanlarda da bulunduğundan diskinize daha çok şey kaydedilir. 27 Temmuz 2017 notu:/usr/src/*kernel_version* ve /lib/modules/*kernel_version* dizinleri şimdi de dahil edildi.

Değiştirme Tarihi, stat komutu kullanılarak keşfedildi. Sistemimde o tarih "Bu" kullanılarak çekirdek her başlatıldığında "dokundu" ( Belirli bir çekirdek sürümünün en son ne zaman yüklendiğini nasıl öğrenirsiniz? =) cron betiği yeniden başlat. Ancak, sisteminizde tarih en son başlattığınız zaman değil çekirdek yayın tarihi olacaktır.

apt-get purge size iptal etme şansı verir

Temizlenecek her şeyi görmek ve kurtarılacak toplam disk alanını (biraz yanıltıcı) görmek için son bir fırsat verilir:

The following packages will be REMOVED:
  linux-headers-4.7.1-040701* linux-headers-4.7.1-040701-generic*
  linux-headers-4.7.2-040702* linux-headers-4.7.2-040702-generic*
  linux-headers-4.7.3-040703* linux-headers-4.7.3-040703-generic*
  linux-headers-4.8.1-040801* linux-headers-4.8.1-040801-generic*
  linux-headers-4.8.10-040810* linux-headers-4.8.10-040810-generic*
  linux-headers-4.8.11-040811* linux-headers-4.8.11-040811-generic*
  linux-headers-4.8.4-040804* linux-headers-4.8.4-040804-generic*
  linux-headers-4.8.5-040805* linux-headers-4.8.5-040805-generic*
  linux-image-4.7.1-040701-generic* linux-image-4.7.2-040702-generic*
  linux-image-4.7.3-040703-generic* linux-image-4.8.1-040801-generic*
  linux-image-4.8.10-040810-generic* linux-image-4.8.11-040811-generic*
  linux-image-4.8.4-040804-generic* linux-image-4.8.5-040805-generic*
0 upgraded, 0 newly installed, 24 to remove and 2 not upgraded.
After this operation, 2,330 MB disk space will be freed.
Do you want to continue? [Y/n] 

Kod

Bu kodu rm-kernels: /usr/local/bin adlı bir yürütülebilir dosyaya kopyalayın:

#!/bin/bash

# NAME: rm-kernels
# PATH: /usr/local/bin
# DESC: Provide zenity item list of kernels to remove

# DATE: Mar 10, 2017. Modified Jul 28, 2017.

# NOTE: Will not delete current kernel.

#       With 10 kernels on an SSD, empty cache from Sudo Prompt (#) using:
#       # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
#       First time for `du` 34 seconds.
#       Second time for `du` 1 second.

# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
#       By default `du` is not used and estimated size is displayed.

# Must be running as Sudo
if [[ $(id -u) != 0 ]]; then
    zenity --error --text "root access required. Use: Sudo rm-kernels"
    exit 99
fi

OLDIFS="$IFS"
IFS="|"
choices=()

current_version=$(uname -r)

for f in /boot/vmlinuz*
do
    if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
    [[ $f =~ vmlinuz-(.*) ]]
    v=${BASH_REMATCH[1]}        # example: 4.9.21-040921-generic
    v_main="${v%-*}"            # example: 4.9.21-040921

    # Kernel size in /boot/*4.9.21-040921-generic*
    s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')

    if [[ $# -ne 0 ]] ; then    # Was a parameter passed?
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             # Kernel headers size in /usr/src/*4.9.21-040921*
             s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
        else
             s2="0M"            # Linux Headers are not installed
        fi
        # Kernel image size in /lib/modules/4.9.21-040921-generic*
        s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
    else
        # Estimate sizof of optional headers at 125MB and size of image at 220MB
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             s2="125M"
        else
             s2="0M"            # Linux Headers are not installed
        fi
        s3="220M"
    fi

    # Strip out "M" provided by human readable option of du and add 3 sizes together
    s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
    t=$(( t + s ))
    s=$s" MB"
    d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
    choices=("${choices[@]}" false "$v" "$d" "$s")
done

# adjust width & height below for your screen 640x480 default for 1920x1080 HD screen
# also adjust font="14" below if blue text is too small or too large

choices=(`zenity \
        --title "rm-kernels - Total: $t MB excluding: $current_version" \
        --list \
        --separator="$IFS" \
        --checklist --multiple \
        --text '<span foreground="blue" font="14">Check box next to kernel(s) to remove</span>' \
        --width=640 \
        --height=480 \
        --column "Select" \
        --column "Kernel Version Number" \
        --column "Modified Date" \
        --column " Size " \
        "${choices[@]}"`)
IFS="$OLDIFS"

i=0
list=""
for choice in "${choices[@]}" ; do
    if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
    ((i++))

    short_choice=$(echo $choice | cut -f1-2 -d"-")
    header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)

    # If -lowlatency and -generic are purged at same time the _all header directory
    # remains on disk for specific version with no -generic or -lowlatency below.
    if [[ $header_count -lt 3 ]]; then
        # Remove all w.x.y-zzz headers
        list="$list""linux-image-$choice- linux-headers-$short_choice"
    else
        # Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
        list="$list""linux-image-$choice- linux-headers-$choice" 
    fi

done

if [ "$i" -gt 0 ] ; then
     apt-get purge $list
fi

NOTE: Dosyayı oluşturmak için Sudo izniniz olması gerekir.

gksu gedit /usr/local/bin/rm-kernels

Dosyanın çalıştırılabilir kullanımını sağlamak için:

Sudo chmod +x /usr/local/bin/rm-kernels

Sunucu Sürümü

rm-kernels-server, bir seferde çekirdekleri seçici olarak silen sunucu sürümüdür. Bir GUI (grafiksel) iletişim kutusu yerine, temizlenecek çekirdeği seçmek için metin tabanlı bir iletişim kutusu kullanılır.

  • Komut dosyasını çalıştırmadan önce dialog dialog komutunu kullanarak yüklemeniz gerekir:

    Sudo apt install dialog

İletişim kutusu varsayılan Ubuntu Masaüstü kurulumunda ancak Ubuntu Sunucusunda değil.

Örnek ekran

rm-kernels-server 1

rm-kernels-server bash kodu

#!/bin/bash

# NAME: rm-kernels-server
# PATH: /usr/local/bin
# DESC: Provide dialog checklist of kernels to remove
#       Non-GUI, text based interface for server distro's.

# DATE: Mar 10, 2017. Modified Jul 28, 2017.

# NOTE: Will not delete current kernel.

#       With 10 kernels on an SSD, empty cache from Sudo Prompt (#) using:
#       # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
#       First time for `du` 34 seconds.
#       Second time for `du` 1 second.

# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
#       By default `du` is not used and estimated size is displayed.

# Must be running as Sudo
if [[ $(id -u) != 0 ]]; then
    echo "root access required. Use: Sudo rm-kernels-server"
    exit 99
fi

# Must have the dialog package. On Servers, not installed by default
command -v dialog >/dev/null 2>&1 || { echo >&2 "dialog package required but it is not installed.  Aborting."; exit 99; }

OLDIFS="$IFS"
IFS="|"
item_list=() # Deviate from rm-kernels here.

current_version=$(uname -r)
i=0
for f in /boot/vmlinuz*
do
    if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
    [[ $f =~ vmlinuz-(.*) ]]
    ((i++)) # Item List
    v=${BASH_REMATCH[1]}        # example: 4.9.21-040921-generic
    v_main="${v%-*}"            # example: 4.9.21-040921

    # Kernel size in /boot/*4.9.21-040921-generic*
    s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')

    if [[ $# -ne 0 ]] ; then    # Was a parameter passed?
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             # Kernel headers size in /usr/src/*4.9.21-040921*
             s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
        else
             s2="0M"            # Linux Headers are not installed
        fi
        # Kernel image size in /lib/modules/4.9.21-040921-generic*
        s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
    else
        # Estimate sizof of optional headers at 125MB and size of image at 220MB
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             s2="125M"
        else
             s2="0M"            # Linux Headers are not installed
        fi
        s3="220M"
    fi

    # Strip out "M" provided by human readable option of du and add 3 sizes together
    s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
    t=$(( t + s ))
    s=$s" MB"
    d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
    item_list=("${item_list[@]}" "$i" "$v ! $d ! $s" off)
done

cmd=(dialog --backtitle "rm-kernels-server - Total: $t MB excluding: $current_version" \
    --title "Use space bar to toggle kernel(s) to remove" \
    --column-separator "!" \
    --separate-output \
    --ascii-lines \
    --checklist "         Kernel Version --------- Modified Date  Size" 20 60 15)

selections=$("${cmd[@]}" "${item_list[@]}" 2>&1 >/dev/tty)

IFS=$OLDIFS

if [ $? -ne 0 ] ; then
    echo cancel selected
    exit 1
fi

i=0
choices=()

for select in $selections ; do
    ((i++))
    j=$(( 1 + ($select - 1) * 3 ))
    choices[i]=$(echo ${item_list[j]} | cut -f1 -d"!")
done

i=0
list=""
for choice in "${choices[@]}" ; do
    if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
    ((i++))

    short_choice=$(echo $choice | cut -f1-2 -d"-")
    header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)

    # If -lowlatency and -generic are purged at same time the _all header directory
    # remains on disk for specific version with no -generic or -lowlatency below.
    if [[ $header_count -lt 3 ]]; then
        # Remove all w.x.y-zzz headers
        list="$list""linux-image-$choice- linux-headers-$short_choice"
    else
        # Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
        list="$list""linux-image-$choice- linux-headers-$choice" 
    fi

done

if [ "$i" -gt 0 ] ; then
    apt-get purge $list
fi

NOTE:dialog çağrısında --ascii-lines yönergesi, çizgi çizili genişletilmiş karakter kümesinin (ki ssh'nin beğenmediği) yerine "+ ----- +" ile değiştirilir Çizim kutuları Bu görünümü beğenmezseniz, hiçbir kutu için --no-lines yönergesini kullanabilirsiniz.


28 Temmuz 2017 Güncellemeleri

Her bir çekirdeğin hesaplanan büyüklüğü, toplamda ~ 50 MB olan 5 dosya olan /boot/*kernel_version*'den alınmıştır. Formül, /usr/src/*kernel_version* ve /lib/modules/*kernel_version* içindeki dosyaları içerecek şekilde değiştirildi. Her bir çekirdek için hesaplanan boyut şimdi ~ 400 MB'dir. rm-kernels ve rm-kernels-server için yukarıdaki kod güncellendi. Ancak, yukarıdaki örnek ekranlar bu değişiklikleri henüz yansıtmamaktadır.

Varsayılan değer, 125 MB’daki linux-başlıkları için dosyaların boyutunu ve 220 MB’da linux-görüntüsünü tahmin etmektir çünkü du, dosyalar önbellekte olmadığı sürece acı verici bir şekilde yavaş olabilir. du işlevini kullanarak gerçek boyutu elde etmek için komut dosyasına herhangi bir parametreyi iletin.

Tüm çekirdek boyutlarının toplamı (kaldırılamayan geçerli sürüm hariç) artık başlık çubuğunda gösteriliyor.

Her bir Çekirdeği görüntülemek için kullanılan iletişim kutusu Son Erişim Tarihi. Bu tarih, yedekleme veya benzeri işlemler sırasında tüm çekirdeğin üzerine kitlenin üzerine yazılabilir. İletişim kutusu şimdi bunun yerine Değiştirilme Tarihi değerini gösteriyor.

4
WinEunuuchs2Unix

Eski çekirdeği kaldırmak için sed kullanarak kabul edilen cevap kalıcı olarak bazı kusurlara sahiptir, eğer birisi çekirdeği yükselttikten sonra bilgisayarı yeniden başlatmamışsa, komut daha yeni çekirdeği de kaldırır.

Yalnızca gerçek eski çekirdeği kaldırmak için tüm durumları dikkate alacak alternatif bir çözüm:

#!/bin/bash
kernels=( $(grep -Po "^linux-image-[^-]+-[^-]+-generic\b" < <(dpkg --get-selections)) )
cur_rel=$(grep -Po ".*(?=-[a-z]*$)" < <(uname -r))

for kernel in "${kernels[@]}"; do
    ker_rel=$(grep -Po "[0-9].*(?=-[a-z]*)" <<< "$kernel")
    dpkg --compare-versions "$ker_rel" gt "$cur_rel" && echo "Please Restart your computer first" && break
    dpkg --compare-versions "$ker_rel" lt "$cur_rel" && Sudo apt-get remove "$kernel"
done

Mevcut sürümden daha yeni bir sürüme sahipseniz, bu işlem ilk önce bilgisayarınızı yeniden başlatmanız için bir uyarı verecektir. Ayrıca, eski çekirdeklerin iyi bir nedenden ötürü korunduğunu unutmayın; mevcut çekirdeğinizi bir şekilde karıştırırsanız, sisteminizi dengesiz hale getirirseniz, eski çekirdeğe önyükleme yapabilmeniz gerekir.

2
heemayl

Hemen hemen tüm eski paketlerden kurtulmanın kolay bir yolu, artık hiçbir paket listesinde bulunmayan paketler, eski çekirdeklerle birlikte aşağıdakilerden birini yapmaktır:

dpkg --purge $(aptitude search ?obsolete)

Ancak bu, diğer paketler tarafından hala tavsiye edilen paketleri kaçıracak ve -R/- önerileri olmadan argüman bu sorunu çözmüyor.

sıralama modunu 'o' ile değiştirdikten sonra dselect, yetenek özlilikleri de dahil olmak üzere tüm eski paketleri gösterecektir, ancak bazı kişiler onu kullanmayı sevmiyor.

2
Chris Cheney

Bunun için çok süslü bir dize ayrıştırma gerektirmeyen bir komut dosyası var.

Boşluk bırakmak için geçerli olan hariç başlıkları ve resimleri kaldır

Sudo apt-get autoremove --purge 'linux-headers-[0-9].*' linux-headers-$(uname -r)+ linux-headers-$(uname -r | cut -d- -f1,2)+ 'linux-image-[0-9].*' linux-image-$(uname -r)+
1
Paulo Santos

ailurus eski çekirdekleri ve kullanılmayan konfigürasyonları kaldırma özelliğine sahiptir. Ben şahsen bunu sinaptikten manuel olarak kaldırdım. Ailurus yükleyebilirsiniz getdeb yanı sıra ppa

1
sagarchalise

David Kemp'in önceki bir cevabına dayanarak, aşağıdaki senaryo son 2 sürümleri dışındaki tüm başlıkları ve resimleri temizleyecektir.

#!/bin/sh
# This script assumes that the installed linux-image and linux-headers packages
# share the same versions (i.e. if a linux-image version number is installed,
# the corresponding linux-headers package will also be installed, and vice
# versa.)

SECONDTOLASTVER=$(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -r -n | sed '/^[^0-9]\+$/d' | sed 's/^.*-\([0-9\.]\+-[0-9]\+\).*/\1/' | uniq | sed -n 2p)

# get a list of package names matching the argument passed to the function, and
# return only those package names which should be removed
get_pkgs_to_remove_matching () {
    if [ -n "$SECONDTOLASTVER" ]; then
        echo $(dpkg --list | grep $1 | awk '{ print $2 }' | sort | sed -n '/'"$SECONDTOLASTVER"'/q;p')
    fi
}

echo $(get_pkgs_to_remove_matching linux-image) $(get_pkgs_to_remove_matching linux-headers) | xargs Sudo apt-get purge

(soru sormadan kaldırmak için apt-get -y kullanın)

1
Mark

Eski Çekirdekleri güncellemek ve silmek için ukuu'yu kullanabilirsiniz. Benim için çalışıyor!

Sadece son 2'yi ve belli ki 'çalışan' çekirdeği bıraktığınızı unutmayın.

Ayrıca ukuu'yu yalnızca ana hat bültenlerini, hatta RC çekirdekleri bile, nokta bültenlerini gizleyecek şekilde ayarlayabilirsiniz.

ukuu

Ukuu'yu Synaptic'te bulabilir veya talimatlar buradadır:

OMG! Ubuntu ukuu kurulum talimatları

1
sprocketoctopus

Diğer cevaplarda yöntemlerin iki daha güvenli varyasyonunu verdim: biri synaptic manager ve diğeri terminal kullanarak.

Bu değişikliklerle, yalnızca sistemin çıkarılabilir olarak tanımladığı paketleri kaldırırsınız. Şu anda kullanılmakta olan linux çekirdeklerini kaldırma riski yoktur - birkaç hafta önce bana olduğu gibi ;

Synaptic Manager'ı kullanma

linux-image üzerinden tüm yüklü paketleri aramak yerine, otomatik olarak taşınabilen paketleri seçin (kırmızıya bakın) aşağıdaki resimde elips). Şimdi bu listeden, linux-image'ı kaldırın.

--- (enter image description here

Terminal kullanarak

Benzer şekilde, terminaldeki çekirdeği kaldırıyorsanız, yalnızca otomatik olarak çalıştırılabilir çekirdeklerini çalıştırarak gösterin

 Sudo apt-get -s autoremove | grep linux-image

Ve sonra çalıştırarak verilen listeden kaldırmak istediğiniz çekirdeği linux-image-x.x.x-x-generic

 Sudo apt-get purge linux-image-x.x.x-x-generic 
0
loved.by.Jesus

unattended-upgrades kullanıyorum, bu yüzden gerçekten sevdim Qwerty's answer eski çekirdek paketlerini otomatik olarak kaldıracak şekilde yapılandırıyor.

Ancak bir sorun vardı: yeni bir çekirdek yüklendikten sonra, bu işlem şu anda çalışan çekirdek için paketi kaldıracak!

Bu tamamen işletim sistemini kırmaz. Aslında, bir modülü (örneğin bir USB cihazına takarak) sıcak yüklemeye ihtiyacım olana kadar, bunun nadiren olduğunu fark ettim ve ardından modül bulunamadı.

Bunun bir çözümü olarak, geçerli çekirdek paketini bir sonraki önyüklemeye kadar etkin bir şekilde sabitleyen sanal bir paket currently-installed-kernel oluşturmak için bir komut dosyası oluşturdum.

Komut dosyası pin-current-kernel-with-package.sh olarak adlandırılır. İşte en son sürüm (muhtemelen) ve ilk sürüm (kesinlikle).

Sadece bu betiği bir yere kaydedin ve önyükleme işleminize ekleyin . Örneğin, /root/bit/pin-current-kernel-with-package.sh içine kaydedin ve sonra /etc/rc.local düzenleyin ve aşağıdaki satırı ekleyin:

bash /root/bin/pin-current-kernel-with-package.sh

Artık çalışan çekirdek paketiniz asla kaldırılmayacak!

0
joeytwiddle

Makineleri kontrol etmek için ansible kullanıyorsanız, bu oyun kitabı yardımcı olabilir.

---
 - hosts: all
   become: yes
   tasks:
    - name: "Run apt-get autoremove"
      apt: 
        name: linux-image-generic
        autoremove: yes
        state: present 
        update_cache: yes
        cache_valid_time: 3600
0
flickerfly

Bir dahaki sefere, eski çekirdekleri çıkarırken bir Terminal açın ve bu komutu kullanın:

Sudo apt-get autoremove linux-headers-2.6.38-10-generic

Silmek istediğiniz çekirdeğin tam adını almak için Synaptic'i kullanabilirsiniz. Sadece Synaptic'i açın ve "linux-headers" aratın ve ardından hangi çekirdek girişini silmek istediğinizi seçin. İlgili giriş sonunda "-generic" ile etiketlenecektir.

Sistemdeki kullanılmayan (bırakılan) bağımlılıkları temizlemek için bu komutu tek başına kullanın:

Sudo apt-get autoremove
0
Chad--24216

Bir KDE masaüstü kullanıyorum ve bulduğum en kolay seçenek burada önerildiği gibi kde-config-grub2 uygulamasını kullanmaktı: https://www.kubuntuforums.net/showthread.php?58075-remove-old -linux-versions (arka plan resmi, varsayılan önyükleme seçeneği ve benzeri ayarları için zaten yüklemiş olduğum). Varsayılan girişi seçebileceğiniz açılır kutunun yanında bir "Eski Girdileri Kaldır" düğmesi bulunur. Bu düğmeyi tıkladığınızda, yüklü tüm çekirdeklerin bir listesi sunulur ve hangilerinin kaldırılacağını seçebilirsiniz. Değişiklikleri uyguladığınızda, aslında onları sistemden ve GRUB menüsünden kaldırmak için dpkg kullanacaktır.

0
Ben

Aşağıdaki komut dizisi, halihazırda çalışan (grep -v uname -r) ve mevcut en son çekirdek (dpkg -l | .... | tail -1) dışındaki yüklü linux çekirdeklerini temizler:

dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | grep -v `dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | tail -1` | grep -v `uname -r` | xargs apt-get -y purge

Bunu masaüstünün önyükleme hacimlerini nispeten temiz tutmak için kullanıyorum, ancak sunucu durumunda muhtemelen mantığı genişletmek ve sunucunun önyüklediği son X çekirdeğinin bir listesini tutmak için bazı ek komut dosyaları yazmak isteyebilirsiniz.

Başlangıç ​​komut dosyası gibi bir şey yapar:

uname -r >> /root/bootedkernels
cat /root/bootedkernels | sort -u | tail -3 > /root/bootedkernels # Keep the last 3 booted kernels

ve sonra kullanın:

dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | grep -vf /root/bootedkernels | grep -v `dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | tail -1` | grep -v `uname -r` | xargs apt-get -y purge
0

Bunu dene. Kök olarak çalıştırın.

Bu betiği olduğu gibi kaydedin, ./ keep-n-kernels.sh yazın.

Komut satırı argümanı olarak, korumak istediğiniz en son çekirdek sayısını girin.

    
 #!/bin/bash 
 
 # komut satırı argümanı olarak n'yi iletir ve yüklü olan tüm 
 # çekirdeklerini bulur ve yalnızca en çok tutar son olanlar => tüm eski olanları kaldır 
 
 # dpkg -l 'linux- *' | sed '/ ^ ii /! d; /' "$ (unr -r | sed" s /\(.*\)-\(-)^ 0-9]\+ \)/\ 1/")" '/ d; s/^ [^] * [^] *\([^] * \). */\ 1 /;/[0-9] /! d '
 # bu komutun listesini verir tüm paketler en son çekirdek için HARİCİ. ] 
 # kurulu çekirdek sürümlerini bulun: 
 # dpkg-query -W -f = '$ {Sürüm}\n' 'linux-image- *' | grep. | sort -n 
 #, her satırda bir tane olmak üzere sürüm numaralarını verir 
 # dpkg-query -W -f = '$ {Sürüm}\n' 'linux-image- *' | grep. | sed 's /\...$// g' | grep -v '\ ... $' | sort -u 
 # yalnızca linux görüntüsünde görünenleri verir 
 
 # suffix, ör. -generic-pae 
 # 
 'a attığınız çekirdeğin türü suffix = $ (uname -r | sed' s: ^ [0-9] \. [0-9] \. [ 0-9]\- [0-9]\{2 \} :: g ') 
 
 Command = "apt-get purge" 
 
 İçin $ 'daki sürüm (dpkg-query -W -f =' $ {Sürüm}\n '' linux-image- * '| grep. | sed' s /\...$// g '| grep -v'\... $ '| sort -u | head -n - $ {n}) 
 do 
 komut = $ {command} "^ linux-image - $ {version} $ {suffix} "
 yapılır 
 
 $ komutu 

Örnek kullanım:

 # ./keep-n-kernels.sh 4 # en son 4 çekirdeğin dışında kalanları silmek için apt-get komutunu çalıştırın 

İsterseniz [AND AT KENDİ RİSKİNİZ], apt-get komutuna bir -y (veya bir kuvvet bayrağı) ekleyebilir ve etkileşimli olmayabilir.

0
Sankalp

synaptic paket yöneticisi kurulumunu yapın ve filtreler sekmesine gidin (sanırım 5'in hepsini denemezseniz filtreler) ve "yerel" i seçin. Bu, sisteminizde çekirdekler gibi yetim paketleri gösterecektir. Bunları kaldırdıktan sonra update-grub komutunu çalıştırın. Bu komut grub için önyükleme seçeneklerinin listesini günceller.

Bu başarısız olursa, her zaman apt-get remove linux-image-version-generic deneyebilirsiniz.

0
Relish

düzenli sistem güncellemeleriyle otomatik olarak yüklenen çekirdekleri kaldırmak için, terminali açın ve çalıştırın:

Sudo apt autoremove --purge

Mevcut çekirdek sürümünüzü bilmek için uname -r komutunu çalıştırın, u da tüm uname komutları hakkında daha fazla okumak için uname --help komutunu çalıştırabilirsiniz.

Ayrıca size dosya sistemi sürücülerini göstermek için df -h komutunu çalıştırabilir, benzer şekilde daha fazla bilgi için df --help komutunu çalıştırabilirsiniz.

Eski çekirdeklerin otomatik olarak kaldırılmasını etkinleştirmek için: gksu kullanarak config dosyasını düzenleyin.

gksudo gedit /etc/apt/apt.conf.d/50unattended-upgrades

Dosya açıldığında, aşağıdaki satırı uncomment ve değeri true olarak değiştirin:

// Katılımsız Yükseltme :: Kaldır-Kullanılmayan Bağımlılıklar " false ";

Yüklemeniz gerekirse gksu , Sudo apt install gksu komutunu çalıştırabilirsiniz.

Eski paketleri temizlemek için Sudo apt-get clean kullanabilirsiniz

Dahası, ziyaret http://ubuntuhandbook.org/index.php/2016/05/remove-old-kernels-ubuntu-16-04/

0
Abdallah Okasha

Sadece chime için, ayrıca sorun olabilir

apt-get remove linux-{image,headers}-x.y.z-{1,2,...,n}

root olarak ve iş yapılacak.

0
Severo Raz

@ jarno ve @ earcam soru hakkındaki yorumlarında belirtildiği gibi, öncelikle tüm linux çekirdek paketlerinizin otomatik olarak yüklenmiş olarak işaretlendiğinden emin olmak istersiniz:

Sudo apt-mark auto '^linux-.*-4\.12\.0-12(-generic)?$'

O zaman normal apt-get autoremove komutu çalışmalıdır.

Sudo apt-get autoremove --purge

Daha fazla ayrıntı için docs adresini okuyun.

0
hobs

işte yaptığım işin kaba taslakları, linux konusunda uzman olmadığım için dikkatli olun, ne yaptığınızı bildiğinizden ve değiştirdiğiniz dosyaları yedeklediğinizden emin olun.

gedit /boot/grub/grub.cfg

sonra saklamak istediğiniz girişleri bulun, bunları vurgulayıp kopyalayacağız.

cd /etc/grub.d
ls

10_linux ve 30_os-prober gibi dosyaların bir listesini göreceksiniz

Sudo chmod -x 10_linux

bu, tüm linux girişlerini grub önyükleme menüsüne otomatik olarak eklemeyi durduracaktır.

gksudo gedit 40_custom

özel önyükleme menüsü dosyasını açın, ardından grub.cfg (ki hala gedit'te açık olması gerekir) 'e dönün ve saklamak istediğiniz girişleri kopyalayın ...

menuentry "My Default Karmic" {
  set root=(hd0,1)
  search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8
  linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash
  initrd /boot/initrd.img-2.6.31-11-generic
}

onları 40_custom içine yapıştırın ve ardından kaydedin.

Sudo chmod 755 40_custom

yürütülebilir hale getirir, sonra nihayet grub.cfg dosyasını değiştirecek grubu güncelleriz:

Sudo update-grub

Şimdi, DİKKAT, eğer çekirdeğinizi veya işletim sisteminizi güncellerseniz, açılış menünüz muhtemelen güncellenmeyecektir ... bunu elle yapmanız gerekir. Ancak bu prosedürü kullanmak, önyükleme menüsünü, çekirdek sürümünü kaldırmak ve ubuntu adını koymak gibi biraz daha özelleştirmenize izin verecektir ... yani Ubuntu Lucid 10.04, vb ...

Umarım birileri bunu faydalı bulur, anlaması biraz zaman aldı ... bu çözümü hiçbir yerde görmedim ...

0
Joe

Eski çekirdek görüntülerini temizlemek için apt, insanlar için uç ön ucu apt-get yerine:

$ Sudo apt autoremove --purge
...
The following packages will be REMOVED:
  linux-headers-4.4.0-51* linux-headers-4.4.0-51-generic* linux-image-4.4.0-51-generic* linux-image-extra-4.4.0-51-generic*
0
k0pernikus

Hangi sürümlerin tutulacağı konusunda biraz daha kontrol sahibi olmak için, kaldırmak istediklerinizi açıkça seçin. Örneğin, çekirdek sürüm 3.2.0. [49-53] kaldırmak istiyorsanız, basit bir for loop kullanın:

for k in 49 51 52 53 ; do aptitude remove --purge linux-image-3.2.0-${k}-generic ; done

Çekirdek sürümlerinin listesini sığacak şekilde ayarlayın.

0
NeilNjae