Un Pinguino piccolo piccolo - Linux nei sistemi...

39
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un Pinguino piccolo piccolo Linux nei sistemi embedded Luca Ceresoli

Transcript of Un Pinguino piccolo piccolo - Linux nei sistemi...

Page 1: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Un Pinguino piccolo piccoloLinux nei sistemi embedded

Luca Ceresoli

Page 2: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Introduzione

Page 3: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Che cosa è un sistema embedded?

Page 4: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Router ADSL

Page 5: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Televisione

Page 6: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Terminale POS

Page 7: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Tagliatrice laser

Page 8: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Stampante 3D

Page 9: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Che cosa è un sistema embedded

• È un computer• incorporato in un sistema• programmato per una specifica applicazione• con una piattaforma hardware ad hoc

Page 10: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Embedded = piccolo?

Page 11: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Diffusione di Linux

• 65% of smart mobile devices• 95% of high performance computing market• 55% of embedded systems market• 40% of enerprise server market• 90% of world’s stock exchange

Source: Jim Zemlin, State of Linux, LinuxCon 2014, https://www.youtube.com/watch?v=YdmT2arOZBw

Page 12: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Anatomia di un Sistema Operativo

Page 13: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Vantaggi di Linux

• Open Source• Nessun costo di acquisto (ma vanno rispettate le licenze!)• Esiste una montagna di software pronto da usare• Personalizzabile e adattabile in ogni sua parte

• Affidabile• Efficiente• Formato da molti piccoli pezzi

• Quasi nessuno è obbligatorio• Molto sono sostituibili

Page 14: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Demo

Alcuni sistemi embedded Linux in funzione

Page 15: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Sfida #1: Risorse disponibili

Page 16: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Risorse disponibili

PC Android EmbeddedCPU cores 2..8 1..4 1..8CPU clock 2..3 GHz 1..2 GHz 100 MHz .. 3 GHzRAM 4..16 GB 1..4 GB 8 MB .. 16 GBStorage 120 GB .. 6 TB 4..64 GB 8 MB .. 1 TBNetworking 1 GB/s, WiFi WiFi, 4G ???USB 3.0 2.0 .. 3.0 nulla .. 3.0

Page 17: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Libreria C

• GNU libc: ~2 MB• La più completa, e conforme agli

standard• Usata nelle distribuzioni per PC e server

• uClibc-ng: < 1 MB• Configurabile: si possono disattivare

alcuni componenti che non servono• musl

• Alternativa recente• Più compatta di uClibc-ng• Configurabile

Page 18: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Busybox /1

[,[[,addgroup,adduser,adjtimex,ar,arp,arping,ash,awk,basename,bbconfig,bbsh,brctl,bunzip2,busybox,bzcat,bzip2,cal,cat,catv,chat,chattr,chcon,chgrp,chmod,chown,chpasswd,chpst,chroot,chrt,chvt,cksum,clear,cmp,comm,cp,cpio,crond,crontab,cryptpw,cttyhack,cut,date,dc,dd,deallocvt,delgroup,deluser,depmod,devfsd,df,dhcprelay,diff,dirname,dmesg,dnsd,dos2unix,dpkg,dpkg_deb,du,dumpkmap,dumpleases,e2fsck,echo,ed,egrep,eject,env,envdir,envuidgid,ether_wake,expand,expr,fakeidentd,false,fbset,fbsplash,fdflush,fdformat,fdisk,fetchmail,fgrep,find,findfs,fold,free,freeramdisk,fsck,fsck_minix,ftpget,ftpput,fuser,getenforce,getopt,getsebool,getty,grep,gunzip,gzip,halt,hd,hdparm,head,hexdump,hostid,hostname,httpd,hush,hwclock,id,ifconfig,ifdown,ifenslave,ifup,inetd,init,inotifyd,insmod,install,ip,ipaddr,ipcalc,ipcrm,ipcs,iplink,iproute,iprule,iptunnel,kbd_mode,kill,killall,killall5,klogd,lash,last,length,less,linux32,linux64,linuxrc,ln,load_policy,loadfont,loadkmap,logger,login,logname,logread,losetup,lpd,lpq,lpr,ls,lsattr,lsmod,lzmacat,makedevs,man,matchpathcon,md5sum,mdev,mesg,microcom,mkdir,mke2fs,mkfifo,mkfs_minix,mknod,mkswap,mktemp,modprobe,more,mount,mountpoint,msh,mt,mv,nameif,nc,netstat,nice,nmeter,nohup,nslookup,od,openvt,parse,passwd,patch,pgrep,pidof,ping,ping6,pipe_progress,pivot_root,pkill,poweroff,printenv,printf,ps,pscan,pwd,raidautorun,rdate,rdev,readahead,readlink,readprofile,realpath,reboot,renice,reset,resize,restorecon,rm,rmdir,rmmod,route,rpm,rpm2cpio,rtcwake,run_parts,runcon,runlevel,runsv,runsvdir,rx,script,sed,selinuxenabled,sendmail,seq,sestatus,setarch,setconsole,setenforce,setfiles,setfont,setkeycodes,setlogcons,setsebool,setsid,setuidgid,sh,sha1sum,showkey,slattach,sleep,softlimit,sort,split,start_stop_daemon,stat,strings,stty,su,sulogin,sum,sv,svlogd,swapoff,swapon,switch_root,sync,sysctl,syslogd,tac,tail,tar,taskset,tcpsvd,tee,telnet,telnetd,test,tftp,tftpd,time,top,touch,tr,traceroute,true,tty,ttysize,tune2fs,udhcpc,udhcpd,udpsvd,umount,uname,uncompress,unexpand,uniq,unix2dos,unlzma,unzip,uptime,usleep,uudecode,uuencode,vconfig,vi,vlock,watch,watchdog,wc,wget,which,who,whoami,xargs,yes,zcat,zcip

Page 19: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Busybox /2

• Un sistema Linux ha bisogno di molti programmi di base perfunzionare

• un sistema di init, una shell, un semplice editor di testo,programmi per manipolare files, esaminare lo stato del sistema,configurare la rete…

• In una distribuzione sono tanti eseguibili• Non pensati per un sistema embedded• Occupano spazio• Diverse fonti, vanno gestiti in modi diversi

• Soluzione: Busybox!• Unico eseguibile, molti programmi• Ottimizzato per un sistema embedded• Molto configurabile

Page 20: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Kernel

• È il nocciolo dell’intero sistema!• Relativamente piccolo ma estremamente

importante• Grande potere (e grande responsabilità!)

• Gestisce tutte le risorse hardware:CPU, memoria, I/O…

• Fornisce un’interfaccia portabileall’hardware per le librerie ed applicazioni

• È mostruosamente configurabile

Page 21: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Demo

Configurazione del kernel

Page 22: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Sfida #2: Cross-compilazione

Page 23: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Architettura delle CPU

Page 24: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Host VS Target

Page 25: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Toolchain

• Toolchain = strumenti per tradurre i sorgenti in eseguibili elibrerie = compilatore + linker + altri strumenti

• Il compilatore standard del PC è una toolchain nativa• è un programma x86 che gira sul PC• produce un programma x86 che gira sul PC

• Per un sistema embedded (non x86) serve una crosstoolchain

• è un programma x86 che gira sul PC (“host”)• produce un programma ARM, MIPS... che gira sul sistema

embedded (“target”)

Page 26: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Come mi procuro una cross-toolchain?

• Fai da te (e buona fortuna!)• crosstool-NG• Openembedded• Buildroot• Toolchain già pronta

Page 27: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Demo

Cross-compilazione

Page 28: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Sfida #3: Comporre un puzzle

Page 29: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Sistemi operativi standardizzati

• Distribuzioni Linux, Windows, Android...• Molte librerie e servizi di base sempre presenti• Le applicazioni possono contare su un ambiente sempre uguale

Page 30: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Sistemi embedded Linux

• Probabilmente c’è dell’hardware in meno• Non è detto che ci siano schermo, tastiera, mouse, touchscreen

• Probabilmente c’è dell’hardware in più• Controllo motori, lettore di carte magnetiche, telecomando,

pannelli LED a scritta variabile…• Non si può dar per scontato di avere librerie e servizi di base

come su PC• Spesso vanno realizzati in modo sartoriale• Bisogna trovare i pezzi, sceglierli, assemblarli…

• Possono essere molti• Può essere difficile farli cooperare correttamente

Page 31: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Come assemblare i pezzi

• Fai da te (e buona fortuna!)• Build system

• Buildroot• Openembedded• OpenWRT• …

• Distribuzioni embedded pronte• Utilizzabile solo con hardware relativamente potente

Page 32: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Buildroot

• Buildroot — Making Embedded Linux Easy• Strumento per generare tutti i componenti

• Cross-toolchain• Bootloader• Kernel• Root filesystem: librerie, applicativi…

• Contiene le “ricette” per compilare oltre 1700 pacchetti• File “immagine” da scrivere in flash, SD…

• http://buildroot.org/

Page 33: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Buildroot: configurazione

• Si configura con kconfig come ilkernel:make menuconfig

• Permette di definire• L’architettura della CPU• Le caratteristiche della toolchain• Le applicazioni e librerie includere• I tipi di file immagine da generare• La configurazione del kernel• La configurazione del bootloader

Page 34: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Buildroot: esecuzione

• Per compilare il tutto:make

• Per ciascun pacchettoesegue diversi passi:

• Download dei sorgenti• Extract• Patch• Configure• Build• Install

• Alle fine genera l’immaginedi root filesystem, kernel equant’altro necessario

ALL

toolchain busybox initscripts skeleton host-uboot-tools uboot linux rootfs-ext2

toolchain-external

host-kmod

host-lzop

host-pkgconf

host-lzo

host-automake

host-autoconf

host-libtool

host-m4

host-mke2img host-fakeroot host-makedevs

host-e2fsprogs host-genext2fs

Page 35: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Demo

Da zero a login con Buildroot

Page 36: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Olimex A20-OLinuXino-MICRO

• SoC: Allwinner A20• Core: ARM dual Cortex-A7• https://www.olimex.com/wiki/

A20-OLinuXino-MICRO• http://linux-sunxi.org

Page 37: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Raspberry Pi Model B

• SoC: Broadcom BCM2835• Core: ARM11• https://www.raspberrypi.org/

products/model-b/• http://elinux.org/RPi_Low-level_

peripherals

Page 38: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Fine

[email protected]

http://lucaceresoli.net

Page 39: Un Pinguino piccolo piccolo - Linux nei sistemi embeddedlucaceresoli.net/wp-content/uploads/embedded-linux-talk.pdf · Che cosa è un sistema embedded • È un computer • incorporato

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

CC-BY-SA

© Copyright 2015–2016, Luca Ceresoli

Materiale rilasciato sotto licenzaCreative Commons Attribution - Share Alike 3.0

https://creativecommons.org/licenses/by-sa/3.0/

Materiale da:http://free-electrons.com/doc/training/embedded-linux/

https://en.wikipedia.org/wiki/File:Mips32_addi.svg

https://en.wikipedia.org/wiki/File:MIPS_Architecture_(Pipelined).svg

https://commons.wikimedia.org/wiki/File:NN-K125MBGPG_Grill-Mikrowelle_silber_Panasonic.png

https://commons.wikimedia.org/wiki/File:Bancomat_ATM_italy.jpg

https://commons.wikimedia.org/wiki/File:MakerBot_ThingOMatic_Bre_Pettis.jpg

https://www.olimex.com/wiki/File:A20-OLinuXino.jpeg

https://commons.wikimedia.org/wiki/File:Raspberry_Pi_Model_B_Rev._2_(rotated_cropped).jpg

© Copyright dei rispettivi autori