Üye Girişi
x

Giriş Başarılı.

Yanlış Bilgiler.

E-mail adresinizi doğrulamalısınız.

Facebook'la giriş | Kayıt ol | Şifremi unuttum
İletişim
x

Mesajınız gönderildi.

Mesajınız gönderilemedi.

Güvenlik sorusu yanlış.

Kullandığınız Sosyal Medyayı Seçin
Yeni Klasör 8 yıldır sizin için en güvenli hizmeti veriyor...

Teknoloji dünyasındaki son gelişmeler ve sürpriz hediyelerimiz için bizi takip edin.

Çekirdeğe Yama Uygulanması

> 1 <

Blade IV

grup tuttuğum takım
Albay Grup
Hat durumu Cinsiyet Özel mesaj 8324 ileti
Yer: İstanbul
İş:
Kayıt: 22-05-2006 06:51

işletim sistemim [+][+3][+5] [-]
kırık link bildirimi Kırık Link Bildir! #156839 22-01-2007 08:57 GMT-1 saat    
Yama Nedir?

patch (yama) uygulaması, iki dosya arasındaki farklılıkları bulmak için kullanılan GNU'nun diff uygulaması elde edilen yama dosyasını kullanarak eski dosyanın yeni sürümünü elde etmekte kullanılır. diff oldukça fazla seçeneğe sahiptir fakat genellikle iki dosya arasında değişen satırları listelemek ve değişen satırları orjinal halleri ile göstermek için listeleyen bir dosyanın oluşturulması için kullanılır. Yama asıl olarak kaynak kodu dosyalarını içeren bir dizini, bütün kaynak kodunu Internet'ten indirmeden güncellemek için kullanılır. Bir yamayı indirmek esas olarak sadece değişen satırları indirmektir.

Yamanın Kullanılması

patch uygulaması, bütün seçeneklerini içeren oldukça iyi hazırlanmış bir kılavuz sayfası ile beraber gelmektedir. Fakat bunların sadece ikisi bütün işinizi görmek için yeterli olmaktadır.

Kod:
patch -p1 < [yama_dosyası]

patch -R < [yama_dosyası]


-p1 seçeneği yama dosyası içindeki dosya adlarından en soldakini çıkarmak için kullanılır. Bu seçeneği kullanmak için yamayı, yamanacak dizine yerleştirin ve daha sonra bu dizin içinde

Kod:
patch -p1 < [yama_dosyası]


komutunu verin.
Bu seçeneği daha iyi anlamak için aşağıdaki PIII.patch örneğini ele alalım:


Kod:
# diff -u -recursive --new-file koc-yama/linux/Documentation/Configure.help linux/Documentation/Configure.help
  --- koc-yama/linux/Documentation/Configure.help Sat Jan 29 04:37:46 2000
  +++ linux/Documentation/Configure.help Sat Jan 29 04:20:53 2000
  @@ -1637,10 +1637,10 @@
      all x86 CPU types (albeit not optionally fast), you can specify "386" here.
  -   if you specify one of "486" or "586" or "Pentium" or "PPro", then
  -   the kernel will not necessarily run on earlier architectures (e.g. a
  -   Pentium optimized kernel will run on a Ppro, but not necessarily on
  -   a i486).
  +   if you specify one of "486" or "586" or "Pentium" or "PPro" or "PIII",
  +   then the kernel will not necessarily run on earlier architectures
  +   (e.g. A Pentium optimized kernel will run on a Ppro, but not necessarily
  +   on a i486).


Bu şekilde hazırlanmış olan bir yamayı -p1 seçeneği ile uyguladığımız zaman patch uygulaması bulunduğumuz dizinde Documentation adlı altdizini arar daha sonra ise Configure.help adlı dosyaya bakar. Bu örnekte eksi işaretli olan satır ile artı işaretli olan satır yer değiştirir. Patch çalışırken çıktıyı ekrana gönderir fakat bu çıktı genellikle çok hızlı ilerler. Özgün dosyalar, yeni yamanmış dosyalar onların yerini alırken *.orig diye tekrar isimlendirilir.

Çekirdeğe Yama Uygulaması için Bazı Öneriler

Birçok Linux kullanıcısı patch'i çekirdek kodunu yamamak için kullanır. Bunun için en kolay yol bir kabuk betiği olan patch-kernel'i kullanmaktir. Bu betik çekirdeğin kaynak kod dizini içinde scripts adlı altdizinde bulunur. Bu betik Nick Holloway tarafindan 1995 yılında yazılmıştır. Birkaç yıl sonra Adam Sulmicki bu betiğe bazı sıkıştırma algoritmaları desteğini ekelmiştir. Bunlar *.bz, *.bz2, compress, gzip ve normal metindir. Bu betik sizin /usr/src/linux dizini içinde bulunduğunuzu ve yamanızında bu dizinde olduğunu varsayar. Bu iki değeri komut satırında


Kod:
patch-kernel [ kaynakdizini [yamadizini] ]


yazarak değiştirebilirsiniz. Patch-kernel, herhangi bir yama başarısız olursa durur. Fakat eğer yama başarılı olursa find komutunu çalıştırır ve bütün *.orig dosyalarını siler. Eğer komutların çıktılarını görmek veya *.orig dosyalarını saklamak istiyorsaniz patch komutunu doğrudan uygulayabilirsiniz. Bu yöntem ben de dahil olmak üzere birçok kişi tarafından daha güvenilir bulunuyor. Sıkıştırılmış yamayı açmadan uygulamak için aşağıdaki kanallama (pipe) kullanılabilir:

Kod:
# gzip -cd patchXX.gz | patch -p1


Yama uygulandıktan sonra işlemin uygulanamadığı dosyaları bulmak için find komutu aşağıdaki şekilde kullanılır.

Kod:
# find . -name *.rej


Eğer find, *.rej dosyasını bulursa ismini ekrana basar. Eğer find birşey bulamazsa yama doğru olarak uygulanmış demektir. Bir başka işlem *.orig dosyalarını bulmak ve silmektir. Bunun için find'i aşağıdaki şekilde kullanabiliriz:

Kod:
# find . -name *.orig -print0 | xargs -0r rm -f


Eğer bu komutu her seferinde elle yazmak istemezseniz .bash_profile, .bash_login veya .profile dosyasına aşağıdaki şekilde bir alias ekleyebilirsiniz:

Bu size origbul yazarak yukarıdaki komutu çalıştırmanızı sağlar. Sistemden çıkmadan bu komutu çalıştırmanız için:

Kod:
# source .profile


yazmanız yeterlidir.
Şimdi bu anlattıklarımıza örnek olması amacı ile linux_dvd_2_2_12_diff.patch adlı yamayı uygulayalım ve sonra bu yamayı kaldıralım:

Kod:
# cd /usr/src/linux
# patch -p1 < linux_dvd_2.2.12_diff.patch
patching file drivers/block/ide-cd.c
Hunk #1 succeeded at 2097 (offset 10 lines).
Hunk #2 succeeded at 2631 (offset 2 lines).
patching file drivers/block/ide-cd.h
Hunk #2 succeeded at 666 (offset 4 lines).
Hunk #4 succeeded at 793 (offset 4 lines).
patching file include/linux/cdrom.h
# find . -name *.rej   → (ekrana birşey basılmazsa işlem başarı ile tamamlanmış)
# find . -name *.orig
./drivers/block/ide-cd.c.orig
./drivers/block/ide-cd.h.orig  → (yamanmış dosyaların orijinalleri)
# find . -name *.orig -print0 | xargs -0r rm -f  → (bu dosyaları silmek için)


Buraya kadar olan komutlar ile çekirdeği yamama işlemimiz bitiyor. Şimdi bu yamayı kaldıralım:

Kod:
# patch -p1 -R < linux_dvd_2_2_12_diff.patch
patching file drivers/block/ide-cd.c
Hunk #1 succeeded at 2097 (offset 10 lines).
Hunk #2 succeeded at 2308 (offset 2 lines).
patching file drivers/block/ide-cd.h.
Hunk #2 succeeded at 663 (offset 4 lines).
Hunk #4 succeeded at 784 (offset 4 lines).
patching file include/linux/cdrom.h.
# find . -name *.rej
# origbul


Böylece uygulamış olduğumuz yamayı kaldırmış olduk.

Bunu ilk beğenen siz olun

Hata Oluştu


rapisyan

grup tuttuğum takım
Yarbay Grup
Hat durumu Cinsiyet Özel mesaj 407 ileti
Yer: İstanbul
İş: Hercümerç edici.
Kayıt: 30-01-2006 14:20

işletim sistemim [+][+3][+5] [-]
#199391 30-04-2007 23:15 GMT-1 saat    
paylaşım için saol neo ,güzel paylaşımlar yapıyorsun tebrik ederim..

Bunu ilk beğenen siz olun

Hata Oluştu




bağlantıyı göster (facebook ile) bağlantıyı göster (klasik üye girişi ile) kırabilir misin?




bağlantıyı göster (facebook ile) bağlantıyı göster (klasik üye girişi ile) Ben Yaptım Grubu
> 1 <