Unix ve Linux Tarihçesi: 1969'dan Günümüze Gelişim
Bell Labs 1969 başlangıcından 1992 BSD davasına kadar Unix ve Linux evrimini inceleyin. Sunucu dünyasının neden BSD yerine Linux tercih ettiğini tarihsel verilerle öğrenin.
Unix ve Linux tarihine kısa bir bakış
Unix ve Linux tarihi, kaynak koduna kimin sahip olabileceği üzerine süregelen uzun bir tartışmadır. Unix, 1969 yılında Bell Labs bünyesinde başlamıştır. Linux ise 1991 yılında Helsinki'de ortaya çıkmış olup orijinal Unix kodlarının hiçbirini içermez. İkisi arasında aktarılan temel unsurlar, bir tasarım felsefesi ve yayımlanmış arayüzler bütünüdür: dosyalar, süreçler, pipe yapıları ve küçük programları birbirine bağlayan bir shell. Unix, 1970'lerde üniversiteler arasında hızla yayılmıştır; bunun nedeni, 1956 tarihli bir antitröst anlaşmasının AT&T (American Telephone and Telegraph) şirketinin yazılım satmasını yasaklaması ve bu sebeple Bell Labs'in kaynak kodlarını düşük maliyetle lisanslamasıdır. Sonuç olarak Unix, AT&T dışında kimseye ait olmamasına rağmen her yere yayılmıştır. Bunu takip eden lisanslama mücadeleleri, sunucu kabininizde hangi özgür Unix benzeri sistemin yer alacağını belirlemiştir.
1969: yedek bir PDP-7 ve kalıcı olan fikirler
Bell Labs, 1969 yılında Multics projesinden çekildi. Multics (multiplexed information and computing service), MIT ve General Electric ile birlikte geliştirilen büyük bir zaman paylaşımlı sistemdi ve Labs, projenin tamamlanamayacak kadar büyük olduğuna karar verdi. Ken Thompson beğendiği fikirleri koruyup geri kalanını eledi ve elden çıkarılmış bir PDP-7 minibilgisayarı üzerinde küçük bir zaman paylaşımlı sistem yazdı. Dennis Ritchie ona katıldı. Unix ismi, Multics ile alay etmek için seçilmiş bir şakaydı.
1970 yılında sistem, Labs'in patent departmanındaki daktilolar için satın aldığı bir PDP-11'e taşındı; çünkü bir metin işleme aracını finanse etmek, bir işletim sistemini finanse etmekten daha kolaydı. O makinenin, sistem ve kullanıcı programları arasında paylaştırılmış 24 KB çekirdek belleği vardı. Finansman kazası, Kasım 1971 tarihli ilk Unix kılavuzunun neden biçimlendirilmiş belgelerden oluştuğunu ve neden hala man 5 crontab komutunu yazdığınızı açıklar. O kılavuzdaki bölüm numaraları, sizin kullandığınız kılavuzdaki bölüm numaralarıdır.
İki değişiklik, tasarımı kalıcı hale getirdi. Doug McIlroy'un yıllardır programların uç uca eklenmesi gerektiğini savunması üzerine, 1973'te Version 3 ile birlikte pipe'lar geldi ve Thompson, bir programın çıktısının bir sonrakinin girdisi olmasını sağlayan | operatörünü ekledi. Ardından 1973'ün sonlarında Version 4, C diliyle yeniden yazıldı. Taşınabilir bir dilde yazılmış bir işletim sistemi, yazılmadığı donanımlara da taşınabilir; Unix'in üzerinde başladığı tüm makinelerden daha uzun ömürlü olmasının nedeni budur.
Unix neden yayıldı: AT&T'nin satmasına izin verilmiyordu
1956 tarihli bir rıza kararı, AT&T'ye karşı açılan antitröst davasını sonlandırdı. AT&T telefon tekelini korudu ve karşılığında bir kısıtlamayı kabul etti: telekomünikasyon dışındaki iş kollarından uzak duracaktı. Yazılım da bu iş kollarından biriydi. Bu nedenle üniversiteler Unix talep ettiğinde, Bell Labs bunu bir ürün olarak satamadı. Kaynak kodunu, destek ve garanti olmaksızın sembolik bir ücret karşılığında lisansladı.
Bunun etkisi büyük oldu ve AT&T'nin planladığı bir sonuç değildi. 1975'te yayınlanan Sixth Edition Unix, yüzlerce bilgisayar bilimi bölümüne tam kaynak koduyla ulaştı. New South Wales Üniversitesi'nden John Lions, bu çekirdek kaynak kodunu satır satır yorumlayarak bastırdı ve derslerinde kullandı. Bir nesil, gerçek bir işletim sistemini okuyarak nasıl çalıştığını öğrendi.
Ardından lisans değişti. 1979'daki Seventh Edition lisansı, kaynak kodunun derslerde kullanılmasını yasakladı; bu yüzden Lions'ın yorumları fotokopiden fotokopiye çoğaltılarak dolaşmaya devam etti. Tüm hikayenin özü budur. Unix her yerdeydi ancak aynı zamanda özgür değildi; bu nedenle herkesin yaptığı her iyileştirme, başkasının mülkiyetindeki koda yapılan bir iyileştirmeydi.
Berkeley: fiilen yazdığınız Unix parçaları
Ken Thompson, 1975-1976 akademik yılını California Üniversitesi, Berkeley'de geçirdi ve arkasında oldukça aktif bir Unix grubu bıraktı. Berkeley'in Bilgisayar Sistemleri Araştırma Grubu (CSRG), yerel iyileştirmeleri içeren bantlar dağıttı ve bu bantlar, Berkeley Yazılım Dağıtımı olan BSD'ye dönüştü. Bill Joy, erken dönem çalışmalarının çoğunu kaleme aldı: 1978'de 1BSD ve ardından 1979'da vi düzenleyicisini ve C shell'i içeren 2BSD.
C shell, !! ve !$ komutlarının kökenidir. Bash, bu sözdizimini miras almıştır; bu yüzden bash geçmiş genişletmesi, çift tırnak içinde ünlem işareti kullananları kırk küsur yıl sonra bile şaşırtmaya devam etmektedir.
DARPA (ABD Savunma İleri Araştırma Projeleri Ajansı), yeni internet protokollerini Unix'e entegre etmesi için Berkeley'e ödeme yaptı. Ağustos 1983'te yayınlanan 4.2BSD, TCP/IP (internet protokolü üzerinden iletim kontrol protokolü) ve socket uygulama programlama arayüzünü kullanıma sundu. Sunucunuzdaki her ağ servisi, Berkeley bu isimleri 1983 yılında belirlediği için bugün hala socket(), bind(), listen() ve accept() çağrılarını bu sırayla gerçekleştirir.
Bir detay, sonraki on yılı belirledi. Bir BSD bandı, tam bir sistem değildi. AT&T Unix'i üzerine eklenen bir dizi eklentiydi ve yasal olarak çalıştırmak için geçerli bir AT&T kaynak lisansına sahip olmanız gerekiyordu. Berkeley, birkaç yıl boyunca AT&T'ye ait parçaları kendi koduyla, dosya dosya değiştirdi. Bu değişimin gerçekten tamamlanıp tamamlanmadığı, daha sonra mahkemeye taşınan soruydu.
1984: Dağılma ve Unix savaşları
Bell System, 1 Ocak 1984 tarihinde dağıtıldı ve AT&T'nin yazılım sektörüne girmesini engelleyen rıza kararnamesi de yürürlükten kalktı. AT&T artık Unix'i bir ürün olarak satabiliyordu ve bunu yaptı. Ticari kaynak lisansları pahalılaştı; bu nedenle Unix, üniversitelerin öğrencilere kolayca dağıttığı ucuz bir araç olmaktan çıktı.
Satıcılar sistemi çoktan çatallamıştı (fork). Her iş istasyonu şirketi, kendi Unix sürümünü kendi donanımı üzerinde sunuyordu; bu yüzden 1980'lerin sonuna gelindiğinde, bir sistem için yazılan programın diğerine taşınması (porting) gerekiyordu. Sektör 1988 yılında iki standart kampına bölündü: bir tarafta Open Software Foundation, diğer tarafta Unix International yer alıyordu. Taraflar, hangi Unix'in "gerçek" olduğu konusunda tartışırken yıllarca birbirleriyle uyumsuz sistemler piyasaya sürdüler.
POSIX (taşınabilir işletim sistemi arayüzü) bu karmaşadan doğdu. IEEE 1003.1 standardı 1988'de yayımlandı ve Unix benzeri bir sistemin neleri yapması gerektiğini tanımladı: sistem çağrıları, kabuk (shell) davranışı, standart araçlar ve C kütüphanesi arayüzleri. Bu durum kulağa geldiğinden daha önemlidir; çünkü bir standart, teknik bir şartnamedir ve hiçbir lisans ile kısıtlanamaz. Üç yıl sonra bir öğrenci, bu belgeleri temel alarak bir çekirdek (kernel) yazdı.
Minix ve bıraktığı boşluk
Andrew Tanenbaum, Minix'i 1987 yılında işletim sistemleri ders kitabı için bir eğitim sistemi olarak yayımladı. Minix, Unix benzeri küçük bir sistemdi; kaynak kodları kitapla birlikte geliyordu ve öğrencilerin sahip olduğu ucuz PC'lerde çalışabiliyordu. Seventh Edition Unix'in aksine, sınıfta okunması yasal bir sistemdi.
Minix, bir kitapta açıklanabilir olması gerektiği için kasıtlı olarak küçük tutuldu ve Tanenbaum, sistemi bir üretim ortamı haline getirecek yamaları reddetti. Lisansı da özgür değildi: kitabı satın almanız gerekiyordu ve değiştirdiğiniz Minix'i yeniden dağıtma hakkınız yoktu. Bu nedenle 1991 yılına gelindiğinde, bir öğrenci çalışan Unix benzeri bir çekirdeği okuyabiliyor ancak üzerinde kalıcı bir şey inşa edemiyordu.
GNU, çekirdek haricindeki her şeye sahipti
Richard Stallman, Eylül 1983'te GNU projesini duyurdu ve hedefi eksiksiz, özgür ve Unix benzeri bir sistem oluşturmaktı. 1991 yılına gelindiğinde GNU, bir çekirdeği çevreleyen bileşenlerin çoğunu üretmişti: GCC derleyicisi, GNU C kütüphanesi, ikili yardımcı programlar ve Brian Fox tarafından 1989'da yazılan, sunucunuzun sizi hala içinde başlattığı kabuk olan bash. GNU çekirdeği Hurd ise sürekli geciken parçaydı.
GNU Genel Kamu Lisansı sürüm 2, Haziran 1991'de yayımlandı. Kuralı kısadır. Kodu kullanabilir ve değiştirebilirsiniz; ancak sonucu dağıtırsanız, kaynak kodunu da aynı şartlar altında dağıtmanız gerekir. Bu kural, iki bölüm sonra bu hikayenin dönüm noktası haline gelecektir.
Ağustos 1991: comp.os.minix grubuna gönderilen ileti
25 Ağustos 1991 tarihinde Helsinki'deki bir öğrenci, Usenet grubu comp.os.minix'e şu iletiyi gönderdi:
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.Sürüm 0.01, Eylül 1991'de yayınlandı. Bu sürüm, ne Unix ne de Minix ile kod paylaşmaktaydı. 386 işlemciler için geliştirilen, Minix yüklü bir makinede yazılan, POSIX arayüzlerine uygun olarak tasarlanan ve halihazırda mevcut olan GNU araçlarıyla eşleştirilen yeni bir çekirdekti. Tanenbaum, Ocak 1992'de Torvalds'a monolitik çekirdek tasarımının artık eskidiğini söyledi. Tasarım konusunda haklı bir noktaya değiniyordu; ancak Torvalds farklı bir soruya yanıt veriyordu: Bir öğrencinin sahip olduğu tek ucuz bilgisayarda ne iyi çalışır?
Şubat 1992'de 0.12 sürümü, GPL lisansı altına alındı. Torvalds, o günden bu yana bunu en iyi kararı olarak nitelendirdi. Orijinal Linux lisansı, herhangi bir ticari kazanç elde edilmesini yasaklıyordu; bu durum, daha sonra ortaya çıkacak olan CD satıcılarını ve destek şirketlerini engelleyebilirdi. GPL ise ticari faaliyete izin verirken, dağıtılan her değişikliğin aynı paylaşılan ağaca geri dönmesini zorunlu kıldı.
Dava süreci: Nisan 1992 - Şubat 1994
Berkeley, Haziran 1991'de Networking Release 2 (Net/2) sürümünü yayınladı. Bu sürüm, AT&T kaynaklı dosyaların çıkarıldığı, neredeyse eksiksiz bir BSD sistemiydi. Altı çekirdek dosyası eksikti. Bill ve Lynne Jolitz bunların yerine yenilerini yazarak Mart 1992'de 386BSD 0.0, 14 Temmuz 1992'de ise 386BSD 0.1 sürümlerini yayınladı. Linux henüz hobi amaçlı bir çekirdekken, 386 mimarisi için özgür, tam ve olgun bir BSD sistemi artık mevcuttu. Berkeley Software Design, Inc. (BSDi), desteklenen ticari bir yapı olan BSD/386'yı sattı ve reklamını 1-800-ITS-UNIX telefon numarasıyla yaptı.
Nisan 1992'de, o dönemde Unix'in sahibi olan AT&T iştiraki Unix System Laboratories (USL), ticari sırlar ve Unix ticari markası nedeniyle New Jersey'deki federal mahkemede BSDi'ye dava açtı. Dava daha sonra California Üniversitesi Yönetim Kurulu'nu (Regents of the University of California) da kapsayacak şekilde genişletildi. Üniversite, 1993 yılında California'da karşı dava açarak, AT&T'nin kendi lisansının gerektirdiği atıfları yapmadan Berkeley kodlarını System V içinde dağıttığını savundu.
Davanın hukuki temeli 1993 yılında çöktü. Yargıç Dickinson Debevoise, USL'nin eski 32V kodları üzerindeki telif hakkı iddiasının muhtemelen geçersiz olduğu görüşüyle, AT&T'nin bu kodları yıllarca telif hakkı bildirimi olmaksızın dağıttığını belirterek USL'nin ihtiyati tedbir talebini reddetti. Novell, 1993 ortalarında USL'yi AT&T'den satın aldı ve Novell yönetimi bu çekişmenin sona ermesini istedi. Dava Şubat 1994'te uzlaşmayla sonuçlandı. Berkeley dağıtımındaki yaklaşık 18.000 dosyadan üçü çıkarıldı ve yaklaşık yetmiş tanesine USL telif hakkı bildirimi eklendi.
Berkeley, Haziran 1994'te 4.4BSD-Lite sürümünü yayınladı ve bu sürüm hukuki açıdan temizdi. 1993 yılında tartışmalı Net/2 kodu üzerine kurulan FreeBSD ve NetBSD, sistemlerini bu yeni temel üzerinde yeniden inşa etmek zorunda kaldı; bu süreç 1994 yılının büyük bir kısmını aldı. Linux 1.0, bu yeniden inşa sürecinin ortasında, Mart 1994'te yayınlandı.
Linux neden BSD yerine sunucu dünyasını ele geçirdi?
Dava süreci popüler cevaptır ve cevabın bir parçasıdır. Nisan 1992 ile Şubat 1994 arasında, bir ürün için ücretsiz bir Unix seçmek zorunda olan herkes, AT&T avukatlarının devam eden bir davası ile hiç kimsenin dava edemeyeceği Finlandiyalı bir öğrencinin çekirdeği arasında seçim yapmak zorundaydı. Bu, web'in ortaya çıktığı ve ilk Linux dağıtımlarının belirdiği tam zaman aralığıydı: Temmuz 1993'te Slackware, Ağustos 1993'te Debian, ardından Red Hat ve SUSE. Red Hat, bu avantajı ticari bir standarda dönüştürdü ve Red Hat Linux'tan CentOS'a, oradan da Rocky ve AlmaLinux'a giden yol, 1993 yılında kurulan bir dağıtımın neden hala birçok kurumsal sunucuda neyin çalışacağına karar verdiğini açıklamaktadır.
Dava süreci kadar önemli olan dört faktör daha vardı.
- Donanım. Linux, kodunun ilk satırından itibaren standart 386 PC'leri hedefledi ve ucuzlayan donanım da buydu. BSD'nin ağırlık merkezi VAX ve iş istasyonlarıydı; 386 portu ise iki kişi tarafından yürütülen harici bir çabaydı.
- Lisans. GPL, değiştirilmiş bir çekirdeği dağıtan şirketin yaptığı değişiklikleri yayınlamasını zorunlu kılar, bu nedenle satıcıların çalışmaları tek bir ağaca geri döner. BSD lisansı ise bir şirketin değişikliklerini gizli tutmasına izin verir ve şirketler de bunu yaptı.
- Geliştirme modeli. Torvalds, yabancılardan gelen yamaları hızla birleştirdi ve sürekli sürümler yayınladı. 386BSD ise o kadar yavaş sürüm yayınlıyordu ki, kullanıcıları 1993 yılında onu iki kez çatallayarak (fork) NetBSD ve FreeBSD'ye, 1995'te ise OpenBSD'ye dönüştürdü.
- İvme. Geliştiriciler diğer geliştiricilerin bulunduğu yere gider ve sürücüler en çok kullanıcısı olan sistem için yazılır.
Teknik soru konusunda dürüst olmak gerekirse; 1994 yılında BSD, tutarlı bir temel, belgelenmiş bir geçmiş ve Linux'un yetişmesinin yıllar aldığı ağ koduna sahip daha bitmiş bir sistemdi. 1994 yılında kimse Linux'u daha iyi olduğu için seçmedi. İnsanlar onu erişilebilir olduğu, yasal yükümlülük taşımadığı, zaten sahip oldukları donanımda çalıştığı ve her hafta geliştiği için seçtiler.
BSD'nin korudukları ve günümüzdeki kullanım alanları
BSD varlığını sürdürdü. Kaybettiği şey ise varsayılan konumuydu. Bunun en net kanıtı kendi makinenizde duruyor: OpenBSD projesi 1999 yılında OpenSSH'i yazdı ve bu yazılım bugün dağıtılan hemen hemen her Linux sistemindeki SSH sunucusudur; bu yüzden öğrenilmesi gereken SSH anahtarı alışkanlıkları her iki ailede de aynıdır.
Netflix, video servislerini FreeBSD tabanlı cihazlar üzerinden sunmaktadır. Juniper yönlendiricilerinde çalışan işletim sistemi Junos'un temelinde FreeBSD yatar. PlayStation sistem yazılımı FreeBSD'den türetilmiştir. Apple'ın macOS ve iOS işletim sistemleri, çekirdeklerinde ve kullanıcı alanı (userland) genelinde BSD kodu barındırır. BSD'nin paylaşılan sunucu ağacını kaybetmesine neden olan izin verici lisans, BSD kodunun adından hiç bahsedilmeyen pek çok donanımın içine girmesini sağlamıştır.
Bugün bir seçim yapıyorsanız, soru tarihsel olmaktan ziyade pratiktir. Sunucu olarak Linux ve FreeBSD karşılaştırması, ZFS, jails, ports ağacı ve üçüncü taraf yazılımların ne kadarının Linux'u temel aldığına dayanır. Sunucu olarak FreeBSD 15, bir müze sergisi değil, güncel ve bakımı yapılan bir sistemdir. Linux ve Windows Server karşılaştırması ise cevabı uygulama yığınınızın ne olduğuna bağlı olan ayrı bir sorudur.
Günümüzde VPS üzerinde kullandığınız 1969 tasarımı
Bunların her biri, onları kullanan insanların çoğundan daha eskidir.
- Pipe (boru).
who | wc -l, oturum açmış kullanıcıları sayar çünkü 1973 yılındaki Version 3 Unix, bir programın çıktısının başka bir programın girdisi haline gelmesine izin vermiştir. - Manuel bölümleri.
man 1 lsveman 5 crontab, Kasım 1971 tarihli manueldeki numaralandırma şemasını kullanır. - Dosya sistemi ayrımı.
/usr, 1971 yılında PDP-11 üzerindeki kök diskin dolması ve geliştiricilerin dosyaları ikinci disk paketine taşıması nedeniyle mevcuttur. Dağıtımlar o günden bu yana bu ayrımı ortadan kaldırmıştır: Ubuntu 24.04 veya Debian 13 üzerindels -ld /binkomutunu çalıştırdığınızda,usr/bindizinine giden sembolik bir bağlantı görürsünüz. - Soket çağrıları. Berkeley bunları 1983 yılında 4.2BSD için yazmıştır ve her ağ servisi (daemon) hala bunları kullanmaktadır.
- POSIX. Standartlara uygun olarak yazılmış bir
#!/bin/shbetiği; Linux, FreeBSD, macOS ve Solaris üzerinde hiçbir değişiklik yapılmadan çalışır, çünkü standart, hepsinin uyguladığı ortak noktadır.
Bir miras bu yolculuktan sağ çıkamadı: Linux'un System V'ten aldığı kabuk betiği (shell-script) tabanlı önyükleme dizisi, günümüzde neredeyse tüm dağıtımlardan kaldırıldı ve bunun yerine systemd'nin getirilmesiyle ilgili tartışma, Unix benzeri bir sistemin ne olması gerektiğine dair en güncel kavgadır.
Sanal bir özel sunucu kiralayıp giriş yaptığınızda, 24 KB belleğe ve hizmet edilecek bir patent departmanına sahip bir makine için tasarlanmış bir arayüzde yazı yazıyorsunuz demektir. Bu arayüz; yayınlandığı, üzerinde tartışıldığı, standartlaştırıldığı ve ardından orijinal kodu görmesine asla izin verilmeyen insanlar tarafından sıfırdan yeniden uygulandığı için günümüze kadar varlığını sürdürdü.
FAQ
Linux orijinal Unix kodlarını içerir mi?
Hayır. Linus Torvalds, 1991 yılında çekirdeği sıfırdan yazmış ve AT&T kaynak kodları yerine POSIX arayüzlerini hedeflemiştir. Unix mirası; dosyalar, süreçler, boru hatları (pipes) ve sistem çağrısı isimleri gibi tasarım ve yayınlanmış arayüzlerden ibarettir. Çekirdeğin etrafındaki GNU araçları da 1983 yılından itibaren sıfırdan yazılmıştır. Bu bağımsızlık, AT&T'nin BSD kodları üzerindeki dava sürecinin Linux'a hiçbir şekilde dokunmamasının nedenidir.
AT&T'nin BSD'ye karşı açtığı dava ne zaman gerçekleşti ve BSD'yi bitirdi mi?
Unix'in sahibi olan AT&T iştiraki USL, Nisan 1992'de BSDi'ye dava açmış, daha sonra California Üniversitesi'ni de davalı olarak eklemiştir. 1993 yılında hakim, eski 32V kodu üzerindeki telif hakkı iddiasının muhtemelen geçersiz olduğuna hükmederek ihtiyati tedbir talebini reddetmiştir. Novell, 1993 ortasında USL'yi satın almış ve Şubat 1994'te davayı uzlaşmayla sonuçlandırmıştır; yaklaşık 18.000 dosyadan üçü kaldırılmış ve yetmiş kadarına yeni telif hakkı bildirimleri eklenmiştir. Bu durum BSD'yi bitirmemiştir. Ancak dünyanın özgür bir Unix seçtiği iki yıl boyunca BSD'nin benimsenmesini dondurmuştur.
Linux neden BSD yerine sunucuları ele geçirdi?
Hukuki kesinlik bir nedendi: 1992 ve 1993 yılları boyunca Linux hiçbir davayla karşılaşmazken BSD bir davayla uğraşıyordu. Diğer nedenler ise 386 mimarisinin ilk günden itibaren hedef alınması, GPL'in satıcı değişikliklerini tek bir ağaca geri çekmesi ve 386BSD üç farklı yöne çatallanırken katkıda bulunanların ilgisini canlı tutacak kadar hızlı bir birleştirme süreciydi. Teknik üstünlük belirleyici faktör değildi, çünkü 1994 yılında BSD daha tamamlanmış bir sistemdi.
FreeBSD bugün hala kullanılmaya değer mi?
Evet, hem de somut nedenlerle: temel sisteme entegre ZFS, olgun bir izolasyon modeli olarak jails, tek bir bütünleşik birim olarak geliştirilen temel sistem ve güncelliğini koruyan dokümantasyon. Bunun maliyeti uyumluluk çalışmalarıdır; çünkü çoğu üçüncü taraf sunucu yazılımı, container araçları ve satıcı desteği Linux'u varsayar. FreeBSD'yi, depolama ve ağ yetenekleri bu maliyeti karşıladığında tercih edin; eski soya olan sadakatten dolayı değil.