Linux'un systemd'si Bunca Yıldan Sonra Neden Hala Bölücüdür?
Yayınlanan: 2022-01-29systemd 10 yaşında, ancak Linux topluluğunda bununla ilgili hisler yumuşamadı—şimdi hiç olmadığı kadar bölücü. Pek çok büyük Linux dağıtımı tarafından kullanılmasına rağmen, sert muhalefet pes etmedi.
Linux Önyükleme Sırası
Bilgisayarınızı açtığınızda, donanım önyüklenir ve ardından (bilgisayarınızın kullandığı önyükleme sektörünün türüne göre) ya ana önyükleme kaydı (MBR) yürütülür ya da Birleşik Genişletilebilir Ürün Yazılımı Arabirimi (UEFI) çalışır. Bunların her ikisinin de son eylemi, Linux çekirdeğini ateşlemektir.
Çekirdek belleğe yüklenir, kendini açar ve başlatılır. RAM'de, genellikle initramfs
veya initrd
adlı bir yardımcı program tarafından geçici bir dosya sistemi oluşturulur. Bu, gerekli sürücülerin belirlenmesini ve yüklenmesini sağlar. Bu da, kullanıcı-alanı dosya sisteminin kullanıcı-alanı ortamını kurmak için yüklenmesine ve hazırlanmasına izin verir.
Kullanıcı alanı ortamının oluşturulması, çekirdek tarafından bir kullanıcı alanında başlatılan ilk süreç olan init süreci tarafından gerçekleştirilir. 1 işlem kimliğine (PID) sahiptir. Diğer tüm işlemler, init işleminin doğrudan veya dolaylı çocuklarıdır.
systemd
önce, init işlemi için ana varsayılan varsayılan, Unix System V init'in yeniden işlenmesiydi. Kullanılabilir başka seçenekler de vardı, ancak System V init, Berkeley dışı Software Distribution (BSD) türetilmiş dağıtımların çoğunda standart seçenekti. Doğrudan Linux'un manevi atası olan System V Unix'ten geldiği için birçok kişi onu init yapmanın “resmi yolu” olarak görüyor.
Başlatma işlemi, işletim sisteminin anlamlı ve etkileşimli bir şekilde çalışmasını sağlamak için gereken tüm arka plan programlarını ve hizmetleri başlatır. Bu arka plan programları, ağ yığını gibi şeyleri yönetir, bilgisayarınızdaki diğer donanımları etkinleştirir ve bir önyükleme ekranı sağlar.
Bu arka plan işlemlerinin çoğu, başladıktan sonra da çalışmaya devam eder. Olay bilgilerini günlüğe kaydetme, cihazları takarken veya çıkarırken donanım değişikliklerini izleme ve kullanıcı oturum açmalarını yönetme gibi şeyler yaparlar. Şaşırtıcı olmayan bir şekilde, init sistemi ayrıca hizmetleri yönetmek için özellikler içerir.
PID 1 olan işlemi görmek için ps
kullanabiliriz. f
(tam format listeleme) ve p
(PID) seçeneklerini kullanacağız:
ps -fp 1
PID 1 ile sürecin systemd
olduğunu görüyoruz. Aynı komutu Manjaro Linux'ta çalıştırmak farklı bir sonuç verdi. PID 1 ile süreç /sbin/init
olarak tanımlandı. Bu dosyaya hızlı bir bakış, bunun systemd
ile sembolik bir bağlantı olduğunu gösterir:
ps -fp 1
ls -hl /sbin/init
ps
ile ppid
(ana işlem kimliği) seçeneğini kullanarak, systemd
tarafından hangi işlemlerin doğrudan başlatıldığını görebiliriz:
ps -f --ppid 1
Aşağıdaki resimde de görebileceğiniz gibi oldukça uzun bir liste.
Alternatifler
Birkaç proje, geleneksel System V init'e bir alternatif üretmeye çalıştı. Temel sorunlardan biri, System V init ile tüm işlemlerin birbiri ardına seri olarak başlatılmasıdır. Önyükleme sırasının verimliliğini artırmak için birçok alternatif proje, süreçleri eşzamanlı ve eşzamansız olarak başlatmak için paralellik kullanır.
İşte bunlardan bazıları hakkında bazı bilgiler:
- Upstart: Canonical tarafından geliştirildi, Ubuntu 9.10, Red Hat, Red Hat Enterprise Linux (RHEL) 6, CentOS 6 ve Fedora 9'da kullanıldı.
- Runit: FreeBSD ve diğer BSD türevleri, macOS ve Solaris'in yanı sıra Linux sistemlerinde çalışır. Aynı zamanda Void Linux'ta varsayılan başlatma sistemidir.
- s6-linux-init: System V init'in bu yedeği, genellikle "bir şeyi yapın ve onu iyi yapın" şeklindeki sese indirgenen Unix felsefesini yakından takip edecek şekilde tasarlanmıştır.
Farklı işlevsellik ve tasarımda başka birçok var. Ancak, hiçbiri sistemin yaptığı systemd
yaratmadı.
sistem yolu
systemd
2010'da piyasaya sürüldü ve 2011'de Fedora'da kullanıldı. O zamandan beri birçok dağıtım tarafından benimsendi. RedHat'ta iki yazılım mühendisi olan Lennart Poettering ve Kay Sievers tarafından geliştirilmiştir.
systemd
, bir init değişiminden çok daha fazlasıdır. Bunun yerine, sistem başlatmayı, arka plan programlarını ve hizmetleri, günlüğe kaydetmeyi ve günlük tutmayı ve Linux'ta özel modüller tarafından zaten işlenen diğer birçok işlevi işleyen yaklaşık 70 ikili dosya paketidir. Bunların çoğunun sistem başlatma ile ilgisi yoktur.
systemd
tarafından sağlanan cinlerden bazıları şunlardır:
- systemd-udevd: Fiziksel cihazları yönetir.
- systemd-logind: Kullanıcı oturum açma işlemlerini yönetir.
- systemd-resolved: Yerel uygulamalara ağ adı çözümlemesi sağlar.
- systemd-networkd : Ağ cihazlarını yönetir ve algılar ve ağ yapılandırmalarını yönetir.
- systemd-tmpfiles: Geçici ve geçici dosya ve dizinleri oluşturur, siler ve temizler.
- systemd-localed: Sistem yerel ayarlarını yönetir.
- systemd-machined: Sanal makineleri ve kapsayıcıları algılar ve izler.
- systemd-nspawn: Hafif bir ad alanı kapsayıcısında bir komut veya başka bir işlem başlatarak chroot'a benzer bir işlevsellik sağlayabilir.
Ve bu, buzdağının sadece görünen kısmı ve aynı zamanda meselenin de can damarı. systemd
, rakiplerine göre kapsam kaymasının tam tanımı olan bir init sisteminden beklenenleri çoktan geride bıraktı.
"O çok büyük. Çok İşe Yarar."
systemd
karşıtları, kapsadığı geniş, ilginç işlevsellik karışımına dikkat çekiyor. Bu özelliklerin tümü Linux'ta zaten mevcuttu ve belki de bazılarının yenilenmesi veya yeni bir yaklaşıma ihtiyacı vardı. Ancak, tüm bu işlevselliği bir başlangıç sistemi olması gereken bir sistemde bir araya getirmek mimari olarak kafa karıştırıcıdır.
systemd
, çok fazla kritik işlev için tek bir başarısızlık noktası olarak adlandırıldı, ancak bu haklı görünmüyor. Kuşkusuz, Unix'in her şeyi yapan büyük yazılım parçaları yerine birlikte çalışan küçük araçlar yaratma felsefesini ortadan kaldırıyor. systemd
kesinlikle monolitik olmasa da (tek bir devasa dosyadan ziyade birçok ikili dosyadan oluşur), tek bir çatı altında birçok farklı yönetim aracı ve komutu içerir.
Monolitik olmasa da, büyüktür. Ölçek hakkında bir fikir edinmek için, çekirdek 5.6.15 kod tabanındaki ve GitHub deposunun systemd
ana dalındaki metin satırlarını saydık.
Bu nispeten kaba bir ölçümdü. Sadece kod satırlarını değil, metin satırlarını da saydı. Bu, yorumları, belgeleri ve diğer her şeyi içeriyordu. Ancak, benzer bir karşılaştırmaydı ve bize basit bir kıstas verdi:
( bul ./ -name '*.*' -print0 | xargs -0 kedi ) | wc -l
Çekirdeğin yaklaşık 28 milyon (tam olarak 27.784.340) metin satırı vardı. Buna karşılık, systemd
1.349.969 veya yaklaşık 1.4 milyona sahipti. Mutlu-şanslı metriğimiz ile systemd
, çekirdeğin boyutunun yaklaşık yüzde 5'inde çıkıyor, bu çılgınca!
Başka bir karşılaştırma olarak, Arch Linux dağıtımı için System V init'in modern bir uygulamasının satır sayısı 1.721 satıra çıktı.
Poettering'in, Elektrik ve Elektronik Mühendisleri Enstitüsü (IEEE) Bilgisayar Topluluğu'nu veya Taşınabilir İşletim Sistemi Arayüzü (POSIX) standardını açıkça dikkate almadığı açıktır. Aslında, geliştiricileri POSIX'i görmezden gelmeye teşvik etti:
“Öyleyse kendinize The Linux Programming Interface'in bir kopyasını alın, POSIX uyumluluğu hakkında söylediği her şeyi görmezden gelin ve harika Linux yazılımınızı hackleyin. Oldukça rahatlatıcı!”
systemd
yalnızca Red Hat'e fayda sağlayan bir Red Hat projesi olduğu, ancak daha geniş Linux dünyasına zorla beslendiği yönünde suçlamalar var. Evet, Red Hat içinde doğdu ve onun tarafından yönetilir ve yönlendirilir. Ancak, katkıda bulunan 1.321 kişiden yalnızca bir kısmı Red Hat için çalışıyor.
Peki, Red Hat'in faydaları nelerdir?
Bir zamanlar Red Hat'in CEO'su olan IBM başkanı Jim Whitehurst şunları söyledi:
“Red Hat birçok mevcut seçeneği değerlendirdi ve hatta Red Hat Enterprise Linux 6 için Canonical'ın Upstart'ını kullandık. Nihayetinde systemd'yi seçtik çünkü gördüğümüz sorunları çözmek için genişletilebilirlik, basitlik, ölçeklenebilirlik ve iyi tanımlanmış arayüzler sağlayan en iyi mimari bu. bugünü ve geleceği öngörmek.”
Whitehurst ayrıca gömülü sistemlerde de fayda gördüklerini söyledi. Red Hat, “özellikle istikrar ve güvenilirliğin bir numaralı endişe olduğu telekom ve otomotiv endüstrilerinde, dünyanın en büyük yerleşik satıcılarıyla” ortaklık yapıyor.
Bunlar teknik olarak mantıklı sebepler gibi görünüyor. Şirketin güvenilirlik ihtiyacını anlayabilirsiniz ve Red Hat'in kendi çıkarlarını gözetmesi mantıksız değil, ancak diğer herkes de aynı şeyi yapmalı mı?
Kool-Aid sistemini mi içiyorsun?
systemd
bazı muhalifleri, dağıtımların ve insanların Red Hat'in liderliğini körü körüne takip ettiğini ve benimsediğini söylüyor.
Ancak, tıpkı "Kool-Aid'i içmek" tabiri gibi, bu pek doğru değil. 1978'de tarikat lideri Jim Jones'un 900'den fazla takipçisini siyanürlü üzüm aromalı bir sıvı içerek intihar etmeye zorlamasından sonra ortaya çıkan ifade, Kool-Aid'i yanlış bir şekilde utandırıyor. Grup aslında Flavor Aid içti ama o zamandan beri Kool-Aid o fırça tarafından katranlandı.
Ayrıca, Linux dağıtımları Red Hat'i körü körüne takip etmez; ciddi bir müzakereden sonra systemd
benimsiyorlar. Tartışma, Debian posta listelerinde uzun süre hararetlendi. Bununla birlikte, 2014'te topluluk, systemd
varsayılan başlatma sistemi olarak benimsemeye ve aynı zamanda alternatifleri desteklemeye oy verdi.
Debian, RedHat, Fedora veya CentOS'tan türetilmediği için önemli bir örnektir. Red Hat'ten Debian'a uygulanan herhangi bir yönlendirme yok. Ve Debian, PID 1 gibi, Ubuntu ve onun birçok yan ürünü de dahil olmak üzere birçok torun sahibidir.
Debian topluluğu tarafından alınan kararlar geniş kapsamlıdır. Ayrıca şiddetle tartışılıyor ve Condorcet oylama yöntemini kullanarak oylanıyorlar. Topluluk da bu tür seçimleri kolay kolay yapmıyor.
Aralık systemd
odaklanmaya ve alternatifleri keşfetmeye devam etmek için tekrar oy kullandı. Körü körüne takip etmenin tam tersi, bu aslında iş yerinde demokrasi ve seçim özgürlüğünün bir ders kitabı örneğidir.
Seçim Sınırlamaları
Genellikle belirli bir Linux dağıtımıyla systemd
kullanıp kullanmamayı seçemezsiniz. Bunun yerine, dağıtımlar onu kullanmak isteyip istemediklerini kendileri seçer ve hangi Linux dağıtımını tercih edeceğinizi seçebilirsiniz. Belki de sevdiğiniz bir Linux dağıtımı systemd
geçmiştir. Tarz değiştiren favori bir müzisyen gibi, bu sarsıcı olabilir.
Debian, Fedora, CentOS, Ubuntu, Arch, Solus ve openSUSE kullanan ve systemd
benimsenmesine itiraz eden kişiler, kendi seçim dağıtımlarını kullanmaktan dışlandıklarını hissedebilirler. Mimari seçimlerden herhangi biri, kapsam kayması veya POSIX'i dikkate almama konusunda yeterince güçlü hissediyorlarsa, bu dağıtımı kullanmaya devam etmeyi savunulamaz bulabilirler.
Elbette bir spektrum var. Bir yanda meseleleri anlamayan (hatta umursamayan) insanlar var, diğer yanda tutkulu karşı çıkanlar var. Ortada bir yerde, değişiklikleri sevmeyen, ancak gemiden atlayacak kadar rahatsız olmayanlar var. Peki ya tercihleri ya da ilkeleri nedeniyle seçtikleri dağıtımda kalamayan dağıtım mültecileri?
Ne yazık ki, istediğiniz init sistemini kurmak kadar kolay değil. GNOME gibi uygulamalar veya masaüstü ortamları systemd
bağımlı olduğunda ortaya çıkan zorluklar bir yana, herkesin bunu yapacak teknik yeteneği yoktur.
Başka bir dağıtıma geçmeye ne dersiniz? Devuan gibi bazıları, systemd
benimsemiş systemd
olmayan dağıtım çatalları (bu durumda Debian) olarak ortaya çıktı. Devuan'ı kullanmak, ana dağıtıma benzer olmalıdır, ancak systemd
olmayan tüm çatallar için durum böyle değildir. Örneğin, Fedora'dan ayrılıp AntiX, Gentoo veya Slackware'e geçerseniz çok farklı bir deneyim yaşayacaksınız.
Hiçbir Yere Gitmiyor
systemd
yaptıklarından bazılarını seviyorum (süreçler için basit ve standart kontrol mekanizmaları). Yaptığı bazı şeylerin mantığını anlamıyorum (ikili günlükler). Ayrıca yaptıklarından bazılarını sevmiyorum (ana klasörleri yenilemek - bunu kim istedi?).
Debian gibi dağıtımlar akıllıca olanı yapıyor ve seçeneklerini açık tutmak için alternatifleri araştırıyor. Bununla birlikte, systemd
uzun mesafe için içindedir.
Linux makinelerini başkaları için yönetiyorsanız, System V init'i bildiğiniz kadar systemd
de öğrenin. Bu sayede, karşılaştığınız her ne olursa olsun, görevlerinizi yerine getirebileceksiniz.
Sadece evde Linux mu kullanıyorsunuz? Eğer öyleyse, hem teknik ihtiyaçlarınızı karşılayan hem de Linux ideolojinizi tamamlayan bir dağıtım seçin.
İLGİLİ: Systemd, Linux Ana Dizininizin Çalışma Şeklini Değiştirecek