NFS Root Çalışma
Kök dosya sisteminin cihazın üzerindeki bir depolama biriminde değil de ağ üzerindeki bir NFS paylaşımında yer aldığı senaryo NFS Root olarak adlandırılmakta olup, NFS Root Çalışma başlıklı bölümde ayrıntılarıyla işlenmiştir.
Bu bölümde Raspberry Pi 2 özelinde NFS Root çalışma detaylarını inceleyeceğiz.
NFS Root çalışma yöntemleriyle ilgili destekler (CONFIG_ROOT_NFS=y
)kernel imajı içerisine statik olarak eklenmiş olmalıdır.
Start.elf Üzerinden NFS Root Açılışı
Raspberry Pi cihazlarında GPU tarafından yüklenen bootcode.bin ve start.elf adlı boot yükleyiciler bulunmaktadır. Geleneksel u-boot yükleyicisi ile karşılaştırıldığında oldukça farklı olan bu yükleyiciler, nfs root çalışma senaryosu için benzer imkanlar sağlamaktadır.
Cihazla birlikte gelen start.elf boot yükleyicisi, cmdline.txt
adlı bir dosya olması halinde burada yer alan kernel commandline parametrelerini ATAGS
yöntemiyle çalıştırılacak kernel'a iletmektedir (ARM Mimarisinde Açılış Süreci bölümüne bakabilirsiniz).
NFS üzerinden kök dosya sistemini bağlayabilmek için cmdline.txt
dosyasına aşağıdaki satırın girilmesi yeterli olacaktır:
Eğer DHCP üzerinden ip alınacak ise, ip=dhcp
şeklinde de belirtebilirsiniz. Bu senaryonun çalışması için kernel içerisinde CONFIG_IP_PNP_DHCP=y
şeklinde seçilmiş olmalıdır.
U-Boot Üzerinden NFS Root Açılışı
Raspberry Pi 2 üzerinde u-boot çalıştırmak, Haziran 2015 itibariyle halen çeşitli önemli sorunlara yol açmaktadır. U-boot içerisinde ethernet kartının çalışır hale getirilmesi her zaman mümkün olmamakta ve cihazı resetleyip yeniden denemek veya u-boot içindeyken dhcp komutuyla ip almayı denemek gerekmektedir. Kernel imajını ağdan yüklemek yerine SD karttan okumak istediğimizde okuma performansı çok düşük olmaktadır.
Bahsettiğimiz olumsuzluklara rağmen u-boot'un kullanım yaygınlığı ve önümüzdeki aylarda bu problemlerin giderilme olasılığı düşünülerek ayrıntılı olarak incelenmiştir.
U-boot üzerinden açılışta en kritik nokta, start.elf örneğinde olduğu gibi doğru command line parametreleri ile kernel imajının çalışmaya başlamasını sağlayabilmektir.
Kernel imajını ve Flattened Device Tree (FDT) tanım dosyasını yükleme yöntemimize göre süreç bir miktar değişmektedir. Aşağıda bu yöntemlerden ağ üzerinden yükleme ve sd kart üzerinden yükleme seçenekleri incelenmiştir.
Kernel ve FDT'nin Ağ Üzerinden Yüklenmesi
Kullanılacak kernel imajı ve fdt dosyası TFTP sunucu ana dizinine konulmalıdır.
U-boot komut satırında ethernet'i kullanmaya başlayabilmek için öncelikle aşağıdaki komut verilmelidir:
Ardından u-boot'un standart ortam değişkenleri üzerinden ip atama yöntemiyle cihazımızın ve TFTP sunucunun ip adresi belirtilmelidir. Örneğimizde cihaz ip adresi 192.168.0.6, sunucu ip adresi ise 192.168.0.5 şeklindedir.
Ardından zImage
kernel imaj dosyasını TFTP sunucudan 0x1000000
gibi bir adrese çekelim:
Aynı şekilde cihazımız için TFTP sunucu ana dizinine koyduğumuz bcm2709-rpi-2-b.dtb
FDT dosyasını 0x2000000
gibi bir adrese çekelim:
Kernel ve FDT imajları bellekte ve adreslerini biliyoruz. Sonraki adımda command parametrelerini hazırlayabilmek için bootargs
u-boot değişkenini aşağıdaki gibi düzenlemeliyiz:
Son olarak bootz
komutuna kernel imajının ve FDT imajının bellekteki adreslerini parametre olarak verip Linux açılış sürecini başlatalım:
Özet olarak aşağıdaki gibi çıktılar almış olmalıyız:
Kernel ve FDT'nin SD Kart Üzerinden Yüklenmesi
Last updated
Was this helpful?