
GNU/Linux Dağıtımı:
Önceki dersimizde Linux'un ne olduğundan bahsetmiştim. Hatırladığınız gibi Linux bir işletim sistemi çekirdeğidir. Ancak bir işletim sistemi sadece çekirdek yazılımı değildir. Bu çekirdek yazılımını kullanan ve kullanıcının istediklerini gerçekleştirebilmesini sağlayacak yazılımlara da ihtiyacımız vardır. Çünkü çekirdek yazılımı bilgisayarın donanımı ve üzerinde çalışabilecek olan yazılımlar ile iletişim kurabilir. Kullanıcı ile doğrudan etkileşime giremez. Bu yüzden kullanıcı ve işletim sistemi arasında köprü oluşturacak farklı yazılımlara ihtiyacımız vardır. Linux yazılaya başlamadan önce GNU - GNU is Not Unix isimli bir serbest yazılım projesi başlamıştı. Bu proje bir bilgisayarın üzerinde olması gereken her tür yazılımın açık kaynak kodlu olarak hazırlanması olarak özetlenebilir. Bu proje işletim sisteminden her hangibir yardımcı yazılıma kadar bir çok yazılımı da içeriyordu. Linux işletim sisteminin geliştirilmeye başlandığı dönemde GNU projesinin işletim sistemi henüz hazır değildi. Linux işletim sistemi çok hızlı bir şekilde gelişiyor ancak GNU projesinin işletim sistemi (GNU Hurd) Linux kadar hızlı yol alamıyordu. Bu dönemde tam olarak serbest yazılımlar ile bilgisayarını kullanmak isteyen kullanıcılar GNU projesinin yazılımları ile birlikte Linux işletim sistemini kullanıyorlardı. Bu dönemlerde GNU/Linux u kurmak sadece bilgisayar dahilerince yapılabilirdi. Bundan yola çıkarak kullanıcılar ve serbest yazılımdan para kazanmayı düşünen işletmeler, GNU/Linux birleşimini ve piyasada bulunan diğer serbest yazılımları bir araya getirmeye ve bunların kurulum, ayarlama gibi işlemlerini yapacak kolay yazılımları geliştirmeye başladılar. İşte bu yazılımların bir araya getirilmesi ile oluşturulan yazılım paketlerine GNU/Linux dağıtımı (İngilizcesi GNU/Linux Distribution) deniyor.
Böylece birçok kişinin linux versiyonu olarak bildiği şeylerin aslında (kısaca) Linux dağıtımı olduğunu öğrenmiş oldunuz. Peki Linux versiyonu nedir?
Linux versiyonu:
Linux versiyonu, linux işletim sisteminin birbirinden farklı özelliklere sahip olan (daha yeni veya daha eski ) halleridir. Aslında bu çok basit bir olgu. Yazılım geliştirenler ya da en azından bilgisayar kullanıcısı olanlar kolayca anlayacaktır. Linux versiyonları, versiyonun ne kadar gelişkin olduğunu belirtecek biçimde numaralanır. Bu numaralar 2.4.18 gibi 3 kısımdır. Bu kısımlardan 1.cisi Ana versiyon numarasıdır(Major). Bu numara çok belirgin değişikler durumunda artar. 2.kısım Alt Versiyon numarasıdır(Minor). Bu numara bu versiyon özelliklerinin ne kadar çok geliştirilmiş olduğunu anlatır. Bu Minor numaralarının ayrı bir önemi de tek sayı olmaları halinde güvenilir olmayan henüz oturmamış ve muhtemelen bir çok hata içeren bir çekirdek olduğunu belirtmesidir. Dikkatli olanlarınız farketmiş olabilir dağıtımlar muhakkak minor versiyon numarası çift sayı olan yani stabil olan çekirdekleri içerir. Son kısımda yama numarasıdır (patch). Bu da bu çekirdeğin kaç kez yamanmış olduğunu gösterir. Genellile her yama bir den fazla hatayı düzeltecektir.
Bu iki kavramdan sonra basit bir önerimi sunayım. Kurulum için deneyimsizseniz Fedora, Mandrake veya SUSE gibi çok kolay kurulabilen dağıtımları tercih etmelisiniz. Bu iki ana kavram dağıtım tercihi esnasında işinize yarayacak şeylerdir. Artık kurulum içerisinde önem arz edecek olan şeylere geliyoruz.
Disk - Bölümü (Partisyon):
Kurulum içinde önemli olan bir kavram disk bölümüdür. Disk bölümleri fiziksel bir parça olan diskleri, işletim sistemince kullanabilmek amacıyla ortaya çıkmıştır. İşletim sistemi kullanıcı tarafından istenen her türlü dosyaya en hızlı ve en doğru biçimde ulaşmak zorunda olduğu için diske yazarken ve okurken bazı kurallara uyarak bu işlemleri optimum hız ve doğrulukta çalışır. Bu yüzden fiziksel olan diski bir şeklide haritalamalı. Doğal olarak haritalama işlemini depolama ortamının tümü üzerinde veya bir bölümünde yapabilir. Bu haritalamanın yapıldığı bölümlere disk bölümü (partition) deniyor. Ancak bu konu başka bir kavramı da içeriyor.
Dosya Sistemi:
İşletim sisteminin, bu haritalama işlemini yaparken bazı kurallara uyacağını söyledim. Bu kurallara da dosya sistemi (file system) deniyor. Günümüzde çok fazla dosya sistemi bulunuyor. Linux bu dosya sistemlerinden bir çoğunu kullanabilmektedir. Bir liste vermek gerekirse:
adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4, ramfs, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix, xfs, xiafs, ntfs (okuma ve deneysel olarak yazma) dosya sistemleri sayılabilir. Ayrıca bu dosya sistemlerinden başka bir de swap dosya sistemi bulunuyor. Ancak bu başka bir başlık konusudur. Ancak swap dosya sistemini anlayabilmek için Sanal bellek kavramını anlamak gerekmektedir.
Sanal bellek:
Sanal bellek, fiziksel bellek miktarlarının yetersiz olduğu zaman depolama alanlarının işlketim sistemince bellek gibi kullanılması olarak basitleştirilebilir. Ancak durum tam olarak bu değildir. İşletim sistemi sanal belleği öncelikli olarak bellek olarak kullanmaz. Bellek yetersiz olduğunda öncellikle bellekte bulundurması en az gereken verileri sanal belleğe aktarır. Ancak hiç bir zaman işletim sistemi bellekte olmayan veriyi işlemciye kullandırtamaz. Bu yüzden sanal bellekte olan veriye ihtiyaç duyulduğunda yine bu veriyi belleğe aktarmak zorundadır. Bu durumda, aslında sanal bellek depolama aygıtının bellek olarak kullanılması değil, ara depolama olarak kullanılması denebilir.
Swap Dosya Sistemi:
Aslında swap dosya sistemi tam bir dosya sistemi değildir. Linux un sanal bellek olarak kullanacağı alanın değişikliğe uğramadan en yüksek performansa uygun biçimde kullanabilmesi için ayrı bir bölüm olarak tutulması amacıyla oluşturulmuştur. Linux ile herhangi bir dosya sistemini veya belirli ölçütlerle oluşturulmuş dosyaları bile sanal bellek olarak kullanabilirsiniz.
Ön Yükleyici:
Bu kavram bilgisayar mimarileri ile doğrudan ilgili olan bir kavramdır. Öncelikle bilgisayarımız nasıl işlemeye başlıyor onu bilmemiz gerekiyor. Bilgisayarımızda bulunan BIOS (basic input output system) chipi belleği haritalamaya başlıyor. Bildiğiniz gibi mikro işlemciler bilgisayarımızın merkezidir ve birincil bellek (yani RAM ve Registerlar) üzerinde olmayan hiç bir veriye ulaşamaz. Von-Neuman Mimarisi için her tür yazılım, donanım ve veri, birincil bellek üzerinde bulunur. Peki bir donanım nasıl bellek üzerinde bulunuyor? Bunun aslında çok basit bir anlamı var. Her tür donanınım veri alış-verişi yapma zorunluluğu bulunur. Mikro işlemci bu veri alış-verişini yaparken belleğin bu donanım ile ilişkilendirilmiş olan alanına veri yazar ve veri almak istediğinde bu donanınım da bu belirli alandaki uygun yere veri yazmasını bekler. Bu yüzden BIOS belleği adresler iken fiziksel olarak bulunmayan ancak bu donanımların veri alış-verişi için üzerilerinde bulunan belleklerini de birincil bellek haritası üzerinde aynı doğrusal bellek birimi imiş gibi gösterir. Mikroişlemci de bu bellek haritasının belirli bir alanından başlayarak komutları işlemeye başlar. Bu noktada doğru başlangıç komutları yoksa sistem başlayamaz. İşte ön yükleyici denen yazılımda özel olarak ayrılmış olan belirli bir miktar bellekte bulunacak ve uygun işletim sistemlerini belleğe yüklemek sorumluğu olan yazılımdır. Birden fazla disk bölümünde işletim sistemleri bulunabilir. Bu yüzden ön yükleyiciler birden fazla işletim sistemini açabilecek yeteneklere sahip olabilir. Linux için kullanılan 2 tane ön yükleyici yazılım vardır. Bunlar eski Lilo (Linux Loader) ve daha yeni olan GRUB (GRand Unified Bootloader). Eğer tercih yapmak zorunda kalırsanız, benim tavsiyem grub'u tercih etmeniz. Ama unutmayın en iyi bildiğiniz yazılım sizin için en iyi yazılımdır.
Paketler:
Paketler GNU/Linux dağıtımlarında birbirinden farklı yazılımların kurulumlarıdır.
Bağımlılık (dependency):
Unix tarafında yazılımlar, MS Windows tarafında olduğu gibi her şeyi yapmak ile sorumlu değildir. Birden fazla yazılım bir arada çalışarak işi bitirmeye çalışır. Her yazılım parçası, küçük bir iş yapar ama yaptığı işi en iyi biçimde yapmaya çalışır. Buna basit bir örnek grafik uygulamalarıdır. Genellikle grafik uygulamaları, konsol uygulamalarının ön tarafında çalışan birer arabirimdir. Ayrıca her yazılım bir çok kütüphaneyi kullanır.Genellikle programlar derlenir iken bu kütüphanelerde bulunan yazılımları, ikili hallerine eklenmez. Bu sayede aynı kütüphaneyi kullanan birden fazla yazılım aynı kodları içermeyecek. Bir noktadan kullanacak ve bu sayede bellek ve depolama kazancı sağlanacaktır. Bu yüzden programlar başka programlara ve kütüphanelere ihtiyaç duyarlar. İşte bu ihtiyaç duyulan yazılımlara bağımlılık denir. Eğer bir yazılımın bağımlı olduğu yazılımlar veya kütüphaneler sistemde bulunmuyorsa, bu yazılım büyük olasılıkla çalışmayacaktır.
Sonuç ve Tavsiye
Bu bahsettiğim kavramları anladıysanız zaten pek bit tavsiyeye ihtiyaç duymayaksınız. Ancak unutmamanız gereken bir kaç nokta var. Linux dağıtımları doğal dosya sistemi olarak ext2 ya da ext3 kullanırlar (Suse için reiserfs). Benim tavsiyem journaling denen özel bir veri güvenliği sağlayan yapıyı içeren ext3 veya reiserfs kullanmanız. Ayrıca Bellek miktarınız 128 MBye kadar ise ve disk miktarınız yeterli ise en az bellek miktarınız kadar hatta mümkünse 2 katı kadar swap alanı ayırmanız. Ancak daha fazla bellek miktarına sahipseniz swap alanını küçük tutabilirsiniz. Ayrıca kurulum esnasında hangi paketlerin kurulduğuna bakmanız da kullandığınız pencere yöneticisinin (Daha sonraki konularda anlatacağım) menulerine eklenmemiş olan programları da kullanabilmeniz için iyi olur. Unutmayın bölümleme esnasında eski disk bölümlerinizi silmeniz işten bile değildir. Bu konuda azami dikkat gösterin.
Linux Ext2 ve Linux Swap:
Linux Second Extended Filesystem (Linux Ext2) ve Linux Swap dosya sistemleri, Unix bazli isletim sistemi olan Linux'un kullandigi dosya sistemleridir. Özet olarak Ext2 dosya sisteminin destekledigi özellikler arasinda 4 TerraByte disk yahut partisyon destegi, gerektiginde 1012'ye yükseltilebilen 255 karakter uzunlugunda dosya isimlerinin desteklenmesi, 2 GB büyüklügüne kadar olan dosyalarla çalisabilme sayilabilir. Linux Swap ise Linux isletim sisteminin takas dosyasini yerlestirmek için kullandigi dosya sistemidir. Linux yapisi geregi kurulum sirasinda takas dosyasi için ayri bir partisyon açilmasini ve bu partisyona takas özelligi verilmesini gerektirir. Linux partisyonlari Linux disindaki isletim sistemleri tarafindan görünmezler ve dolayisiyla bulunduklari sürücü yahut partisyona Linux disindaki bir isletim sisteminde isim verilmez.
Dosya sistemi bolluğu
Linux çok çeşitli dosya sistemlerini desteklemektedir. En önemlileri aşağıda tanıtılmıştır:
minix
En eski, en güvenli olarak kabul edilen ama kısıtlı yeteneklere ve özelliklere sahip olan dosya sistemidir. (En fazla 64 MB lık dosya sistemi, en çok 30 karakterlik dosya isimleri, ara sıra kaybolan tarih zaman damgaları gibi...
xia
Dosya isimleri ve dosya sistemi boyutlarının sınırlarını kaldıran ama bundan başka pek bir yenilik getirmeyen, sadece minix dosya sisteminin yenilenmiş halidir. Çok popüler değildir ama oldukça iyi çalıştığı rapor edilmektedir.
ext2
En yetenekli ve en popüler Linux dosya sistemidir. İleriye dönük kolay geliştirilebilen bir dosya sistemi olarak tasarlanmıştır. Dolayısıyla yeni sürümü, dosya sistemi kodlarını, kurulu bir sisteme uygulamak için yeni ayarlar yapmayı gerektirmez.
ext
Ext2'nin geliştirilmeye uygun olmayan eski sürümüdür. Pek çok insan ext2 dosya sistemine yönelmiştir.
reiserfs
Çok sağlam bir dosya sistemidir. Veri kayıplarını en aza indirmek için günlükleme (journalling) yöntemi kullanılır. Günlükleme; yapılmış veya yapılan işlemlerin kayıtlarının tutulması mekanizmasıdır. Bu sayede dosya sistemi meydana gelmiş olan hasarları son derece kolay bir biçimde onarabilir.
Bunlara ek olarak, çok sayıda yabancı dosya sistemine destek bulunmaktadır. Böylece işletim sistemleri arasında dosyaları değişmek kolaylaştırılmıştır. Bu yabancı dosya sistemleri, makine üzerinde doğal Linux dosya sistemleri gibi çalışabilirler. Ama Unix'in bazı özelliklerinden faydalanamazlar, bazı kısıtlamalara tabidirler veya bazı acayiplikler sergilerler.
ext3
ext3 dosya sistemi, ext2'nin bütün özelliklerine sahip bir dosya sistemidir. Aradaki temel fark, günlükleme özelliğinin eklenmiş olmasıdır. Böylece, herhangi bir sistem çökmesi esnasında, geri kurtarma zamanı kısaltılır ve performans artışı sağlanır. ext3, ext2'den daha popüler olmuştur.
ext2
En yetenekli Linux dosya sistemidir. İleriye dönük kolay geliştirilebilen bir dosya sistemi olarak tasarlanmıştır. Dolayısıyla yeni sürümü, dosya sistemi kodlarını, kurulu bir sisteme uygulamak için yeni ayarlar yapmayı gerektirmez.
ext
Ext2'nin geliştirilmeye uygun olmayan eski sürümüdür. Pek çok insan ext2 dosya sistemine yönelmiştir.
Linux Ext2 ve Linux Swap:
Linux Second Extended Filesystem (Linux Ext2) ve Linux Swap dosya sistemleri, Unix bazlı işletim sistemi olan Linux’un kullandığı dosya sistemleridir. Özet olarak Ext2 dosya sisteminin desteklediği özellikler arasında 4 TerraByte disk yahut partisyon desteği, gerektiğinde 1012’ye yükseltilebilen 255 karakter uzunluğunda dosya isimlerinin desteklenmesi, 2 GB büyüklüğüne kadar olan dosyalarla çalışabilme sayılabilir. Linux Swap ise Linux işletim sisteminin takas dosyasını yerleştirmek için kullandığı dosya sistemidir. Linux yapısı gereği kurulum sırasında takas dosyası için ayrı bir partisyon açılmasını ve bu partisyona takas özelliği verilmesini gerektirir. Linux partisyonları Linux dışındaki işletim sistemleri tarafından görünmezler ve dolayısıyla bulundukları sürücü yahut partisyona Linux dışındaki bir işletim sisteminde isim verilmez.
linux sistemler neden defrag'a ihtiyaç duymaz?
aslında anlatım eksik olmuş, hatta biraz da taraflı olmuş. İlk başlarda doğru gibi görünse de hdd dolmaya başladıkça sıkışma olacaktır, ve gene parçalanma(fragmantasyon) yaşanacaktır. işin aslı linux'un dosya yapısı zaten parçalıdır. Yani defrag yapmanız diye bişey sözkonusu olamaz, bu terimin anlamı yoktur linux dosya sisteminde.
şöyle söylesem daha iyi olacak sanırım, herhangi bir dosya birbirine bağlı ufak parçacıklardan oluşur, o parçaların nerede olduğunun da önemi yoktur.
parçalanmış bir dosyanın devamının nerede olacağı TOC'da yazmaz da dosya sonunda bulunur. şimdi ben de kabaca anlattım, daha çok merak edenler baksın:second extended file system
FAT ile ext2 kıyaslarsak ext2 veri depolama kapasitesi küçük hdd'ler için verimsiz bir yöntemdir ama server vs. gibi üzerinde çok işlem yapılacak bir hdd ise idealdir (tabi şimdi geliştirdiler ext2'yi de), o yüzden taraflı dedim adamın yazdığına, sanki linux dosya sistemi en süper şeymiş gibi lanse etmiş
Neden Journaling Dosya Sistemi? ext2 bittimi
Bir sunucu, ister Web sunucusu olsun ister FTP sunucusu, herzaman çalışmalı ve kullanıcılarına hizmek vermek zorundadır. Sunucuların sürekli olarak çalışması gerekir. Buna sunucuların 'Uptimes' süreleri adı verilir ve bu uptimes süresi, biraz garip gelebilir ama %99.9 olmak zorundadır. Buna göre, ortalama 9-10 saat 'Downtime', yani kapalı kalma süresi olacağını sanırım kabul edilebilir bir değerdir. Bu 'Downtime' süresinde de Kernel güncellemesi veya adminin yapacağı ince ayarlardan sonra sunucuyu kısa süreli reboot etmesi dahildir.
Sanırım aşağıdaki hata mesajını bir çoğunuz tanır:
/dev/hda6 was not cleanly unmounted, check forced
Linux sistemlerini kolayca 'Reset' düğmesine basarak kapatamazsınız. Aslında kapatmamanız gerekir. Eğer kapatırsanız, genelde yukardaki hata mesajını alabilirsiniz. 1 Terra-Byte-RAID bir sistemde bu hatayı aldığınızda, sistemin komple Check-up yapması için gerekli olabilecek süreyi hiç düşündünüz mü? Sanırım saatler sürer...-)
Dosya sistemi ile ilgili hata mesajlarını sanırım aşağıdaki şekilde sıralayabiliriz:
Sistem düzgün bir şekilde kapatılmadında aşağıdaki hata mesajını verir:
/dev/hda3: was not cleanly unmounted, check forced.
Sistem azami Mount sayısına eriştiğinde aşağıdaki hata mesajını verir:
/dev/hda3 has reached maximal mount count, check forced.
Sistem birsonraki check-up zamanına geldiğinde sizi uyarır:
/dev/hda3 has gone too long without beeing checked, check forced.
Bütün bu hata mesajlarını genelde EXT2 dosya sistemini kullandığınızda karşılaşırsınız. İşte bu tür hatalar için önlem almanın en iyi yöntemi Journaling dosya sistemi kullanmaktır. Evet, kabul ediyorum, EXT2 en sağlam dosya sistemlerinden birisidir fakat kriter hız ise, size en uygun dosya sistemi Journaling dosya sistemlerini kullanmak olackatır.
HIZLI EXT2 DISKI ÖLDÜREBILIR DIKKAT!''''''
Evet bu doğrudur. EXT2 gerçekten hızlı bir yapıya sahiptir. Ancak bir
laf vardır "HIZ ÖLDÜRÜR!". Gerçekten de EXT2 ölümcül hatalara, hayati
derecede önemli verilerin belki de kurtarılamayacak hale gelmesine
sebep olabilir. Çünkü unmount olmadan makina kapatılırsa (elektrik
kesintisi vs. gibi durumlar) ortaya çıkabilecek hataları düzeltmekte
çok zorlanır, hatta çoğu zaman düzeltemez. Bu kadar hızlı olmasının
sebebi de budur zaten, yani journaled olmaması.
EXT3
EXT2’ye journal özelliği eklenmiş halidir.
Mevcut EXT2 FS, kolayca EXT3’e çevrilebilir:
tune2fs -j /dev/hda5 ...
Journal bir dosyada tutulur.
Sistem, Journal hatası durumunda
EXT2 olarak kullanılabilir
Linux EXT2
Dosya yerleşim bilgileri disk üzerine dağıtılmıştır.
Dosyayı niteleyen veri (inode) ile dosya verisi
birbirine yakın tutulur.
inode tablosunun yerini gösteren ilk yerleşime
SUPERBLOCK denir.
Superblock, disk üzerinde 3-4 kopya olarak tutulur.
User, Group, Others için ayrı ayrı haklar tanımlanabilir.
Hard/Symbolic Link destekler.
On-the-fly Compress, immutable dosyalar vs..