:::: MENU ::::

Pandaboard ES’de NFS kullanarak root dosya sistemini calistirmak

Pandaboard ES platformları üzerinde kullanilan dosya sistemleri için sd/mmc blok kullanmak yerine NFS kullanarak, geliştirme yapilan bilgisayari kullanmak mümkündür.

Bunun için ana hatlarıyla şu işlemler yapılmalıdır:

  1. NFS ve Pandaboard ES konfigürasyonları düzgün yapılmış bir Linux kernel.
  2. u-boot ayarları ve derlenmesi.
  3. Geliştirme yapılan bilgisayarda network ve NFS ayarları.
  4. otomatize hale getirmek için boot.scr oluşturulması.
  5. udhcpc sisteminin deaktifleştirilmesi.

Kernel konfigürasyonu

Linux kernel omap2plus_defconfig kullanılarak konfigüre edildikten sonra, menuconfig ile girilen menüde aşağıdaki seçenek aktifleştirilmeli:
Device Drivers -> USB support CONFIG_USB_SUPPORT -> EHCI HCD (USB 2.0) support CONFIG_USB_EHCI_HCD

Her ne kadar omap2plus_defconfig aşağıdaki ayarları otomatik açıyor olsa da, kontrol etmekte fayda var:

Networking support
–> [*] TCP/IP networking CONFIG_INET
–> –> [*] IP: kernel level autoconfiguration CONFIG_IP_PNP
–> –> –> [*] IP: DHCP support CONFIG_IP_PNP_DHCP
–> –> –> [*] IP: BOOTP support CONFIG_IP_PNP_BOOTP
–> –> –> [*] IP: RARP support CONFIG_IP_PNP_RARP
Device Drivers
–> [*] Network device support CONFIG_NETDEVICES
–> –> USB Network Adapters
–> –> –> [*] SMSC LAN95XX based USB 2.0 10/100 ethernet devices CONFIG_USB_NET_SMSC95XX
File systems
–> [*] Network File Systems CONFIG_NETWORK_FILESYSTEMS
–> –> NFS client support CONFIG_NFS_FS
–> –> –> [*] NFS client support for NFS version 3 CONFIG_NFS_V3 –> [*] Root file system on NFS CONFIG_ROOT_NFS

Bu ayarlar ile derlenen kernel ve device tree blob (gerekiyorsa) sd-kart içerisine atılmalıdır.

Not: Bazı kernel sürümlerinde aşağıdaki ayarları da açmak gerekebilir:
CONFIG_USB_PHY
CONFIG_NOP_USB_XCEIV

u-boot işlemleri

Aşağıdaki adresten güncel u-boot versiyonu indirilebilinir:
ftp://ftp.denx.de/pub/u-boot/u-boot-latest.tar.bz2

Ardından u-boot ana dizini içerisinde

make omap4_panda_defconfig
make all

komutları kullanılarak u-boot.img dosyası oluşturulmalı ve sd-kart içerisine atılmalıdır.

Geliştirme yapılan bilgisayar ayarları

/etc/exports dosyası içerisine

<rootfs dizini> <ip aralığı>(rw,sync,no_root_squash,no_subtree_check)

satırı eklenmelidir.
Ardından
sudo /etc/init.d/nfs-kernel-server restart
ile NFS server restart edilmelidir.

Daha sonra network ayarlarından yaratılacak bir ağ bağlantısı ile verilen <ip aralığı> içerisinden bir ip adresi atanmalı ve netmask <netmask adresi>, gateway <gateway adresi> olarak ayarlanmalıdır.

Boot scripti oluşturmak

Pandaboard içine atılan u-boot üzerinde saveenv komutunun yer almadığını göreceksiniz. Benzer sekilde, kernel ve bootloader’u da tftp ile transfer etmeyi pandaboard es rev3 platformlar icin basaramadim. Bu nedenle u-boot’un argümanlarını boot.scr dosyasından almasını sağlamamız gerekiyor. Bu nedenle aşağıdaki satırları içeren boot.script dosyasını oluşturmak gerekiyor, lütfen ilgili değişkenleri kendi ayarlarınıza göre değiştirin:

mmc rescan
fatload mmc 0:1 0x80000000 uImage
fatload mmc 0:1 0x82000000 omap4-panda-es.dtb
setenv bootargs vram=32M console=ttyO2,115200 mem=456M@0x80000000 mem=512M@0xA0000000 root=/dev/nfs rw nfsroot=<host ip adresi>:<rootfs dizini>,nolock,wsize=1024,rsize=1024 ip=<panda ip adresi> init=/linuxrc
bootm 0x80000000 - 0x82000000

Ardından oluşturulan boot.script dosyası aşağıdaki komutla derlenerek boot.scr dosyası oluşturulmalıdır:

mkimage -A arm -T script -C none -n "mmis:panda boot script" -d boot.script boot.scr

Oluşturulan boot.scr dosyası sd-kart içerisine atılmalıdır.

Platform network ayarları

Şu anda sd-kart panda üzerinde çalıştırıldığında başarılı bir şekilde istenen remote dizinden dosya sistemini kullanacaktır. Fakat eğer dhcp servisi aktifleştirilmiş ise komut istemi kullanıcıya verilmeden önce u-boot ile kernele atanan ip adresi değiştirilmeye çalışılacak ve bu nedenle de NFS ile olan bağlantı kopacaktır. Bunun önüne geçmek için platform dosya sistemi içerisindeki /etc/network/interfaces dosyasındaki
iface eth0 inet dhcp
satırı çıkartılmalıdır.
Manual olarak aşağıdaki ayarlar kullanılabilinir:

iface eth0 inet static
address <panda ip adresi>
netmask <netmask adresi>
gateway <gateway adresi>

Örnek değişken değerleri:

<rootfs dizini>: /home/eckucukoglu/nfsroot
<ip aralığı>: 192.168.1.0/24
<host ip adresi>: 192.168.1.1
<panda ip adresi>: 192.168.1.2
<netmask adresi>: 255.255.255.0
<gateway adresi>: 0.0.0.0

So, what do you think ?