SD Kartın Hazırlanması

Bu başlık altında açılabilir bir SD kartı nasıl hazırlayabileceğimize bakacağız. SD kartın organizasyonu aşağıdaki gibi olmalıdır.

Başlangıç Boyut Kullanım
0 8KB Bölümlendirme tablosunun da bulunduğu kullanılmayan alan
8 24KB Başlangıç SPL yükleyicisi
32 512KB U-boot
544 128KB U-boot çevre değişkenleri
672 352KB Saklı tutulmuş alan (reserved)
1024 - Bölümlendirme ve dosya sistemi için ayrılan alan

Yukarıdaki tabloya dikkat edilecek olursa bölümlendirmenin ilk 1MB'lık alandan sonra başladığı görülmektedir. Cihaza enerji verildiğinde ilk çalışan kod olan ROM boot kodu SD kartın 8KB adresinden başlayan alanda başlangıç yükleyicisi SPL'i aramaktadır. SPL daha sonra asıl önyükleyici olan U-boot'u yüklemektedir.

SD kart üzerinde yukarıdaki organizasyonu sağlamak için ilk olarak SD kartı geliştirme bilgisayarımıza takalım. SD kartı taktığımızda /dev altında karta ilişkin bir dosya düğümü oluşmalıdır. dmesg çıktısından bu isme ulaşabiliriz. Bizim sistemimizde aldığımız sonuç aşağıdaki gibidir.

$ dmesg | tail
...
[12513.272757] mmcblk0: mmc0:1234 SA16G 14.4 GiB 
[12513.275031]  mmcblk0: p1 p2

Bu durumda /dev altında mmcblk0 adında bir dosya düğümü oluşmuş olmalı.

$ ls /dev/mmcblk0
/dev/mmcblk0

SD kartı harici bir SD kart okuyucu ile sisteminize bağladı iseniz sisteminizde bu dosya düğümü /dev/sdb veya /dev/sdc şeklinde oluşabilir. Dosya düğümü doğru bir şekilde belirlemek oldukça önemlidir. Yanlış bir dosya düğümü ile çalışmak sisteminize zarar verebilir. Dosya düğümünü belirledikten sonra bu düğüme ilişkin bir çevre değişkeni aşağıdaki gibi oluşturulabilir.

$ export CARD=/dev/mmcblk0

Daha sonra SD kart üzerinde bir bölüm oluşturduğumuzda bu bölüme ilişkin dosya düğümünün adında partition'ı ifade eden p harfi geçecektir. Bu duruma ilişkin aşağıdaki gibi bir çevre değişkeni daha tanımlanabilir.

$ export p=p

SD kart üzerinde ilk olarak üzerinde dosya sistemini oluşturacağımız bir bölüm (partition) oluşturalım. Bu bölüm SD kartın ilk 1MB'lık alanından sonra başlamalıdır. Bölümlendirme için Linux altında fdisk veya gparted benzeri araçlar kullanılabilir. Bu işlem öncesinde SD kart mount edilmiş ise ilk olarak dosya sisteminden bağı koparılmalıdır. Bu amaçla umount komutu kullanılabilir. Örneğin:

$ sudo umount /dev/mmcblk0p1

fdisk ile SD kart üzerinde bir bölüm aşağıdaki gibi oluşturulabilir.

$ sudo fdisk ${CARD}

Sonrasında aşağıdaki komutlar girilmelidir. Sonuçta 32 MB'lık bir bölüm oluşturulacaktır. Farklı boyutta bir bölüm oluşturmak istiyorsanız aşağıdaki örnekte +32M yazan kısmı ihtiyacınıza göre değiştirebilirsiniz.

Command (m for help): o                                # Yeni bir bölümlendirme tablosu oluşturuyoruz
Command (m for help): n                                # Yeni bir bölüm oluşturuyoruz
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):                                    # Enter ile geç (Birincil bölüm oluşturuluyor)    
Using default response p
Partition number (1-4, default 1):                     # Enter ile geç (Bölüm numarası 1 olarak veriliyor)
Using default value 1
First sector (2048-15523839, default 2048):            # Enter ile geç (2MB sonrasında ilk bölüm başlıyor)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-15523839, default 15523839): +32M       # +32M ile 32MB'lık 
                                                                                    # bir bölüm oluşturuluyor

Command (m for help): w                                # w ile değişiklikler kaydediliyor
The partition table has been altered!

Artık üzerinde dosya sistemi oluşturabileceğimiz bir bölümümüz bulunmakta. Bu bölüme aşağıdaki gibi bir ext4 dosya sistemi oluşturabiliriz. Bu bölümlendirmemize ilişkin aşağıdaki gibi bir dosya düğümü oluşmuş olmalıdır.

$ ls ${CARD}${p}1
/dev/mmcblk0p1

Bu bölüm üzerinde ext4 dosya sistemini aşağıdaki gibi oluşturabiliriz.

$ sudo mkfs.ext4 ${CARD}${p}1

Bu aşamadan sonra SD kartı dosya sistemimize mount ederek üzerine yazabiliriz. Geliştirme dizinimiz altında disk isimli bir dizin oluşturup SD kartı buraya mount edebiliriz.

$ cd /opt/orangepi
$ mkdir disk
$ sudo mount  ${CARD}${p}1 disk

Artık SD kartı üzerindeki dosya sistemine yazabilir durumdayız. Kendi sistemimizde oluşturduğumuz dosya sistemini SD kart üzerine aşağıdaki gibi atabiliriz.

$ sudo cp -a RootFS/* disk/

Bu işlem sonrasında SD kart üzerine yazma yapıldığından emin olalım ve SD kartı umount edelim.

$ sync
$ umount disk

Geriye yalnız önyükleyicileri SD kart üzerine yazma kısmı kaldı. U-boot kodunu derlediğimiz kısımda da belirttiğimiz gibi SD kart üzerine SPL ve U-boot önyükleyicilerini içeren u-boot-sunxi-with-spl.bin dosyasını atacağız. Öncesinde bölümlendirme tablosununun bulunduğu alan dokunmadan, 1KB ileriden başlayarak ilk 1MB'lık alanı aşağıdaki gibi temizleyelim.

$ sudo dd if=/dev/zero of=${CARD} bs=1k count=1023 seek=1

Bu aşamadan sonra önyükleyici çiftini SD kart üzerine, 8KB ileriden başlayacak şekilde, yazabiliriz.

$ sudo dd if=u-boot/u-boot-sunxi-with-spl.bin of=${CARD} bs=1024 seek=8

Artık SD kartı cihaza takıp cihaza enerji verebiliriz

results matching ""

    No results matching ""