Diskin Hazırlanması
Önceki Sistemin Boot Edilmesi ve Diskin Hazırlanması Sonraki
Diskin Hazırlanması
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.
Şekil 3.1. Disk On Module
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 kipten çı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.
Önceki Üst Ana Başlık Sonraki
Disketten Açılış Başlangıç Temel Ayarlamalar
Bir Linux Kitaplığı Sayfası