:::: MENU ::::
Posts tagged with: bootloader

Buildroot kullanimi

Genel hatlarıyla versiyon seçimleri ve konfigürasyon değerleri buildroot ozelinde değişkenlik gösterebilir. Buildroot detaylarina; mimari, toolchain, kernel, target packages secimlerinin detaylarina girilmeyecektir. Fakat bu yazida stabil çalışan pandaboard dagitimi icin yapilacak seçim ve değerleri bulabilirsiniz. Ayrica buildroot uzerinden kernel’e build time’da nasil yama yapilacagi da, preempt_rt yamasiyla orneklenecektir.

İndirme

Buildroot versiyon 2014.11-rc1, http://git.buildroot.net/buildroot/snapshot/buildroot-2014.11-rc1.tar.gz adresinden indirilir.

Buildroot ana konfigürasyonu

buildroot-pandaboard-linux.config indirilip, buildroot dizininde:

make menuconfig

diyerek acilan menuden bu konfigürasyon dosyası yüklenir.

Realtime yaması

Bu konfigürasyon dosyasının realtime ile ilgili ihtiyacı olan diğer dosyalar ve menüdeki ilgili yerleri şu şekildedir:

Realtime preempt_rt yamasını uygulamak istiyorsak:

Derleme ve çıktılar

make diyerek derleme işlemlerinin çalışması sağlanır. Bootloaders -> U-Boot version: ayarına 2011.11.2 girilmesi durumunda buildroot/output/images altindaki

MLO
u-boot.bin
uImage

dosyaları sd-karta atılır. Sd-kartın tek bir partition şeklinde fat-32 kullanarak formatlanmış ve boot etme yeteneği atanmış olması gerekmektedir.

https://github.com/eckucukoglu/linux-tools/tree/master/make-sdcard incelenerek, ihtiyaca uygun hale getirilebilinir.

Bootloaders -> U-Boot version: 2013.01.01 girilmesi durumunda (4460 pandaboard u-boot versiyonu için bu versiyon kullanılmaktadır) sd-kart içerisine /output/images/u-boot.bin yerine output/build/uboot-2013.01.01/u-boot.img  konulmalıdır.

Aynı zamanda sd-kart içerisine konulacak boot.scr dosyası şu şekilde oluşturulur:

setenv bootargs ‘root=/dev/mmcblk0p2 rw rootwait rootfstype=ext3 console=ttyO2,115200n8 vram=16M’
fatload mmc 0 82000000 uImage
bootm start 82000000
bootm loados
bootm go 82000000

içeriği ile oluşturulacak boot_mmc.txt dosyasından,

mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n “Panda SD Boot” -d boot_mmc.txt boot.scr

komutu ile boot.scr oluşturulur ve sd-kart ana dizinine diğer dosyaların yanına atılır.

Pandaboard’a takılacak sd-kart boot edecek ve komut istemini verecektir.

  • Derlenirken izlek oluşturmamak için -jX parametresi girilmemelidir.
  • Adımlar izlenirken öncelikli kaynak olarak [2] kullanılmıştır.
Referanslar

[1]: http://www.linux-magazine.com/Online/Features/Qemu-and-the-Kernel
[2]: http://fooprotected.wordpress.com/2014/03/13/buildroot-linux-on-the-pandaboard-rev-3/
[3]: http://www.rte.se/blog/linux-0/buildroot-basics-building-real-target-pandaboard/1.2
[4]: http://elinux.org/Panda_How_to_buildroot
[5]: http://delog.wordpress.com/2011/09/04/custom-embedded-linux-system-for-pandaboard-with-buildroot/


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