aşağı yukarı bir yıla yakın zamandır, masaüstü olarak ubuntu (upgrade ederek 7.04, 7.10, 8.04, 8.10) kullanıyordum, artık işletim sistemi saçmalamaya başlayınca – menüler 4-5 dakikada açılmaya, firefox kendi kendine kapanmaya, ses kartı arada çalışmamaya başlayınca vs. ) makineyi formatlamanın zamanı geldi de geçiyor diye düşündüm. tekrar sıfırdan ubuntu kurmak yerine denemek için open solaris kurmaya karar verdim. son 1 haftadır masaüstü ve geliştirme ortamı olarak open solaris kullanıyorum, yaşadığım tecrübeleri burdan paylaşmak istedim.

önce biraz geçmişinden bahsedelim, solaris, sun microsystems’ın ürünü, ilk versiyonu 1991-1992 civarında piyasaya çıkıyor. Sun o zamanlarki popüler unix türevlerinin iyi yönlerini alarak (bsd, system v, xenix) bunları birleştirip bir unix versiyonu yapacağını açıklıyor. 2005 yılında sun solaris kaynak kodunu open source olarak açacağını açıklıyor, projenin ismide open solaris oluyor. Sun 2007 yılında Ian Murdock – debianın kurucusu – u kadroya dahil ettiğini açıklıyor. Gnome ve GNU nun araçlarını alarak yeni bir dağıtım hazırlıyorlar. 1 kasım 2008 de dağıtım 2008.11 çıkıyor.opensolaris güçlü, stabil ve gelişmiş bir unix dağıtımı. diğer unix/linux dağıtımlarından biraz farklı, dağıtıma istediğiniz paketleri sun’ın onayı olmadan ekleyemiyorsunuz, bir projeniz varsa sun mühendisleri gözetmen olarak çalışıyor, ayrıca paketlerin sun studio ile compile edilmesi gibi bir koşulda var. yani gcc ile compile edilmiş paketler resmi olarak dağıtıma dahil edilmiyor. tabii source’u alıp kendi dağıtımınızı da yapabilirsiniz (nexenta, belenix, milax gibi opensolaristen geliştirilen dağıtımlarda var), bu durum open source camiasında “opensolaris hakkatten open mı ?” şeklinde oldukça tartışılan bir durum aslında. diğer taraftan blastwave.org’dan sun’ın onayını almamış – veya gcc ile derlenmiş – binlerce paketide kullanabiliyorsunuz.sunın sun studionun cc compilerını kullanmasını şart koşması, tepki toplasada oldukça işe yarıyor en azından kde grubundakiler bunun çokta yanlış olmadığını düşünüyorlar. (http://www.osdevcon.org/2008/program_detail.html#roman 2.inci video)opensolaris’in lisans konusu da biraz karışık, CDDL lisansı ile dağıtılıyor – MPL den türetilmiş. CDDL copyleft lisans, yani source u alıp değiştirip yeniden dağıtabilirsiniz, hatta dağıtımınızı ücretlendirebilirsiniz de, temelde GPL den çokta farklı bir tarafı yok aslında. yalnız CDDL, GPLv2 ile uyumsuz. aslinda tamamen ayrıntılarda olan bu uyumsuzluk, solarisin parçalarının linuxlere eklenmesine engel oluyor. söylentiye göre, solaris geliştiricileri open solaris ilk yayınlanacağı zaman özellikle gpl ile uyumsuz bir lisans seçilmesini yada yapılmasını istemiş.masaüstü ortamı olarak gnome 2.24 kullanıyor. IPS isminde bir paket yöneticisi var, ubuntunun synaptics e çok benzeyen. Otomatik network bulucusu gibi bir şeyde var, ve çalışıyor bu şey. liveCD den açılış yaptığımda wirelessı bulup beni direk internete bağladı en azından. Güzel bir device driver utility var, eğer bir cihazın driverını manual kurmak gerekiyorsa burdan bulabiliyorsunuz, benim network kartını tanımamıştı, burdan verdiği adresten betasını indirip kurdum.Neyse, gelelim kurulum macerasına, liveCD den makineyi açınca, masaüstünde bir kurulum ikonu var, ona çift tıklayıp, harddiske kurulum yapabilirsiniz. 3-5 tane şey soruyor – kullanıcı adı, şifre, zaman dilimi, hangi partitiona kuralım vs. – bunları cevapladıktan sonra yaklaşık 15 dakikada kurulumu tamamlıyor. eğer halihazırda makinenizde kurulu işletim sistemleri varsa, XP, linux vs. önce gparted ile partitionları düzenlemeniz gerekebilir. solaris kurulacak partitionın linux partitiondan önce olması gerekiyormuş bu arada. birde kurulum sihirbazı, extended partitionları görmüyor. benim için çok mühim değildi çünkü extended partitionlarda linux vardı zaten. Vista kurulu partitionı, gparted ile küçülttüm, araya solarisi kurdum.Eğer sizde böyle yaparsanız, Vista’ya tekrar ulaşamıyorsunuz. Dosyalarınız yerinde duruyor data kaybı olmuyor, yalnız vista bir daha açılmıyor. bunun solarisle yada gparted ile ilgisi yok, vista partitionın boyutu değişince güvenlikle ilgili birşeylerden dolayı açılmıyormuş, vistanın kurulum cdsinden repair yapmak gerekiyormuş, ki çoğu laptopta olduğu gibi bende kurulum cdsi yok, repair partitionı var, oda açılmamaya karar verdi partition boyutlarını değiştirince. zaten en son vistayı ne zaman açtığımı hatırlamadığım için benim açımdan önemi yoktu, ama kurmaya karar verirseniz, vistanın kendi içinde partition resize aracı var, onunla küçültürseniz sorun olmayacaktır.Eğer kurulu bir linuxte varsa, Grub menüsünde bunu göremiyorsunuz. makine açıldıktan sonra, /boot/grub/menu.lst e linux kurulumunu eklemeniz gerekiyor – makineyi tekrar kapatıp açınca menüde görüyorsunuz linuxu.Ext3 ve NTFS partitionlara read-only ulaşabiliyorsunuz, bunun içinde sunın onaylamadığı bir paketi indirip kurmanız gerekiyor.http://www.sun.drydog.com/faq/9.html#s9.24aslında buraya kadar olanlar bir programcı olarak bizi çok ilgilendiren şeyler değil açıkçası, şimdi gelelim bir programcı gözüyle opensolarisin incelemesine.ben netbeans kullanıyorum 6.0 dan beri, netbeans i direk ips ten kurabiliyorsunuz, eğer kullanmadıysanız, gerçekten çok iyi editördür. şiddetle denemenizi tavsiye ederim. 6.5 te php desteğide var.diğer taraftan hızlıca AMP stack kurabiliyorsunuz, apache/mysql/php kurulumu 1-2 dakikanızı alıyor. ayrıca stackta dil olarak ruby, python, web sunucu olarak lighthttpd, glassfish, squid vs.de var – bunları ayrıca seçiyorsunuz kurarken. kurduktan sonra basit bir kontrol aracı çıkıyor menüde. burdan servisleri kapatıp açabiliyorsunuz.stacktaki uygulamalar hazır dtrace enabled. dtrace nedir sorusunun cevabı bu yazıya sığamayacak kadar uzun aslında, çok kısaca çalışan processleri gözlemlemek için kullanabilirsiniz. yani hangi objeler yaratıldı, hangileri ne kadar sürede yaratıldı, hangi fonksiyonlar çağırıldı vs… işin güzel tarafı bu veriyi basit scriptler kullanarak kendiniz için özelleştirebiliyorsunuz. örneğin aşağıdaki gibi$> sudo dtrace -q -F -s execution-flow.d -c “ruby hello.rb”CPU FUNCTION1 -> rb_call0 Class:inherited1 <- rb_call0 Class:inherited1 -> rb_call0 Module:method_added1 <- rb_call0 Module:method_added1 -> rb_call0 Class:new1 -> rb_call0 Object:initialize1 <- rb_call0 Object:initialize1 <- rb_call0 Class:new1 -> rb_call0 World:say1 -> rb_call0 Object:puts1 -> rb_call0 IO:write1 <- rb_call0 IO:write1 -> rb_call0 IO:write1 <- rb_call0 IO:write1 <- rb_call0 Object:puts1 <- rb_call0 World:say
yada methodların ne kadar sürede çalıştığını inceleyebiliyorsunuz.$> sudo dtrace -s timestamps.d -c “ruby hello.rb”Object initialize 9185Module method_added 10021Class inherited 25323IO write 98956
bunun yanında, containerlar yada zonelar geliyor ki bu apayrı bir hikaye. zone bir nevi sanal makine, linux teki xen gibi düşünebilirsiniz. zone lar aynı zamanda işletim sisteminin kernelını kullanıyorlar, bu yüzden çok çok az yük biniyor. bir makine üzerinde 8000 civarında zone tanımlayabiliyorsunuz. bir programcı açısından bu ne işimize yarar derseniz, hemen kendimden örnek vereyim.rails uygulamaları için nginx, mongrel, memcache, mysql, ruby kullanıyoruz, php uygulamaları içinse apache2, php5, mysql tabii birde deneme yanılmalar için yaptığımız ufak tefek projeler var. bunların hepsini bir makinede konfigure etmeye çalıştığınızda ortalık gerçekten çok karışıyor. örneğin apache 80 inci portu dinlemesi gerekiyor, ama nginxinde 80 i dinlemesi gerekiyor, aynı portu iki servis dinleyemeyeceği için, nginxten apacheye yönlendirme yapıyoruz vs. doğal olarak bu kadar farklı birleşeni bir makinede toplamaya çalışınca tabiri caizse ortalık panayira dönüyor. zone kullanınca her projeye ayrı bir makine veriyorum, böylece bir sürü konfigurasyonla uğraşmak zorunda kalmıyorum.zoneların ilginç ve güzel bir özelliği isterseniz zonelar la host os – yani gerçek sisteminiz – birleşenleri paylaşabiliyor. yani örneğin apacheyi güncellediğim zaman bütün zonelarda apache güncellenmiş oluyor. zonelarla tek tek uğraşıp gidip paket kurmak zorunda değilsiniz. sadece config dosyalarını ayrı tutabiliyorsunuz, böylece hangi zoneda hangi servislerin nasıl çalışması gerektiğini ayarlıyorsunuz, ama bir gemi güncellemek yada yeni birşey kurmak isterseniz sadece globalzone (kendi sisteminiz) da bunu güncellemeniz yeterli oluyor. tabii isterseniz wholeroot zone da kurabiliyorsunuz, o zaman global zone la hiç bir şey paylaşmıyorsunuz, sadece kernelı paylaşıyorsunuz. örneğin yazılımınız php nin farklı bir sürümünde düzgün çalışıyor mu denemek için solarisin konfigurasyonuna hiç dokunmadan bir zone yaratıp orda deneyebilirsiniz.işin daha güzel yanı yeni bir zone yaratmak yaklaşık 5dk sürüyor, ama bunu klonlayabiliyorsunuz – yaklaşık 10sn sürüyor. örneğin apache/php/mysql lerin konfigurasyonunu yaptınız, virtual sitelar oluşturdunuz vs. bunları yeni bir zone yaratıp taşımakla uğraşmıyorsunuz, varolanı hemen klonlayabiliyorsunuz.bu arada bu zoneların reboot süresi yaklaşık 2-3 sn. – evet gerçekten o kadar hızlı açılıp kapanıyor-, whole root zone kurmazsanız, bir zone aşağı yukarı 50mb kadar yer tutuyor. web programlamasıyla uğraşanlar için gerçekten çok kullanışlı.aslında dahada abartıp bu zoneların ne kadar memory kullanabileceğini, işlemcinin ne kadarını kullanabileceğini, ne kadar bandwith kullanabileceğini vs. de verebiliyorsunuz. ama daha çok bu özellikler VPS kurmak isterseniz işinize yarayacaktır sanırım. yeni bir özellik olarak ta, zonelar üzerine linux kurabiliyorsunuz – ben hiç denemedim -, centos ve redhat destekliyor şu anda.zonelar hoşunuza gitmediyse xen alternatifi de var open solaris için, ama zonelar kadar hızlı boot edip etmediğini bilemiyorum.virtualization konusunda ayrıca, full virtualization yapmak istiyorsanız, virtualbox var, örneğin sitelerin nasıl göründüğünü Windows/Internet Explorer da görmem lazım diyorsanız, virtualbox üzerine XP, vista kurabilirsiniz. virtualbox, vmware ile aynı hemen hemen ama nedense bana daha hızlı gibi geliyor. ayrıca vmware player ücretsiz olmasına rağmen, virtual box open source. ben 500mb ram, 2gb diskle xp çalıştırıyorum safari, ie de görebilmek için.

bütün bunların yanında, dosya sistemi olarak ZFS kullanıyor ki bu bambaşka bir eğlence. ZFS klasik dosya sistemleri gibi değil, partitionlar falan yok, zpool lar var. bu poollarında bölümleri var. tüm boş alanı paylaşıyorlar. örneğin /export/home (kullanıcıların home dizini) ile /ROOT (işletim sistemi) ayrı birer bölüm, ama her ikisininde boş alanı tüm kullanılabilecek alan kadar. örneğin benim sistemim şöyle gözüküyoraybars@opensolaris:~$ df -hFilesystem Size Used Avail Use% Mounted onrpool/ROOT/opensolaris-138G 10G 28G 27% /swap 791M 336K 791M 1% /etc/svc/volatile/usr/lib/libc/libc_hwcap1.so.138G 10G 28G 27% /lib/libc.so.1swap 791M 52K 791M 1% /tmpswap 791M 196K 791M 1% /var/rundevpool 1.8G 21K 1.8G 1% /devpoolrpool/export 28G 19K 28G 1% /exportrpool/export/home 28G 26K 28G 1% /export/homerpool/export/home/aybars30G 2.7G 28G 9% /export/home/aybarsrpool/export/home/chatfrontend28G 21K 28G 1% /export/home/chatfrontendrpool/export/home/chatzone28G 21K 28G 1% /export/home/chatzonerpool/export/home/glasszone28G 21K 28G 1% /export/home/glasszonerpool/export/home/rails28G 21K 28G 1% /export/home/railsrpool/export/home/sosyomat28G 21K 28G 1% /export/home/sosyomatrpool 28G 77K 28G 1% /rpool
bu bölümlerin snapshotını alabiliyorsunuz, yedeklemek için. o andaki durumunu bir dosyaya kaydediyorsunuz. tabii bunu incremental olarakta yapabiliyorsunuz. yani bir bölümü yedekledikten sonra, tekrar yedeklediğinizde çok ufak dosyalarınız oluyor. bu snapshotları başka bir makineye atıp, direk mount edebiliyorsunuz. tabii bunu zonelarla birleştirince ortaya çok ilginç bir şey çıkıyor. örneğin bir zone u zpoolda ayrı bir bölüme kurabiliyorsunuz, burdan snapshot alıp, direk servera atıp, ordaki zone u kapatıp mount edip reboot edebilirsiniz. yada incremental yedek alıp, projeyi geliştirirken bir şeyler karışırsa, aynı hızda bir önceki yedeğe dönebilirsiniz. mesela kernelı update ettiğinizde, opensolaris, kendisi snapshot alıyor – bu çok hızlı bir şey, update etmesi yaklaşık 1-2 dakika sürdü çünkü – isterseniz kernel update öncesine anında dönebiliyorsunuz.bu sistem yedeklemesi için ayrıca time slider isminde bir araçta var. xp, vistadakine benzer ama bunu dizinlerde de kullanabiliyorsunuz.

bunun yanında, sıkıştırılmış bölümleride destekliyor. yalnız sıkıştırılmış bölümler, sisteme ekstra bir yük getireceğine daha hızlı çalışabiliyor, çünkü sıkıştırılmış bölümleri bir şekilde memoryde cacheliyor. böylece daha az io yapıp, daha fazla alan kazanıyorsunuz.bunlar yetmiyor gibi, bir başka özellik, zfs için fsck yok, çünkü gerek yok. diske yazarken ve okurken hata kontrolü yapıyor kendi içinde. yani çalışırken elektrik giderse vs. makineyi açtığınızda diski kontrol etmenize gerek yok, zaten solaris çalışırken kontrol ediyor devamlı. bu kontrolu copy-on-write isminde bir metodla yapıyor, basitçe yazarken bir yandanda farklı bir alana kopyasını yazıyor, eğer yazdığı hatalıysa kopyasından devam ediyor -tabi bu kadar basit degil.ayrıca değişken blok size ı kullanıyor. örneğin sıkıştırılmış bir veriyi yazarken, yazacağı alan, normal blok alanından daha ufaksa o kadarı blok olarak işaretliyor.ZFS aşağı yukarı devrimsel birşey aslında, dosya sistemleri üzerine bilinen herşeyi bir kenara koyup yeniden inşa ediyorlar herşeyi. Apple mac os x serverın gelecek 10.6 sürümünde dahil ediyor ZFS i. FreeBSD ye ise commit edilmiş durumda, experimental olarak. Linux te ise lisans karışıklığından dolayı FUSE içine dahil edilmeye çalışılıyor – tıpkı NTFS desteği gibi.Bütün bunların yanında opensolaris çok gelişmiş bir servis yapısıyla (Service Management Facility – SMF) ile geliyor, ki buda ayrı bir dünya aslında. Şöyle ki, servislerin konfigurasyonu xml dosyalarında tutuluyor, ve bu dosyalarda şöyle şeyler diyebiliyorsunuz, örneğin mysql için, eğer servis yeniden başlarsa, apacheyi tekrar başlat gibi, yada eğer nfs hazır değilse bekle nfs hazır olunca apacheyi başlat.bu servisler aynı zamanda monitörde ediliyor, bir servis durursa tekrardan başlatılıyor – linux te monit gibi yalnız bunda herşey aşağı yukarı realtime gerçekleşiyor – örneğin mongrel ölürse, tekrardan başlıyor – fakat processin ölmesiyle tekrar başlaması arasında bir süre geçmiyor. bu restart mekanizması akıllıda aynı zamanda, mesela mongrel mysqle bağlanamadığı için çok hızlı ölüp duruyorsa, devamlı restart etmeye çalışmıyor, sorun var diyip bekliyor.toplam performans konusuna gelirsek, daha yeni kurulu sistem olduğu için yorum yapmak istemiyorum, eskisine göre cidden hızlı çalışıyor – netbeans çok hızlı açılıyor vs. – ama eskisine nerdeyse bir senedir yapmadığımı bırakmadığım için bu normal olabilir, formatlayıp tekrar ubuntu kursam yine daha hızlı çalışacaktı sonuçta.sonuç olarak eğer .net/visual studio kullanmıyorsanız, ideal bir geliştirme ortamı sunuyor opensolaris, hatta şimdiye kadar kullandığım en iyi işletim sistemi diyebilirim.