TuxIsAlive
-
Upload
claudio-mig -
Category
Documents
-
view
168 -
download
6
description
Transcript of TuxIsAlive
OpenWrt from scratch
Installare OpenWrtEspandere OpenWrt
Ricompilare OpenWrt da zeroApplicazioni con OpenWrt
Autore: Claudio Mignanti c.mignanti<at>gmail.com
Perche OpenWrt
● Sistema integrato di sviluppo● Distribuzione pensata per dispositivi embedded (nasce per i router)● Boot in meno di 10 secondi● Utilizzo ottimizzato elle risorse● uClibc/glibc/eglibc
3
Partizionare la SDCard
● Aprire Gparted; Sistema → Amministrazione → Gparted
● Selezionare la periferica;
● Aggiungere le due partizioni. La prima FAT32 (anche con pochi MB) la seconda EXT2
4
Copiare il filesystem
Attualmente:wget http://downloads.openwrt.org/snapshots/trunk/at91/openwrt-at91-uImagewget http://downloads.openwrt.org/snapshots/trunk/at91/openwrt-at91-rootfs.tar.gzmv openwrt-at91-uImage /media/<fat32>/sudo tar xvzf openwrt-at91-rootfs.tar.gz -C /media/<ext2>umount /media/<fat32>umount /media/<ext2>
In futuro probabilmente:wget http://downloads.openwrt.org/snapshots/trunk/at91/openwrt-at91-rootfs.tar.gzsudo tar xvzf openwrt-at91-rootfs.tar.gz -C /media/<ext2>umount /media/<ext2>
5
Incontro ravvicinato
$ sudo ifconfig eth0 192.168.1.2 && telnet 192.168.1.1
BusyBox v1.16.2 (20100715 14:32:26 CEST) builtin shell (ash)Enter 'help' for a list of builtin commands.
_______ ________ __ | |....| | | |..| |_ | || _ | __| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M KAMIKAZE (bleeding edge, r22176) * 10 oz Vodka Shake well with ice and strain * 10 oz Triple sec mixture into 10 shot glasses. * 10 oz lime juice Salute! root@OpenWrt:~#
Il numero di revisione (r22176 nell'esempio) è molto utile per debug!
6
Opkg
opkg update – aggiorna i pacchetti dai repository definiti in /etc/opkg.conf
opkg list – visualizza la lista dei pacchetti installabiliopkg install <nome|link|file>
opkg install pyserial ← Installa dal feedopkg install ftp://myurl.it/pkg/python-mini_2.6.4-3_at91.ipk.opkg install /tmp/zlib_1.2.3-5_at91.ipk ← installa file locale
opkg flag hold <nome> - blocca la versione corrente del pacchetto <nome>
opkg upgrade – usate a vostro rischio !!!
7
Opkgroot@OpenWrt:~# opkg updateDownloading http://downloads.openwrt.org/snapshots/trunk/at91/packages/Packages.gz.Inflating http://downloads.openwrt.org/snapshots/trunk/at91/packages/Packages.gz.Updated list of available packages in /var/opkglists/snapshots.root@OpenWrt:~# opkg install python Installing python (2.6.43) to root...Downloading http://downloads.openwrt.org/snapshots/trunk/at91/packages/python_2.6.43_at91.ipk.Installing libpthread (0.9.30.150) to root...Downloading http://downloads.openwrt.org/snapshots/trunk/at91/packages/libpthread_0.9.30.150_at91.ipk.Installing librt (0.9.30.150) to root...Downloading http://downloads.openwrt.org/snapshots/trunk/at91/packages/librt_0.9.30.150_at91.ipk.Installing zlib (1.2.35) to root...Downloading http://downloads.openwrt.org/snapshots/trunk/at91/packages/zlib_1.2.35_at91.ipk.Installing libffi (3.0.91) to root...Downloading http://downloads.openwrt.org/snapshots/trunk/at91/packages/libffi_3.0.91_at91.ipk.Installing pythonmini (2.6.43) to root...Downloading http://downloads.openwrt.org/snapshots/trunk/at91/packages/pythonmini_2.6.43_at91.ipk.Configuring librt.Configuring libpthread.Configuring zlib.Configuring libffi.Configuring pythonmini.Configuring python.root@OpenWrt:~#
8
Ricominciamo da zero...Sviluppare con OpenWrt
9
Scaricare l'SDK
OpenWrt è una distribuzione linux unica nel suo genere.L'SDK è un ambiente di sviluppo nel quale TUTTI i componenti necessari confluiscono per creare l'ambiente finale.
● Host tools● toolchain● kernel linux● rootfs
10
SDK Introsvn co svn://svn.openwrt.org/openwrt/trunk openwrt
scarica l'sdk
make menuconfig configura l'sdk
make kernel_menuconfig configura il kernel per l'architettura selezionata
svn up----------------------------------------------------------------------------------- Espandere l'SDKAggiungi/modifica feed in feeds.conf
./scripts/feeds install -a
./scripts/feeds update -a
11
Compilare
makecompila l'intero firmware
make cleanripulisci l'sdk (host tools, toolchain, e configurazioni escluse)
make target/linux/{compile|clean}compila/ripulisci il kernel
make <path>/<nome_pkg>/{compile|clean}compila/ripulisci il pacchetto <nome_pkg>
12
Compilare 2
Il processo di compilazione dentro openwrt passa per i seguenti stadi:
Prepare (del codice sorgente)1. Download del sorgente dal web (http, ftp, svn, git, hg)2. Si copia il contenuto della directory files all'interno della
directory di compilazione (solo per il kernel)Patch
Si applicano le patch al sorgenteCompile (no comment)Install (del pacchetto)
Si realizza il pacchetto ipkg
13
Compilare 3
Esempi:https://dev.openwrt.org/browser/packages/admin/sudo
Download sorgenti dal web, configurazione, installhttps://dev.openwrt.org/browser/trunk/package/opkg/Makefile
Download sorgenti dal web, configurazione, install e installdevhttp://sourceforge.net/apps/trac/acme-dev/browser/packages/zz-acmeconf
Meta-pacchetto, notare le dipendenzehttp://sourceforge.net/apps/trac/acme-dev/browser/packages/at91-adc/Makefile
Kernel module
14
Kernel
Il punto forte di OpenWrt è senza dubbio la gestione del kernel.
https://dev.openwrt.org/browser/trunk/target/linux
15
Modificare il kernel
make target/linux/cleanmodificare target/linux/generic/{patches|files}o target/linux/at91/{patches|files}make target/linux/install
Esempio: https://dev.openwrt.org/changeset/21800
16
GPIO usando SYSFSecho 82 > /sys/class/gpio/exportecho out > /sys/class/gpio/gpio82/direction
echo 1 > /sys/class/gpio/gpio82/valuesleep 1echo 0 > /sys/class/gpio/gpio82/value
17
#include <stdio.h>#include <gpio_dev.h>
int main (void) {fd = open (“/dev/gpio”);ioctl (fd, GPIO_REQUEST, 82);ioctl (fd, GPIO_DIR_OUT);ioctl (fd, GPIO_SET, 1);sleep(1);ioctl (fd, GPIO_SET, 0);
}
GPIO usando il C
trunk/target/linux/generic/files/include/linux/gpi_dev.h
18
GPIO e stepper motor
CPU
GPIO APISTEPPER DRIVER
PYTHON CLASS STEPPER
USER SPACE PROGRAM
/DEV/GPIO SYSFS
PWM
/DEV/MOTORn
http://sourceforge.net/apps/trac/acme-dev/browser/kernel-stuff/stepper-driver/stepper-drv.c
19
Seguite lo sviluppo su
http://sourceforge.net/apps/trac/acme-dev/timeline
https://dev.openwrt.org/search?q=claudio
20
EOF
Claudio Mignanti c.mignanti<at>gmail.com- OpenWrt Developer - Hardware designer -
pub 1024D/0DFD7CBB C94D 759A 2EF0 172F 9673 65E4 C4C1 8627 0DFD 7CBB
?