KGraft - kGraft - Wikipedia

kGraft
Geliştirici (ler)SUSE
İlk sürüm27 Mart 2014 (2014-03-27)[1]
Kararlı sürüm
5.9[2] / 11 Ekim 2020; 2 ay önce (11 Ekim 2020)
Depo Bunu Vikiveri'de düzenleyin
İşletim sistemiLinux
TürÇekirdek uzantısı
LisansGNU GPL sürüm 2 ve 3
İnternet sitesiwww.suse.com/Ürün:% s/ live-patching

kGraft bir özelliğidir Linux çekirdeği uygular canlı yama koşmanın çekirdek çekirdeğe izin veren yamalar çekirdek çalışırken uygulanacak. KGraft, istenen yamaları içeren yeni bir çekirdek ile sistemi yeniden başlatma ihtiyacını ortadan kaldırarak sistemi en üst düzeye çıkarmayı amaçlamaktadır. çalışma süresi ve kullanılabilirlik. Aynı zamanda kGraft, çekirdek ile ilgili güvenlik güncellemelerinin, bunları ertelemeden uygulanmasına izin verir. planlanan kesinti süreleri.[1][3] KGraft dahili olarak tüm fonksiyonlar çalışan bir çekirdekte yamalı sürümleri ile değiştirilmek üzere, bunu başarmak için işlevlerin orijinal sürümlerini seçerek güvenle yapıyor.süreç canlı yama gerçekleştirilirken tutarlılık.[4]

kGraft, SUSE, onunla kaynak kodu sürüm şartlarına göre lisanslanmıştır iki ve üç of GNU Genel Kamu Lisansı (GPL).[3][5] Nisan 2014'te, kGraft, Linux çekirdek ana hattı,[4] ve canlı yama için minimalist temeller, 12 Nisan 2015'te piyasaya sürülen kernel sürüm 4.0'da Linux çekirdek ana hattında birleştirildi.[6]

Dahili

Dahili olarak, kGraft iki bölümden oluşur - çekirdek çekirdek modülü canlı yama mekanizmasını çekirdeğin iç işleyişini değiştirerek yürütürken Kullanıcı alanı kamu hizmetleri bireysel hazırlar sıcak yama çekirdek modülleri kaynak farklılıkları. Canlı çekirdek yama işlemi, işlevi Bu, kGraft'ın çalışan çekirdekteki tüm işlevleri yamalı sürümleriyle değiştirebileceği anlamına gelirken, aynı zamanda tarafından oluşturulan mekanizmalar ve altyapıya da güvenebilir. ftrace işlevlerin eski sürümlerinin "etrafından dolaşmak". Çekirdeğin iç kısmında değişiklik yok veri yapıları mümkün; ancak, güvenlik yamaları kGraft ile kullanılabilecek doğal adaylardan biri olan, nadiren çekirdeğin veri yapılarında değişiklikler içerir.[3][4][7]

Sıcak yamalar uygulanırken kGraft, işlevlerin yamalı sürümlerinin eklenebilmesi için çalışan bir çekirdeğin durdurulmasını gerektirmez. Fonksiyonları değiştirmek yerine atom olarak kGraft, tutarlı "dünya görüşleri" (veya "evrenler") sağlar. Kullanıcı alanı süreçler, çekirdek konuları ve işleyicileri kesmek, bunlar yürütülürken izlenir, böylece yamalı çekirdek işlevlerinin orijinal sürümleri kullanılmaya devam edebilir. Bunu başarmak için kGraft, yamalı işlevlerin orijinal sürümlerini bir oku-kopyala-güncelle (RCU) modundadır ve hangi işlemin, çekirdek iş parçacığının veya kesme işleyicisinin bunları yürüttüğüne bağlı olarak orijinal ve yamalı sürümler arasında dinamik olarak seçim yapar. Daha spesifik olarak, işlevlerin orijinal sürümleri kullanılmaya devam eder‍ — ‌ sıcak yama uygulandığında‍ — ‌ şu anda yürütülmekte olan işlemler için çekirdek alanı içinde, tamamlanma noktalarına ulaşana kadar çekirdek evreleri için ve şu anda kesme işleyicileri yürütmek için.[3][4][8][9]

Tasarımı nedeniyle kGraft, sıcak yamaları uygularken ek gecikme getirmez. Dezavantajı olarak, çekirdek alanı içinde çok uzun süre kalan süreçler olması durumunda, yamalı çekirdek işlevlerinin orijinal sürümlerinin daha uzun süre sürdürülmesi gerekebilir; örneğin, bir süreç bekleyebilir G / Ç bir ağ soketi. Ayrıca, işlevlerin hem orijinal hem de yamalı sürümlerinin paralel olarak çalıştırılmasına izin verildiğinden, çekirdeğin dahili veri yapılarını farklı şekillerde kullanırlarsa sorunlar ortaya çıkabilir.[4][9]

KGraft tarafından sağlanan "dünya görüşleri" veya "evrenler" oku-kopyala-güncelle moda[3]:14,15,17
Ek mantık olmadan, yamalı işlevleri atomik olarak değiştirmemek tutarsızlıklara yol açabilir.
Her süreç izlenir, böylece tek bir işlemde sürekli olarak yamalı bir işlevi yürütür. sistem çağrısı.
Her şey yeni bir "evrene" göç ettikten sonra, trambolin stil kontrollerine artık gerek yok.

Tarih

SUSE Ocak 2014'te kGraft'ı duyurdu[10] ve Mart 2014'te GNU Genel Kamu Lisansı sürüm 2 (GPLv2 ) çekirdek bölümü için ve sürüm 3 koşulları altında (GPLv3 ) kullanıcı alanı bölümü için.[1][5] Kısa bir süre sonra yayınlandı Kırmızı şapka adlı kendi canlı çekirdek yama uygulamasını yayınladı kpatch.[11] kGraft, Linux kernel ana hattına birleştirilmeyi hedefliyor ve Nisan 2014'te eklenmek üzere sunuldu.[4][9]

kGraft, SUSE Linux Enterprise Sunucusu 12, 18 Kasım 2014 tarihinde ek bir özellik olarak SUSE Linux Enterprise Canlı Yama.[12][13]

Canlı çekirdek yaması için minimalist temeller, 12 Nisan 2015'te piyasaya sürülen kernel sürüm 4.0'da Linux çekirdek ana hattında birleştirildi. Bu temeller, esas olarak çekirdeğe dayanıyor. ftrace işlevsellik, hem kGraft hem de kpatch tarafından sıcak yamalamayı destekleyebilen ortak bir çekirdek oluşturur. uygulama programlama Arayüzü (API) sıcak yamalar içeren çekirdek modülleri ve bir uygulama ikili arabirimi (ABI) kullanıcı alanı yönetim araçları için. Ancak, Linux kernel 4.0'a dahil edilen ortak çekirdek yalnızca x86 mimari ve sıcak yamalar uygulanırken işlev düzeyinde tutarlılığı sağlamak için herhangi bir mekanizma sağlamaz.[6][14][15]

Nisan 2015'ten bu yana, kGraft'ı Linux çekirdek ana hattı tarafından sağlanan ortak canlı yama çekirdeğine taşıma konusunda devam eden çalışmalar var.[15] Ancak, gerekli işlev düzeyinde tutarlılık mekanizmalarının uygulanması gecikmiştir çünkü çağrı yığınları Linux çekirdeği tarafından sağlanan, aşağıdakileri içeren durumlarda güvenilmez olabilir: montaj kodu uygun olmayan yığın çerçeveleri; Sonuç olarak, taşıma çalışmaları Eylül 2015 itibarıyla devam ediyor. Çekirdeğin çağrı yığınlarının güvenilirliğini artırmak amacıyla, özel bir sağlık kontrolü Stacktool kullanıcı alanı yardımcı programı da geliştirilmiştir.[16][17]

Ayrıca bakınız

  • Dinamik yazılım güncelleme, programları çalışırken yükseltmeye odaklanan bir araştırma alanı
  • Kexec, çalışan bir sistemden tamamen yeni bir Linux çekirdeği yüklemek için bir yöntem
  • Ksplice ve KernelCare, sırasıyla Ksplice, Inc. (daha sonra Oracle tarafından satın alındı) ve CloudLinux tarafından geliştirilen diğer Linux çekirdeği canlı yama teknolojileri

Referanslar

  1. ^ a b c "SUSE, Linux Çekirdeğinin Canlı Yaması için kGraft'ı Yayınladı". SUSE. 27 Mart 2014. Alındı 7 Kasım 2014.
  2. ^ "Sürüm 5.9". 11 Ekim 2020. Alındı 13 Ekim 2020.
  3. ^ a b c d e Vojtěch Pavlík (28 Mart 2014). "kGraft: Linux çekirdeğinin canlı yama uygulaması" (PDF). linuxfoundation.org. Alındı 7 Kasım 2014.
  4. ^ a b c d e f Jonathan Corbet (30 Nisan 2014). "İlk kGraft gönderimi". LWN.net. Alındı 7 Kasım 2014.
  5. ^ a b Chris Duckett (4 Şubat 2014). "Suse's kGraft, canlı çekirdek yamasını Linux'a geri koymaya çalışıyor". ZDNet. Alındı 11 Şubat 2020.
  6. ^ a b "Linux kernel 4.0, Bölüm 1.2. Canlı yama". kernelnewbies.org. 26 Nisan 2015. Alındı 27 Nisan 2015.
  7. ^ Vojtěch Pavlík (31 Ocak 2014). "kGraft: Live Kernel Patching". suse.com. Alındı 7 Kasım 2014.
  8. ^ Libby Clark (4 Mart 2014). "SUSE Labs Direktörü, kGraft ile Canlı Kernel Yama Yapmayı Konuşuyor". linux.com. Arşivlenen orijinal 10 Mart 2016. Alındı 7 Kasım 2014.
  9. ^ a b c Michael Larabel (1 Mayıs 2014). "SUSE Gönderileri kGraft, Red Hat Mesajları Kpatch Yamaları". Phoronix. Alındı 7 Kasım 2014.
  10. ^ "SUSE, Linux Çekirdeğinin Canlı Yaması için kGraft'ı Geliştiriyor". SUSE. 31 Ocak 2014. Alındı 28 Aralık 2014.
  11. ^ Josh Poimboeuf; Seth Jennings (26 Şubat 2014). "Kpatch ile tanışın: Dinamik Kernel Yama". redhat.com. Alındı 11 Şubat 2020.
  12. ^ "SUSE Linux Enterprise Live Patching Artık Kullanılabilir". SUSE. 18 Kasım 2014. Alındı 23 Kasım 2014.
  13. ^ Sean Michael Kerner (18 Kasım 2014). "SUSE, Kurumsal Linux'a Canlı Yama ve Ceph Depolamasını Getiriyor". serverwatch.com. Alındı 23 Kasım 2014.
  14. ^ Jonathan Corbet (25 Şubat 2015). "Canlı yama için zorlu bir yama". LWN.net. Alındı 27 Nisan 2015.
  15. ^ a b "Linux kernel kaynak ağacı: kernel / git / torvalds / linux.git: Jiri Kosina'dan canlı yama altyapısını çekin". kernel.org. 11 Şubat 2015. Alındı 27 Nisan 2015.
  16. ^ Jonathan Corbet (30 Eylül 2015). "Derleme zamanı yığın doğrulaması". LWN.net. Alındı 2 Ekim 2015.
  17. ^ Josh Poimboeuf (24 Eylül 2015). "Linux kernel belgeleri: Documentation / stack-validation.txt (v13 yamasından)". LWN.net. Alındı 2 Ekim 2015.

Dış bağlantılar