'init' ve 'systemd'nin Arkasındaki Hikaye: Linux'ta Neden 'init'in 'systemd' ile Değiştirilmesi Gerekiyor?
Sırf neler olup bittiği konusunda kendimi güncel tutmak için çeşitli Linux Dağıtımları ve Uygulamaları ile ilgili çeşitli e-posta listelerine aboneyim. Yeni hatalar neler? Yayınlanan Yamalar Nelerdir? Bir sonraki sürümde neler bekleniyor? ve daha bir sürü şey. Bu günlerde e-posta listesi, başta Debian Posta listesi olmak üzere diğer birkaç listeyle birlikte yoğun bir şekilde "Linux Divide'da tarafınızı seçin" ile dolu.
“Linux Divide'da tarafınızı seçin” neyle ilgili?
Bazı Linux Dağıtımlarında init arka plan programı, arka plan programı systemd ile değiştirilecek, ancak birçoğu bunu zaten uygulamış durumda. Bu, geleneksel Unix/Linux Guard ile Yeni Linux Guard, programcılar ve Sistem Yöneticileri arasında büyük bir boşluk yaratıyor/oluşturacak.
Bu yazımızda tüm soruları tek tek tartışıp çözeceğiz.
- Başlangıç nedir?
- sistem nedir?
- Neden init'in değiştirilmesi gerekiyordu?
- Systemd hangi özelliklere sahip olacak?
İçinde ne var?
Linux'ta init, Başlatma'nın kısaltmasıdır. init, bilgisayar başlar başlamaz başlayan ve kapanana kadar çalışmaya devam eden bir daemon işlemidir. Aslında init, bilgisayar önyüklendiğinde başlayan ilk süreçtir; bu, onu doğrudan veya dolaylı olarak çalışan tüm diğer süreçlerin üst öğesi yapar ve bu nedenle genellikle "pid=1" olarak atanır.
Eğer init arka plan programı bir şekilde başlatılamazsa, hiçbir işlem başlatılmayacak ve sistem “Kernel Panic” adı verilen aşamaya ulaşacaktır. init genellikle Sistem V init olarak anılır. System V, tasarlanan ilk ticari UNIX İşletim Sistemidir ve günümüz Linux Dağıtımlarının çoğunda init kullanımı, BSD stilini kullanan Slackware ve özel init kullanan Gentoo gibi birkaç istisna dışında System V OS ile aynıdır. .
İnit'i daha mükemmel bir şeyle değiştirme ihtiyacı uzun zamandır hissediliyordu ve zaman zaman çeşitli alternatifler geliştirildi; bunlardan bazıları dağıtımın yerel init değişimi haline geldi; bunlardan bazıları:
- Başlangıç – Ubuntu GNU/Linux'ta uygulanan ve süreci eşzamansız olarak başlatmak üzere tasarlanmış bir başlangıç değiştirme arka plan programı.
- Epoch – Basitlik ve hizmet yönetimi üzerine kurulu, süreci tek iş parçacıklı olarak başlatmak için tasarlanmış bir init değiştirme arka plan programı.
- Mudar – Python'da yazılmış, Pardus GNU/Linux'ta uygulanan ve süreci eşzamansız olarak başlatmak üzere tasarlanmış bir başlangıç değiştirme arka plan programı.
- systemd – Süreci paralel olarak başlatmak için tasarlanmış, Fedora, OpenSuSE, Arch, RHEL, CentOS, vb. gibi çeşitli standart dağıtımlarda uygulanan bir init değiştirme arka plan programı.
sistem nedir?
systemd, arka plan programının sonuna 'd' eklenecek UNIX kuralıyla adlandırılmış bir Sistem Yönetimi Arka Plan Programıdır. Böylece kolayca tanınabilirler. Başlangıçta GNU Genel Kamu Lisansı altında yayınlandı, ancak şimdi sürümler GNU Kısıtlı Genel Kamu Lisansı altında yapılıyor. İnit'e benzer şekilde, systemd doğrudan veya dolaylı olarak diğer tüm işlemlerin üst öğesidir ve önyükleme sırasında başlayan ilk işlem olduğundan genellikle "pid=1" olarak atanır.
Bir systemd, arka plan programı etrafındaki tüm paketlere, yardımcı programlara ve kitaplıklara atıfta bulunabilir. Init'in eksikliklerinin üstesinden gelmek için tasarlandı. Kendisi, işlemleri paralel olarak başlatmak için tasarlanmış, böylece önyükleme süresini ve hesaplama yükünü azaltan bir arka plan işlemidir. İnit ile karşılaştırıldığında birçok başka özelliğe sahiptir.
Neden init'i değiştirmeye ihtiyaç duyuldu?
Bir başlatma işlemi seri olarak başlar, yani bir görev yalnızca son görev başlatma işlemi başarılı olduktan ve belleğe yüklendikten sonra başlar. Bu genellikle gecikmeli ve uzun önyükleme süresiyle sonuçlandı. Bununla birlikte, systemd hız için değil, işlerin düzgün bir şekilde yapılmasını sağlamak ve böylece BM'nin gerektirdiği tüm gecikmeleri önlemek için tasarlandı.
Systemd'nin özellikleri
- Temiz, ileri teknolojiye sahip ve verimli tasarım.
- Daha basit önyükleme işlemi.
- Önyükleme sırasında eşzamanlı ve paralel işleme.
- Daha iyi API.
- Basit Birim Söz Dizimi.
- İsteğe bağlı bileşenleri kaldırma yeteneği.
- Düşük bellek ayak izi.
- Bağımlılıkları ifade etmek için geliştirilmiş teknik.
- Başlatma talimatı kabuk betiğinde değil, yapılandırma dosyasında yazılmıştır.
- Unix Etki Alanı Soketinden yararlanın.
- Systemd Takvim Zamanlayıcılarını kullanarak İş Planlama.
- Journald ile Olay Günlüğü.
- Sistem olaylarını systemd ve syslog ile kaydetme seçeneği.
- Günlükler ikili dosyada saklanır.
- systemd durumu gelecekte daha sonra çağrılmak üzere korunabilir.
- PID'yi değil, çekirdeğin grup grubunu kullanarak süreci izleyin.
- Kullanıcı girişi systemd-logind tarafından yönetilir.
- Birlikte çalışabilirlik için Gnome ile daha iyi entegrasyon.
Darboğazlar sistemi
- Her şey tek bir yerde.
- POSIX standardı değil.
Systemd ve Distro Entegrasyonu
- Linux Distribution
Entegrasyon
- Fedora
Evet, systemd'yi benimseyen ilk dağıtım
- Arch
Evet
- RedHat
Evet
- CentOS
Evet
- Debian
-
Evet, Debian 8 kod adı Jessie varsayılan olarak systemd'ye sahip olacak
- Gentoo
Evet, ancak özel init ile indirilmesi, kurulması ve yapılandırılması gerekiyor
- OpenSUSE
Evet
- Slack
Hayır (Şu ana kadar slackware'de benimsenmemiş olsa da Patric Volkerding benimsenip benimsenmeyeceğine dair herhangi bir belirti göstermedi)
- Ubuntu
Evet, Upstream ile kurulmalı ve yapılandırılmalıdır.
Tartışma
Linux çekirdeğinin baş mimarı Linus Torvalds, systemd'nin kilit geliştiricisinin kullanıcılara karşı tutumunun ve hata raporlarının iyi görünmediğini düşünüyor. Ayrıca sistem felsefesinin tuhaf olduğu ve sistem süreçlerini kontrol etmenin yabancı bir yolu olduğu da bildirildi. Aynı şey Patric Volkerding ve diğer önemli Linux Kullanıcıları ve Geliştiricilerinin yanı sıra zaman zaman çevrimiçi forumlarda da kaydedildi.
sistemd vs init
Features | init | systemd |
DBus Dependency – Mandatory | No | Yes |
Device based Activation | No | Yes |
Device dependency configuration with udev | No | Yes |
Timer based Activation | Cron/at | Proprietary |
Quota Management | No | Yes |
Automatic Service Dependency Handling | No | Yes |
Kills users Process at logout | No | Yes |
Swap Management | No | Yes |
SELinux integration | No | Yes |
Support for Encrypted HDD | No | Yes |
Static kernle module loading | No | Yes |
GUI | No | Yes |
List all the child processes | No | Yes |
Sysv compatible | Yes | Yes |
Interactive booting | No | Yes |
Portable to non x86 | Yes | No |
Adopted on | Several Distro | Several Distro |
Parallel service startup | No | Yes |
Resource limit per service | No | Yes |
Easy extensible startup script | Yes | No |
Separate Code and Configuration File | Yes | No |
Automatic dependency calculation | No | Yes |
Verbose debug | Yes | No |
Version | N/A | V44+ |
Size | 560 KB | N/A |
Number of Files | 75 files | 900 files + glib + DBus |
Lines of code – LOC | 15000 (Approx) | 224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code) |
Çözüm
pid=1 olarak çalışan herhangi bir şey bozulmamalı, karışıklık yaratmamalı ve kullanıcılar tarafından etkin ve verimli bir şekilde kontrol edilmelidir. Birçok kullanıcı, init'i systemd yerine değiştirmenin, Linux'un bir yan etkisi olarak her seferinde tekerleği yeniden icat etmekten başka bir şey olmadığına inanıyor. Ancak bu Linux'un çeşitli doğasıdır. Bunun nedeni Linux'un çok güçlü olmasıdır. Değişim iyidir ve eğer iyi bir nedenden kaynaklanıyorsa bunu takdir etmeliyiz.
Şimdilik bu kadar. Sizlerin okumayı seveceği başka ilginç bir makaleyle tekrar karşınızda olacağım. O zamana kadar bizi izlemeye devam edin ve Tecmint'e bağlı kalın. Aşağıdaki yorumlarda bize değerli geri bildirimlerinizi iletmeyi unutmayın.