Linux Çekirdeğini Döküm Konumunu Ayarlama

Linux Cekirdegini Dokum Konumunu Ayarlama



Linux'ta “Çekirdek Dökümü” Nedir?

Bir işlem beklenmedik bir şekilde kapandığında, genellikle sisteminizde bir 'çekirdek dökümü' bırakır. Bununla ilgili bir mesaj var. Bir çekirdek, bir hata ayıklama aracı olarak hizmet eder ve hata ayıklama bilgilerini de içeren bir bellek görüntüsüdür. Bir programda hata ayıklamak istemeyen bir kullanıcıysanız, çekirdeği silebilirsiniz:

$ rm çekirdek

Ayrıca, yenisi atılırsa eski çekirdeğin üzerine yazılacağından, onu olduğu gibi bırakabilirsiniz. Çekirdek dökümünü aşağıdaki komutla da devre dışı bırakabilirsiniz:







$ azaltmak -c 0

Çekirdek dökümlerini talep üzerine (örneğin, bir hata ayıklayıcı aracılığıyla) oluşturabiliriz veya sonlandırmanın ardından otomatik olarak üretilebilirler. Çekirdek, bir programın ani çıkışının bir sonucu olarak çekirdek dökümlerini başlatır. Bunlar, ek işlemler için başka bir programa (systemd-coredump gibi) gönderilebilir.



Genellikle olduğu gibi, daha iyi kararlılık ve sorun giderme için verilerin toplanması ile hata ayıklama verilerinden hassas bilgilerin açığa çıkarılması riski arasında bir denge vardır.



Neleri Kapsayacağız?

Bu yazıda, Ubuntu 20.04 işletim sisteminde çekirdek dökümlerinin konumunun nasıl ayarlanacağını göreceğiz. Şimdi başlayalım.





Çekirdek Dökümü Oluşturma

İlk önce nasıl bir çekirdek dökümü oluşturabileceğimizi görelim. Bunun için Linux kill komutunu kullanıyoruz. İlk olarak, bir işlemin PID'sini bulun ve ardından bir öldürme sinyali gönderin. Örneğin, uyku sürecini başlatalım ve ardından PID'si ile sonlandıralım:

$ uyku 500

$ öldürmek -s SIGTRAP $ ( kavramak uyku )



Artık bir çekirdek dökümü oluşturmayı öğrendiğinize göre, onu sonraki bölümlerde kullanabilirsiniz.

Nereye gidiyorlar?

Çekirdek döküm dosyası varsayılan olarak core.pid olarak adlandırılır ve uygulamanın çalışma dizininde oluşturulur. Burada pid, işlem kimliğidir.

ulimit aracı ile mevcut kabuk ve ondan sonra gelen tüm kabuklar için sistem kaynak limitlerini alabilir veya değiştirebilirsiniz. Çekirdek dosya boyutu sınırını doğrulamak veya yapılandırmak için aşağıdaki komutu kullanın:

$ azaltmak -c

Çekirdek dosyanın sınırlanmasını veya kesilmesini önlemek için, sınırın genel olarak 'sınırsız' [1] olarak ayarlandığından emin olun. Bu, aşağıdaki satırı ekleyerek /etc/security/limits.conf dosyasında yapılabilir:

kök - sınırsız çekirdek

* - çekirdek sınırsız

Şimdi, oturumunuza uygulanacak limitler için oturumu kapatın ve tekrar oturum açın.

Çekirdek Dökümünün Konumunu Özelleştirme

'sysctl kernel.core_pattern' komutu veya '/proc/sys/kernel/core_pattern' normalde çekirdek dökümlerinin gideceği konumu ayarlamak için kullanılır.

Geçerli çekirdek modelinin ayarlarını görmek için aşağıdaki komutu girin:

$ kedi / proc / sistem / çekirdek / çekirdek_desen

Genellikle, burada 'temel' olarak listelenen varsayılan değeri bulacaksınız.

Çekirdek Döküm Konumunu Ayarlamak için “/proc/sys/kernel/core_pattern” Kullanımı

“/proc/sys/kernel/core_pattern” dosyasını [2] [3] kullanarak çekirdek dökümlerini geçici olarak yeni bir konuma yönlendirelim, örneğin /tmp/dumps/core. Şimdi, aşağıdaki adımları izleyin:

Aşama 1 . İlk olarak, çekirdek dökümlerini depolamak için bir dizin oluşturun:

$ mkdir -p / tmp / çöplük / çekirdekler /

Adım 2 . Bu dizine gerekli izinleri verin:

$ chmod a+x / tmp / çöplük / çekirdekler /

Aşama 3 . Şimdi, çekirdek dökümü yolunu geçici olarak ayarlayın:

$ Eko '/tmp/dump/çekirdek/çekirdek' | sudo tişört / proc / sistem / çekirdek / çekirdek_desen

Yine, global olarak ulimiti sınırsız olarak ayarlayın.

Burada, aşağıda gösterildiği gibi dosya adına başka bilgiler ekleyebiliriz:

$ Eko '/tmp/dump/cores/core_%e.%p_%t' | sudo tişört / proc / sistem / çekirdek / çekirdek_desen

Burada kullanılan her parametre şu şekilde tanımlanabilir:

% ve: için yürütülebilir dosya isim

% p: için işlem İD veya pid.

% t: için zaman damgası ekleme

Adım 4 . Ardından, önceki ayarları kalıcı olarak uygulamak için “/etc/sysctl.conf” dosyasını değiştirmeliyiz. Bu dosyayı aç:

$ sudo nano / vesaire / sysctl.conf

Şimdi bu dosyaya şu satırı ekleyin:

kernel.core_pattern = / tmp / çöplük / çekirdekler / çekirdek

Ayrıca, bu satır yerine şunu da ekleyebilirsiniz:

kernel.core_pattern= '/tmp/dump/cores/core_%e.%p_%t'

Tüm yapmamız gereken bu. Şimdi, 'Çekirdek Dökümü Oluşturma' bölümünde belirtildiği gibi bir çekirdek dökümü oluşturun. Bundan sonra, çekirdek dosyamızın oluşturulup oluşturulmadığını kontrol edebiliriz:

$ ls -l / tmp / çöplük / çekirdekler /

Çekirdek Döküm Konumunu Ayarlamak için “Sysctl” Komutunu Kullanma

Daha önce de belirttiğimiz gibi sysctl komutunu da aynı amaçla kullanabiliriz. Çekirdek dökümü konumunu ve çekirdek dosyanın biçimini değiştirelim:

Aşama 1 . Yeni bir dizin oluşturun ve gerekli izinleri verin:

$ mkdir -p / tmp / çöplüklerim

$ chmod bir+rwx / tmp / çöplüklerim

Adım 2 . Şimdi, sadece aşağıdaki komutu çalıştırın:

$ sudo sistem -içinde kernel.core_pattern= / tmp / çöplüklerim / çekirdek_ % ve. % p_ % t

Aşama 3 . Şimdi, daha önce yaptığımız gibi çekirdek dökümünü yeniden oluşturun. Bundan sonra, çekirdek dosyanın oluşturulup oluşturulmadığını kontrol edin:

$ ls -l / tmp / çöplüklerim /

Ubuntu sistemlerinde çekirdek dökümleri genellikle Apport'a gönderilir. Red Hat tabanlı sistemler için Otomatik Hata Raporlama Aracına (ABRT) iletilebilir. Başlangıçta, çekirdek dökümü konumunu yapılandırmada bir sorunla karşılaşıyordum, bu yüzden Ubuntu 20.04'te Apport'u tamamen devre dışı bırakmak zorunda kaldım. Belki Red Hat ve diğerleri için de durum böyle olabilir.

Çözüm

Bu yazıda, Ubuntu 20.04 işletim sistemi üzerinde çekirdek dökümlerinin konumunu nasıl özelleştirebileceğimizi gördük. Çekirdek dökümleri, neyin yanlış olduğunu anlamanıza yardımcı olabilir, ancak hassas verileri sızdırmak için korkunçtur. Çekirdek dökümleri, gerekli olmadıklarında devre dışı bırakılmalı ve yalnızca kesinlikle gerekli olduğunda etkinleştirilmelidir. Böyle bir durumda, sıradan kullanıcıların verilere erişememesi için dosyaların güvenli bir şekilde saklandığını doğrulayın. Ayrıca, kararınız ne olursa olsun, amaçlandığı gibi çalıştığından emin olmak için yapılandırmanızı her zaman test etmelisiniz.

Çekirdek dökümleri ve varsayılan yapılandırmalar, çeşitli işletim sistemleri tarafından farklı şekilde işlenir. Son zamanlarda çoğu Linux sistemi, bazı küçük kural ayarlamaları getiren systemd'yi benimsiyor. Sisteminizin nasıl yapılandırıldığına bağlı olarak, çekirdek dökümlerini aramanız gerekebilir.