Sistem boot edildikten sonra diskimizi istediğimiz gibi bölümlendirebilir ve bölümleri istediğimiz
dosya sistemine göre biçimlendirebiliriz. Burada kullanılan disk teknolojisi nedeniyle sistemde
bazı kısıtlamalara gitmemiz gerekebilir. Flash disk teknolojilerine kısaca değinelim.
Flash bellek tabanlı diskler gömülü sistemler için düşük fiyatına karşın sağladığı olanaklar
sayesinde her geçen gün daha fazla kullanılır olmuştur. Flash bellekler elektrik ile silinebilir
ve tekrar yazılabilirler (Electrically Erasable Read Only Memory, EEPROM). Kendi içerisinde farklı
tipleri olsa da günümüzde yaygın olarak NOR Flash bellekler kullanılmaktadır. NOR Flash bellekler
128 kB büyüklüğündeki bloklar halinde üretilir. Dolayısıyla bu tip belleklerde en küçük elemanın
aslında 128 kB olduğunu söyleyebiliriz. Diskten 1 bayt dahi silmek isteseniz, bu işlem silmek istediğiniz
baytın bulunduğu 128 kB'lık blokun tamamen silinmesini gerektirir. Flash belleklerin ömrünü de işte bu
yazma işlemlerin sayısı belirler. Tipik bir flash bellek ömrü blok başına ortalama 100.000 yazma işlemini
gerçekleştirebilecek kadardır. İlk başta 100.000 ulaşılması zor bir rakam gibi gözükebilir, ancak 1 bayt
için dahi bloklar halinde bu işlemin gerçekleştirileceği hesaba katılacak olunursa aslında bu değere
hiç de uzun olmayacak bir zaman diliminde erişilmesi olasılığının bulunduğu anlaşılacaktır.
Kısıtlamaların aşılabilmesi için sürekli yeni yöntemler geliştirilmeye çalışılmaktadır. Örneğin
"wear levelling" adı verilen bir teknik ile herhangi bir blokun diskteki diğer bloklardan çok daha
önce bu 100.000 değerine ulaşması önlenebilmektedir. Bu sayede diskte yoğun olarak kullanılan bir blok
yüzünden kısa zamanda diskin tamamının kullanılamaz hale gelmesinin önüne geçilebilmektedir.
Yazma ömrü konusundaki kısıtlamalar nedeniyle Flash bellek teknolojilerini kullanan diskler üzerinde
takas alanı kullanımından kesinlikle kaçınılmalıdır. Gömülü sistemler zaten önceden belirlenmiş
amaçlara hizmet edeceklerinden, bellek kullanımı belirli değerler arasında sabit kalacaktır. Dolayısıyla
sistem iyi tasarlandığı müddetçe takas alanı kullanımına zaten ihtiyaç olmayacaktır.
Gerçekleştirilecek sistemde eğer yazma işlemleri sayıca yüksek olacaksa bu durumda salt-okunur
bir sistem tasarlanması mantıklı olabilir. Sistem açılışında belleğin bir bölümünün disk bölümü
olarak kullanılması, gerçek diskin ise tamamen salt-okunur kipe geçirilmesiyle yazma ömrü ciddi
oranda artırılabilir. Ancak bu durumda veri kayıplarını engellemek için ramdisk üzerindeki bilgilerin
güvenliğini sağlayıcı önlemler getirilmelidir (Belirli aralıklarla disk üzerindeki sistemi salt-okunur
lipten çıkarıp veriler ramdisk'den diske yazıldıktan sonra tekrar salt-okunur kipe geçirmek gibi).
Disk üzerinde kullanılacak dosya sisteminin seçimi de oldukça önemlidir. Çoğu gömülü sistem
için ext2 kadar karmaşık bir dosya sistemine ihtiyaç duyulmayacaktır. İhtiyaç olmadığı halde ext2
dosya sistemi kullanıldığı takdirde gereksiz yere dosya sistemi tarafından bir yük oluşturulacaktır.
İleride dosya sistemleri konusuna ayrıntılı olarak değineceğiz. Biz geliştireceğimiz gömülü sistem
için minix dosya sistemini kullanalım. Minix dosya sisteminde bir disk bölümü maksimum 64 MB, dosya
adları maksimum 31 karakter olabilir. Kullanılacak dosya sistemi seçilmeden önce bu gibi özelliklerinin
araştırılıp, geliştirilecek olan sistemin yapısını etkileyip etkilemeyeceği önceden belirlenmelidir.
Son olarak SBC sistemimizi disketler ile açmış ve Alt - F2 tuşları
ile 2. sanal konsola geçiş yapmıştık. Diskimizin Linux çekirdeği tarafından nasıl tanındığını öğrenelim:
# dmesg | grep -i disk
RAM disk driver initialized: 16 RAM disks of 16384K size
hda: 64MB ATA Flash Disk, ATA DISK drive
...
Diskimizin /dev/hda olarak Linux tarafından tanındığını gördük. Şimdi
fdisk programı ile diski bölümlendirelim.
# fdisk /dev/hda
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-489, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-489, default 489): 489
Command (m for help): a
Partition number (1-4): 1
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#
Yukarıda örnekte görüldüğü gibi disk üzerinde 64 MB'lık bir Linux disk bölümü yarattık. Debian açılış
disketlerinde (ve büyük olasılıkla diğer dağıtımların kullandığı disketlerde de) minix dosya sistemi
yaratmak için gereken mkfs.minix programı bulunmamaktadır. Dolayısıyla bu programı
çalışan bir Linux sisteminden disket ile SBC üzerine taşımalıyız. Bunun için bir Linux bilgisayardan gerekli
dosya diskete kopyalanır. Ardından disket SBC'ye bağlı disket sürücüye takılır (Açılış tamamlandıktan
sonra, açılış için kullanılan disketlerin sürücüde kalmasına gerek yoktur). Disketi SBC'ye taktıktan
sonra,
# mount /dev/fd0 /floppy
# ls /floppy
mkfs~1.min
#
Dosyayı taşımak için kullandığım disket üzerindeki dosya sistemi vfat idi. Ancak SBC'nin
açılışında kullandığım sistemde vfat desteği yok, bu nedenle disket msdos
dosya sistemi ile bağlandı. ls komutunun çıktısında görülen
mkfs~1.min bundan kaynaklanmaktadır.
Şimdi dosyayı disketten /tmp dizini altına olması gerektiği ad ile kopyalayıp disketi
çıkartalım:
# cp /floppy/mkfs~1.min /tmp/mkfs.minix
# umount /floppy
#
Şimdi artık mkfs.minix ile hazırlamış olduğumuz disk bölümü üzerinde
minix dosya sistemi oluşturabiliriz:
# /tmp/mkfs.minix /dev/hda1
20864 inodes
62576 blocks
Firstdatazone=665 (665)
Zonesize=1024
Maxsize=268966912
#
Şimdi dosya sistemi de oluştuğuna göre diski bağlayabiliriz. Bunun için /hedef ismiyle
bir dizin açıp disk bölümünü bu dizine bağladıktan sonra, geliştirmelerimizi burada yapalım.
# mkdir /hedef
# mount /dev/hda1 /hedef
# mount
/dev/ram0 on / type ext2 (rw)
/proc on /proc type proc (rw)
/dev/hda1 on /hedef type minix (rw)
#
Artık diskimiz üzerindeki bölüm ve dosya sistemi /hedef dizini altında kullanımımız
için hazır bulunuyor.