bin, sbin, usr/bin, usr/sbin arasındaki fark

30 Kasım 2010'da David Collier şunları yazdı:

Meşgul kutusunda bağlantıların bu dört dizine ayrıldığını fark ettim.
Hangi bağlantıların hangi dizinde olması gerektiğini belirlemek için basit bir kural var mı?
Örneğin, kill /bin'de, killall ise /usr/bin'de... Bu ayrımda herhangi bir mantık göremiyorum.

Ken Thompson ve Dennis Ritchie'nin Unix'i 7'da PDP-1969 üzerinde yarattığını muhtemelen biliyorsunuzdur. Böylece, 1971 civarında, bir çift RK11 disk (her biri 05 megabayt) içeren bir PDP-1,5'e yükselttiler.

İşletim sistemi büyüdüğünde ve artık ilk diske (kök FS'nin bulunduğu yer) sığmadığında, kısmen ana dizinlerin bulunduğu ikinciye taşındılar (bu nedenle, bağlama noktası /usr olarak adlandırıldı - kelimeden kullanıcı). Gerekli tüm işletim sistemi dizinlerini orada çoğalttılar (/bin, /sbin, /lib, /tmp ...) ve eski diskte yer kalmadığı için dosyaları yeni bir diske koydular. Sonra üçüncü bir diskleri vardı, onu /home dizinine yerleştirdiler ve işletim sisteminin iki diskte kalan tüm alanı alabilmesi için kullanıcıların ana dizinlerini oraya taşıdılar ve bunlar üç megabayta kadar (Vay!).

Tabii ki, "işletim sistemi önyüklendiğinde, /usr'de ikinci bir diski bağlayabilmelidir, bu nedenle mount gibi programları /usr'deki ikinci diske koymayın, yoksa sahip olursunuz" şeklinde bir kural koymaları gerekiyordu. bir tavuk-yumurta sorunu." Bu kadar basit. Ve bu 6 yıl önce Unix V35'daydı.

/bin ve /usr/bin'in (ve bu tür tüm dizinlerin) bölünmesi, bu olayların bir mirası, bürokratlar tarafından onlarca yıldır kopyalanan 70'lerden kalma bir uygulama detayı. Soruyu hiç sormadılar nedensadece yaptılar. Bu ayrım, birkaç nedenden dolayı, Linux oluşturulmadan önce bile anlamsız hale geldi:

  1. Önyükleme sırasında, "bu dosyaya ondan önce ihtiyacımız var" gibi sorunları çözen bir initrd veya initramfs kullanılır. Böylece, elimizde zaten sahip diğer her şeyi yüklemek için kullanılan geçici dosya sistemi.
  2. Berkley'deki adamlar tarafından Unix'e eklenen paylaşılan kitaplıklar, /lib ve /usr/lib içeriklerini bağımsız olarak değiştirmenize izin vermez. Bu iki parça eşleşmelidir, yoksa çalışmazlar. Bu, 1974'te olmadı çünkü o zamanlar statik bağlantı nedeniyle bir miktar bağımsızlıkları vardı.
  3. Ucuz sabit diskler, 100 civarında 1990 megabayt sınırını aştı ve aynı sıralarda, bölüm yeniden boyutlandırma yazılımı ortaya çıktı (partition magic 3.0, 1997'de çıktı).

Tabii ki, bir bölünme olduğu için, bazı insanlar bunu haklı çıkaracak kurallar bulmuşlardır. Mesela, her türlü genel işletim sistemi özelliği için kök bölüm gereklidir ve yerel dosyalarınızı / usr içine koymanız gerekir. Veya /usr içine AT&T'nin dağıttığı şeyi ve dağıtımınızın, IBM AIX'in veya Dec Ultrix'in veya SGI Irix'in eklediğinin ve /usr/local'in sisteminize özgü dosyaları içerdiğini girin. Ve sonra birisi /usr/local'ın yeni yazılım yüklemek için doğru yer olmadığına karar verdi, o yüzden hadi /opt ekleyelim! /opt/local da görünürse şaşırmayacağım ...

Tabii 30 yıl boyunca, bu ayrılık nedeniyle, dağıtıma özgü her türlü ilginç kural geldi ve geçti. Örneğin, "/tmp yeniden başlatma sırasında temizlenir, ancak /usr/tmp silinmez." (Ubuntu'da prensipte /usr/tmp yoktur ve Gentoo'da /usr/tmp, /var/tmp'ye sembolik bir bağlantıdır ve artık bu kurala tabidir ve yeniden başlatma sırasında silinmez. Evet, bu Aynı zamanda kök FS salt okunurdur ve bu durumda /usr'a da bir şey yazmanız gerekmez, ancak /var'a yazmanız gerekir. temel olarak bazen /var'a taşınmaya çalışılan /etc dışında yazılamaz ...)

(Yıllar önce genişlemesi sırasında Özgür Standartlar Grubunu yutan) Linux Vakfı gibi bürokratlar, neden orada olduklarını anlamaya çalışmadan bu kuralları belgelemekten ve karmaşıklaştırmaktan mutlular. Fark etmedikleri şey, Ken ve Dennis'in PDP-05'deki RK11 diski çok küçük olduğu için işletim sisteminin bir kısmını ana dizinlerine taşımış olmalarıdır.

Meşgul kutusunun dosyaları tarihsel olarak geliştirdiği şekilde koyduğundan oldukça eminim. Şimdiye kadar bunu yapmak için gerçek bir sebep yok. Şahsen ben sadece /usr içindeki benzer dizinlere /bin, /sbin ve /lib bağlantısı yapıyorum. Sonuçta, gömülü yazılımlarla çalışan insanlar, anlamayı ve basitleştirmeyi deniyor ...

Kaynak: habr.com

Yorum ekle