'Apt' kaç tane eski çekirdeğin korunacağına nasıl karar verir?


23

Çekirdek hizmetler (NTP, DNS, vb.) İçin birkaç sunucu yönetiyorum ve sunuculardan birinin diğerinde 2 yerine en son 3 çekirdeği tuttuğu görülüyor:

nul@quark:~$ sudo apt-get autoremove --purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
nul@quark:~$ dpkg -l |grep linux-image
ii  linux-image-3.13.0-51-generic       3.13.0-51.84                     amd64        Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-3.13.0-52-generic       3.13.0-52.85                     amd64        Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-3.16.0-37-generic       3.16.0-37.49~14.04.1             amd64        Linux kernel image for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-extra-3.13.0-51-generic 3.13.0-51.84                     amd64        Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-extra-3.13.0-52-generic 3.13.0-52.85                     amd64        Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-extra-3.16.0-37-generic 3.16.0-37.49~14.04.1             amd64        Linux kernel extra modules for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-generic                 3.13.0.52.59                     amd64        Generic Linux kernel image
ii  linux-image-generic-lts-utopic      3.16.0.37.29                     amd64        Generic Linux kernel image

...

nul@dwarf:~$ sudo apt-get autoremove --purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
nul@dwarf:~$ dpkg -l |grep linux-image
ii  linux-image-3.13.0-52-generic       3.13.0-52.85                     amd64        Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-3.16.0-37-generic       3.16.0-37.49~14.04.1             amd64        Linux kernel image for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-extra-3.13.0-52-generic 3.13.0-52.85                     amd64        Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-extra-3.16.0-37-generic 3.16.0-37.49~14.04.1             amd64        Linux kernel extra modules for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-generic                 3.13.0.52.59                     amd64        Generic Linux kernel image
ii  linux-image-generic-lts-utopic      3.16.0.37.29                     amd64        Generic Linux kernel image

Tüm sunucular aynı şekilde korunuyor, ne yapabileceğimi bilmiyorum, bir yerlerde bir parametre olmalı ama bulamıyorum!

Lütfen merakımı besle! teşekkür ederim

Yanıtlar:


32

Otomatik olarak oluşturulan apt-getve hangi çekirdeklerin otomatik olarak kaldırılacağını ve hangilerinin tutulacağını söyleyen bir dosya var . Hangi çekirdekleri olduklarını
söyleyen dosya apt-get, /etc/apt/apt.conf.d/01autoremove-kernelshangisinden üretilir /etc/kernel/postinst.d/apt-auto-removal?

Genellikle ne olur sen çekirdek güncellemeleri geldi zaman çekirdek sürümü değişiklikleri, gelen derken, yani 3.13için 3.16, /etc/apt/apt.conf.d/01autoremove-kernelsdaha sonra tutmak için güncellenir 3.16*tanelerini ve ardından tümünü kaldırmak için ayarlanır 3.13kaldırılamaz için üreten komut dosyası tarafından belirtilmediği sürece çekirdekler.

Gönderen apt-auto-removalsenaryo:

# Yazar: Steve Langasek 
#
# Aşağıdaki autoremoval olmayan çekirdek paketlerini işaretleyin:
# - şu anda önyüklenen sürüm
# - Çağrıldığımız çekirdek versiyon
# - en son çekirdek sürümü (grubundan kopyalanan kurallar kullanılarak belirlenir)
Hangi çekirdeğin önyükleneceğine karar vermek için # paket
# - ikinci çekirdekli sürüm, eğer önyüklenmiş çekirdekli sürüm ise
# zaten en son ve bu betiği aynı sürüm için denir,
# yeni kurulan durumda geri dönüşün devam etmesini sağlamak için
Bu ABI'deki # kernel önyükleme yapamıyor
# Ortak durumda, bu tam olarak iki çekirdeğin kaydedilmesini sağlar, ancak
# üç çekirdeğin kaydedilmesine neden olur. Yanında hata yapmak daha iyi
# çok az kaydetmekten çok fazla çekirdek kurtarmak.
#
# Bu listeyi oluşturur ve işaretlemek yerine /etc/apt/apt.conf.d dizinine kaydederiz.
# veritabanındaki paketler çünkü bu bir postinst betiğinden çalışır ve apt
# çıktığında db'nin üzerine yazacaktır.

Bununla birlikte, bu bazen bunları otomatik olarak kaldırma için işaretlemeyecektir, çünkü kodlamanın bir kısmı bunun olmasını önlemek için sürümler üzerinde değişmiştir.

autoremoveKomut dosyalarına dayalı olarak gerekli çekirdekler dışında önceki çekirdekleri işaretlemek istiyorsanız , aşağıdaki komutu bir terminal penceresinden çalıştırın:

sudo apt-mark auto ^linux-image-

Ardından, apt-get autoremovekomutu çalıştırdığınızda yalnızca eski olanlar ve artık gerekmeyenler kaldırılabilir. Aşağıda örnekler verdim:

Bu ilki, sistemdeki tüm çekirdekleri eksi o anki çalışan çekirdeği gösterir.

root @ terrance-Linux: / home / paylaşım # dpkg -l 'linux- *' | sed '/ ^ ii /! d; /' "$ (unr -r | sed" s /\(.*\)-\(-)^ 0-9] \ + \) / \ 1 / ")" '/ d; s / ^ [^] * [^] * \ ([^] * \). * / \ 1 /; / [0-9] /! d '
Linux-başlıkları-3.16.0-34
linux-headers-3.16.0-34-jenerik
Linux-başlıkları-3.16.0-36
linux-headers-3.16.0-36-jenerik
Linux-başlıkları-3.16.0-37
linux-headers-3.16.0-37-jenerik
Linux-başlıkları-4.0.0-040000
linux-headers-4.0.0-040000-jenerik
linux-image-3.16.0-34-jenerik
linux-image-3.16.0-36-jenerik
linux-image-3.16.0-37-jenerik
linux-image-4.0.0-040000-jenerik
linux-image-ekstra-3.16.0-34-jenerik
linux-image-ekstra-3.16.0-36-jenerik
linux-image-ekstra-3.16.0-37-jenerik

Bu, mevcut çalışan çekirdeği gösterir.

terrance @ terrance-Linux: ~ $ bir isim -r
4.0.1-040001-jenerik
terrance @ terrance-Linux: ~ $ sudo apt-get autoremove
terrance için [sudo] şifre: 
Paket listeleri okunuyor ... Tamamlandı
Bağımlılık ağacı oluşturma       
Durum bilgisi okunuyor ... Tamamlandı
0 yükseltildi, 0 yeni yüklendi, 0 kaldırıldı ve 0 yükseltilmedi.
terrance @ terrance-Linux: ~ $ sudo apt-mark otomatik ^ linux-görüntü-
linux-image-extra-3.16.0-33-generic, yüklü olmadığı için işaretlenemez.
linux-image-extra-3.13.0-27-generic, yüklü olmadığı için işaretlenemez.
linux-image-3.13.0-44-lowlatency yüklü olmadığı için işaretlenemez.
linux-image-3.13.0-27-generic yüklü olmadığı için işaretlenemez.
linux-image-3.16.0-31-lowlatency yüklü olmadığı için işaretlenemez.
linux-image-3.16.0-36-generic, otomatik olarak yüklenecek şekilde ayarlandı.
linux-image-lowlatency-lts-ütopik kurulu olmadığı için işaretlenemez.
linux-image-extra-3.13.0-36-generic, yüklü olmadığı için işaretlenemez.
linux-image-3.13.0-36-generic yüklü olmadığı için işaretlenemez.
linux-image-4.0.0-040000-generic, otomatik olarak yüklenecek şekilde ayarlandı.
linux-image-extra-3.13.0-45-generic, yüklü olmadığı için işaretlenemez.
linux-image-3.16.0-25-generic yüklü olmadığı için işaretlenemez.

NOT: Yukarıdakiler listelenmek için çok uzundu, bu yüzden biraz kısaldım.

terrance @ terrance-Linux: ~ $ sudo apt-get autoremove
Paket listeleri okunuyor ... Tamamlandı
Bağımlılık ağacı oluşturma       
Durum bilgisi okunuyor ... Tamamlandı
Aşağıdaki paketler ÇIKARILACAKTIR:
  linux-görüntü-3.16.0-34-genel linux-görüntü-3.16.0-36-genel
  linux-image-4.0.0-040000-jenerik linux-image-extra-3.16.0-34-generic
  linux-image-ekstra-3.16.0-36-jenerik
0 yükseltildi, 0 yeni yüklendi, 5 kaldırıldı ve 0 yükseltilmedi.
Bu işlemden sonra 613 MB disk alanı boşaltılacaktır.
Devam etmek istiyor musun? [E / N]

Böylece, bu komutları çalıştırdıktan sonra, şu anki çekirdeği (4.0.1-040001-generic) ve bir sonraki en yeniyi (3.16.0-37-generic) otomatik olarak tüm eskileri kaldırabildiğimi görebilirsiniz.

Umarım bu yardımcı olur.


Ubuntu varsayılan olarak otomatik kaldırma işlemi yapmaz mı? Seçeneğimiz var ancak (hala) bir "istenmeyen" çekirdeğin ne olduğuna karar vermek imkansız görünüyordu (diğer işletim sistemlerinde "istenmeyen" "kullanılmayan" değerine eşittir).
Rinzwind

Tamam. Bu bit üzerine yazınızı yanlış
okudum

1
@Terrance I geçiren çalıştı sudo apt-mark auto ^linux-image-ve ardından sudo apt-get autoremove --purgeama boşuna; ancak, biraz dist-upgradedeğiştirilmiş 2 tane çekirdek (3.13.0-52 ve 3.16.0.37) ve aşağıdakiler autoremove3.13.0-51 ... 'den kurtuldu ...
ionreflex 07

1
@ionreflex Bunu bulduğuna sevindim. Her cevap mükemmel değildir ve herkes için işe yaramayabilir. Ama senin gibi insanların biraz sorun giderme yapabilmelerini ve onları ortadan kaldırmanın bir yolunu bulmayı iyi buluyorum. Sanırım dist-upgradekaçtığını /etc/kernel/postinst.d/apt-auto-removalve /etc/apt/apt.conf.d/01autoremove-kernelssonra da hangilerini tutacağını söyleyerek kaçtığını düşünüyorum .
Terrance

1
@Terrance Daha dist-upgradeönce yaptığımdan eminim , ama belki de bu sabah çekirdeğin yenilenmiş olması gerçeği ... neyse, alkışlar ve cevabınız için teşekkür ederim, bu konuda çok şey öğrendim!
ionreflex
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.