Çekirdek Çalışma Zamanı Parametrelerini Kalıcı ve Kalıcı Olmayan Bir Şekilde Değiştirme


Bu LFCS (Linux Foundation Sertifikalı Sistem Yöneticisi) serisinin Bölüm 13'ünde, devam eden önyükleme işlemi için çekirdeğe seçenekler ileterek sistemin davranışını değiştirmek üzere GRUB'un nasıl kullanılacağını açıkladık.

Benzer şekilde, çalışan bir Linux sisteminde belirli çalışma zamanı çekirdek parametrelerini tek seferlik bir değişiklik olarak veya bir yapılandırma dosyasını düzenleyerek kalıcı olarak değiştirmek için komut satırını kullanabilirsiniz.

Böylece, sistemin çalışması beklenen şekilde gerekli bir değişiklik nedeniyle ihtiyaç duyulduğunda, çekirdek parametrelerini çok fazla zorluk yaşamadan anında etkinleştirmenize veya devre dışı bırakmanıza izin verilir.

/proc Dosya Sistemine Giriş

Dosya Sistemi Hiyerarşi Standardının en son spesifikasyonu, /proc'un, diğer çekirdek ve bellek bilgilerinin yanı sıra süreç ve sistem bilgilerinin işlenmesi için varsayılan yöntemi temsil ettiğini belirtir. Özellikle /proc/sys; aygıtlar, sürücüler ve bazı çekirdek özellikleri hakkındaki tüm bilgileri bulabileceğiniz yerdir.

/proc/sys dosyasının gerçek iç yapısı büyük ölçüde kullanılan çekirdeğe bağlıdır, ancak içinde aşağıdaki dizinleri bulmanız muhtemeldir. Buna karşılık, bunların her biri, her parametre kategorisinin değerlerinin korunduğu başka alt dizinler içerecektir:

  1. dev: makineye bağlı belirli cihazlara ilişkin parametreler.
  2. fs: dosya sistemi yapılandırması (örneğin kotalar ve inode'lar).
  3. çekirdek: çekirdeğe özgü yapılandırma.
  4. net: ağ yapılandırması.
  5. vm: çekirdeğin sanal belleğinin kullanımı.

Çekirdek çalışma zamanı parametrelerini değiştirmek için sysctl komutunu kullanacağız. Değiştirilebilecek parametrelerin tam sayısı şu şekilde görüntülenebilir:

sysctl -a | wc -l

Çekirdek parametrelerinin tam listesini görüntülemek istiyorsanız şunu yapmanız yeterlidir:

sysctl -a 

Yukarıdaki komutun çıktısı BİRÇOK satırdan oluşacağından, daha dikkatli bir şekilde incelemek için bir boru hattını ve ardından daha azını kullanabiliriz:

sysctl -a | less

İlk birkaç satıra bakalım. Lütfen her satırdaki ilk karakterlerin /proc/sys içindeki dizinlerin adlarıyla eşleştiğini unutmayın:

Örneğin, vurgulanan satır:

dev.cdrom.info = drive name:        	sr0

sr0'un optik sürücünün takma adı olduğunu belirtir. Başka bir deyişle, çekirdek onu bu şekilde "görür" ve ona atıfta bulunmak için bu adı kullanır.

Aşağıdaki bölümde Linux'ta diğer "daha önemli" çekirdek çalışma zamanı parametrelerinin nasıl değiştirileceğini açıklayacağız.

Linux Çekirdeği Çalışma Zamanı Parametreleri Nasıl Değiştirilir veya Değiştirilir

Şu ana kadar anlattıklarımıza göre bir parametrenin adının, bulunabileceği /proc/sys içindeki dizin yapısıyla eşleştiğini görmek kolaydır.

Örneğin:

dev.cdrom.autoclose → /proc/sys/dev/cdrom/autoclose
net.ipv4.ip_forward → /proc/sys/net/ipv4/ip_forward

Linux Çekirdek Parametrelerini Kontrol Edin

Bununla birlikte, belirli bir Linux çekirdeği parametresinin değerini sysctl ve ardından parametre adını kullanarak veya ilgili dosyayı okuyarak görüntüleyebiliriz:

sysctl dev.cdrom.autoclose
cat /proc/sys/dev/cdrom/autoclose
sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward

Linux Çekirdek Parametrelerini Ayarlayın veya Değiştirin

Bir çekirdek parametresinin değerini ayarlamak için sysctl'yi de kullanabiliriz, ancak -w seçeneğini kullanarak ve ardından parametrenin adını, eşittir işaretini ve istenen değeri kullanabiliriz.

Başka bir yöntem, parametreyle ilişkili dosyanın üzerine yazmak için echo komutunu kullanmaktır. Başka bir deyişle, aşağıdaki yöntemler sistemimizdeki paket yönlendirme işlevini devre dışı bırakmak için eşdeğerdir (bu arada, bir kutunun ağlar arasında trafik aktarması beklenmediğinde bu varsayılan değer olmalıdır):

echo 0 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=0

sysctl kullanılarak ayarlanan çekirdek parametrelerinin yalnızca geçerli oturum sırasında uygulanacağını ve sistem yeniden başlatıldığında kaybolacağını unutmamak önemlidir.

Bu değerleri kalıcı olarak ayarlamak için /etc/sysctl.conf dosyasını istediğiniz değerlerle düzenleyin. Örneğin, /etc/sysctl.conf dosyasında paket iletmeyi devre dışı bırakmak için dosyada şu satırın göründüğünden emin olun:

net.ipv4.ip_forward=0

Daha sonra değişiklikleri çalışan konfigürasyona uygulamak için aşağıdaki komutu çalıştırın.

sysctl -p

Önemli çekirdek çalışma zamanı parametrelerinin diğer örnekleri şunlardır:

fs.file-max, çekirdeğin sistem için ayırabileceği maksimum dosya tanıtıcısı sayısını belirtir. Sisteminizin kullanım amacına bağlı olarak (birkaç örnek vermek gerekirse web/veritabanı/dosya sunucusu), bu değeri sistemin ihtiyaçlarını karşılayacak şekilde değiştirmek isteyebilirsiniz.

Aksi takdirde, en iyi ihtimalle “Çok fazla açık dosya” hata mesajı alırsınız ve en kötü ihtimalle işletim sisteminin başlatılmasını engelleyebilirsiniz.

Masum bir hata nedeniyle kendinizi bu son durumda bulursanız, tek kullanıcı modunda önyükleme yapın (Bölüm 13 – Linux Grub Önyükleme Yükleyicisini Yapılandırma ve Sorun Giderme bölümünde açıklandığı gibi) ve /etc/sysctl.conf dosyasını şu şekilde düzenleyin: daha önce talimat vermişti. Aynı kısıtlamayı kullanıcı bazında ayarlamak için bu serinin Bölüm 14 – Linux İşlem Sınırı Kullanımını İzleme ve Ayarlama konusuna bakın.

kernel.sysrq, sistem çalıştırıldığında belirli tuş birleşimlerinin acil durum eylemlerini başlatmasına izin vermek amacıyla klavyenizdeki SysRq tuşunu (aynı zamanda yazdırma ekranı tuşu olarak da bilinir) etkinleştirmek için kullanılır. tepkisiz hale geldi.

Varsayılan (16) değeri, sistemin Alt+SysRq+key kombinasyonunu dikkate alacağını ve sysrq.c'de listelenen eylemleri gerçekleştireceğini belirtir. kernel.org'da bulunan belgeler (burada anahtar, b-z aralığındaki bir harftir). Örneğin, Alt+SysRq+b sistemi zorla yeniden başlatacaktır (sunucunuz yanıt vermiyorsa bunu son çare olarak kullanın).

Uyarı! Bu tuş birleşimine sanal makinede basmaya çalışmayın çünkü bu, ana sisteminizin yeniden başlatılmasına neden olabilir!

1 olarak ayarlandığında, net.ipv4.icmp_echo_ignore_all ping isteklerini yok sayacak ve bunları çekirdek düzeyinde bırakacaktır. Bu, aşağıdaki resimde gösterilmektedir - bu çekirdek parametresini ayarladıktan sonra ping isteklerinin nasıl kaybolduğuna dikkat edin:

Bireysel çalışma zamanı parametrelerini ayarlamanın daha iyi ve daha kolay bir yolu, /etc/sysctl.d içindeki .conf dosyalarını kullanarak bunları kategorilere göre gruplandırmaktır.

Örneğin, /etc/sysctl.conf dosyasında net.ipv4.ip_forward=0 ve net.ipv4.icmp_echo_ignore_all=1 ayarlarını yapmak yerine, /etc/sysctl.d içinde net.conf adında yeni bir dosya oluşturabiliriz:

echo "net.ipv4.ip_forward=0" > /etc/sysctl.d/net.conf
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.d/net.conf

Bu yaklaşımı kullanmayı seçerseniz aynı satırları /etc/sysctl.conf dosyasından kaldırmayı unutmayın.

Özet

Bu makalede, sysctl, /etc/sysctl.conf ve / içindeki dosyaları kullanarak hem kalıcı hem de kalıcı olmayan çekirdek çalışma zamanı parametrelerinin nasıl değiştirileceğini açıkladık. vb/sysctl.d.

sysctl belgelerinde daha fazla değişkenin anlamı hakkında daha fazla bilgi bulabilirsiniz. Bu dosyalar, sysctl aracılığıyla ayarlanabilen parametrelerle ilgili en eksiksiz belge kaynağını temsil eder.

Bu makaleyi faydalı buldunuz mu? Kesinlikle öyle yaptığınızı umuyoruz. Geliştirmek için herhangi bir sorunuz veya öneriniz varsa bize bildirmekten çekinmeyin.