Potrebni alati: git
Kernel za Raspberry pi može se preuzeti sa sledećeg repozitorijuma, sledećom komandom:
git clone https://github.com/raspberrypi/linux
Potrebni alati: patch
Moguće je primeniti patch na kernel sledećom komandom (potrebno je biti u direktorijumu kernela):
patch -p1 < <path/to/patch-x.y.z>
, gde je <path/to/patch-x.y.z> putanja do fajla u kojem se nalazi patch.
Ukoliko je potrebno ukoliniti primenuti patch, to se može uraditi sledećom komandom:
patch -R -p1 < <path/to/patch-x.y.z>
Potrebni alati: make
Pre prevođenja kernela potrebno je postaviti sistemske varijable ARCH i CROSS_COMPILE u zavisnosti od toga za koju platformu se kernel prevodi. U slučaju RPI platforme, sledeća komanda to radi:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
Kako ne bi bilo potrebe kucati ovo pre svakog pokretanja, moguće je dodati ovo u fajl ~/.bashrc. Na ovaj način ova komanda će se pozvati svaki put kada se otvori novi shel.
Potrebni alati: libqt4-dev
g++
Prilikom prevođenja kernela koristiće se konfiguracija iz fajla .config, koji se nalazi u istom direktorijumu kao i makefile. Ukoliko ovaj fajl ne postoji koristiće se podrazumevana konfiguracija.
Moguće je izabrati koji će se moduli prevesti pomoću komande make xconfig
, koja će otvoriti alat za konfiguraciju.
Potrebni alati: picocom
Nakon instaliranja picocom komande potrebno je dodati trenutnog korisnika u dialout grupu, kako bi imao sve potrebne privilegije za čitanje i pisanje na USB port. Sledeća konda radi to:
sudo adduser $USER dialout
Potrebno je izlogovati se i logovati ponovo da bi ova komanda imala efekta.
Nakon konektovanja Pi-a na računar, komunikacija se ostvaruje komandom:
picocom -b 115200 /dev/ttyUSBX
, gde ttyUSBX predstavlja uređaj povezan na Pi (najčešće je to ttyUSB0)
Potrebni alati: tftpd-hpa
Nakon uspešnog bildovanja kernela potrebno je prebaciti fajlove zImage i bcm2709-rpi-2-b.dtb u /var/lib/tftpboot, nakon čega je potrebno restartovati tftp server, sledećom komandom:
sudo service tftpd-hpa restart
Sada je potrebno povući date fajlove iz RPI U-boot-a.
Prvo je potrebno podesiti IP adrese servera i klijenta, kao i eth adresu sledećim komandama
setenv ipaddr <IP adresa rpi>
setenv serverip <IP adresa pc>
setenv ethaddr <eth adresa rpi>
Nakon postavljanja env varijabli, moguće je sačuvati ih komandom saveenv
, kako bi bili dostupni i nakon reboot-a.
Potrebni alati: nfs-kernel-server
Pored kernela, potrebno je imati u root sistem datoteka, koji će kernel koristiti. Za ovo se koristi nfs-kernel-server.
Prvo je potrebno u datoteku /etc/exports dodati sledeću liniju koda
/putanja/do/root/direktorijuma <IP adresa rpi>(rw,no_root_squash,no_subtree_check)
Nakon ovoga je potrebno restartovati server, kako bi se izmene primetile. To radi sledeća komanda:
sudo /etc/init.d/nfs-kernel-server restart
Potrebno je povući zImage i bcm2709-rpi-2-b.dtb u memoriju pre bootovnaja. Sledeće komande ih povlače i bootuju
tftp 0x01000000 zImage
tftp 0x02000000 bcm2709-rpi-2-b.dtb
bootz 0x01000000 - 0x02000000
U ovom slučaju za RFS biće korišćena SD kartica, međutim moguće je i postaviti komandu koja ovo automatski radi i pritom koristi mrežni RFS.
setenv bootargs "root=/dev/nfs rw ip=<IP adresa rpi> console=ttyAMA0,115200 nfsroot=<IP adresa pc>:/putanja/do/nfs/root/direktorijuma"
boot
Moguće je komandu sačuvati za narednu upotrebu sledećom komandom:
saveenv
U slučaju potrebe da se ovo promeni, sledeća komanda to radi:
editenv bootargs