EOS-Book 0 [PDF]

  • Author / Uploaded
  • james
  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

,O SULPR 2 ( FR (2

RRN PR R P L R

L D H

LEUD WH VRGGLVID LR H

RRN PR RWHPDWLFR D

FKH VR R D SUHVH WDU L LO SULPR

L T DVL ELWHPDWLFR , IDWWL DOO L WHU R FR WLH H

ULDO SDUWH GR GD HUR LO SULPR V (PEHGGHG R OLR R DGGH WUDUVL

1

/L

DGDWWR D SUR UDPPDWRUL FKH

HOO DIIDVFL D WH PR GR GL /L

SURIHVVLR DOH LPSDUD GR D

FRPSLODUH LO .HU HO SUHSDUDUH LO URRW ILOHV VWHP IL R DG DUUL DUH D UHDOL PL LPDOH PD I DVSEHUU

LR D WH SHU LO

L IRUPDWLFL H VPD HWWR L

DUH

D GLVWUR

DV ,

, FKH SRL VDU SURWD R LVWD GHO VHFR GR W WRULDO

PH WH RWWLPL

W WR

D

LGD DGDWWD D W WWL

DO VHFROR PDNHUV SHU LPSDUDUH D FR IL

DUOR SHU OD D L D LR H

HE

WLOL

DUOR SHU FUHDUH

UDUOR FRUUHWWD URSER SHUVR

DOH GR H VDO DUH L SURSUL ILOH SHU UH GHUOL DFFHVVLELOL GDOOD VWHVVD UHWH (WKHU HW R :LIL DOOD T DOH q FR

HVVR LO RVWUR

R GLVSRVLWL R PRELOH WHOHFRPD GR , , IL H

HGUHPR D FKH FRPH UHDOL

VIU WWD GR

RUUHL IDU

DV , R DGGLULWW UD WUDPLWH L WHU HW IL R DG

(2

RRN

(PD

HOH

RWDUH V OOD FRSHUWL D LO FDPELR GL VLPEROR L L LDOH FKH SUHFHGH OD P

PHWWHWH HOR HOOR VWDFN

R D

PHGLD FH WHU FRPSOHWR GL

R GHL WD WL WHOHFRPD GL FKH DEELDPR L FDVD

PHUD LR H H FKH LGH WLILFKHU D FKH L DEER DWL ODWL

DUH

DOWUR

L

VH

LWR

OL (2

RRN H WUD ULVHU DWL D OL

PE GG G 1 /L S U GR G UR

L RPSLO U LO N U O , WURG

C

LR H

lavorando.

reare un sistema GNU/Linux da zero costi-

Per agevolare la lettura, l’articolo è strutturato in

tuisce un buon esercizio per comprendere

più parti distinte:

alcuni aspetti chiave del suo funzionamen-



preparazione del kernel

to interno.



preparazione del root lesystem

Tuttavia, oltre all’aspetto didattico, ci sono an-



integrazione e test su QEMU [2]

che risvolti pratici

Tutti i passaggi illustrati di seguito sono stati te-

interessanti: conoscere i componenti e gli stru-

stati su un sistema desktop GNU/Linux usando

menti base che servono a costruire un sistema

la recente distribuzione Ubuntu 12.04.1.

GNU/Linux ci permette spesso, specie in ambito embedded, di generare ambienti più compat-

HT LVLWL

ti ed ef cienti rispetto alle soluzioni general-

Il primo requsito per creare un sistema GNU/

purpose messe a disposizione dal fornitore del

Linux consiste nello scegliere un’architettura

prodotto o della board di sviluppo su cui stiamo

target. Dato che l’articolo ha un taglio prevalentemente orientato all’embedded e vista la pre-

PE GG G

/L

U

GR G

UR

donimanza delle architetture ARM in tale settore, opteremo per un’architettura ARM. Una volta scelta l’architettura target abbiamo bisogno di due componenti fondamentali: 1. una piattaforma di prova su cui testare il nostro sistema 2. una toolchain che ci permetta di cross-compilare i binari che vanno a costituire l’intero sistema operativo RDUG

Nel nostro caso prenderemo in esame la Versatile Express (vexpress-a9) [5], visto che è quella

LUW DOH GL V LO SSR

Il mercato mette a disposizione una vasta gamma di board di sviluppo ARM-based, anche a basso costo.

C CE

PGNNC ETGC QPG # /R GO NCP Q

U

QNG E OGP CTG

P U U GOC )

.P ZU

HCTNQ EQORNG COGP G C EQU Q GTQ T CNOGP G NC R C CHQTOC

U

N RRQ. Come software di emulazione ci baseremo su QEMU [4], che di fatto costituisce l’emulatore di architettura per eccellenza nel mondo Linux. QEMU permette di emulare diverse piattaforme ARM-based, ad esempio nella versione di QEMU installata su Ubuntu 12.04 abbiamo a disposizione le seguenti piattaforme:

supportata perfettamente dal kernel “mainline” (la versione del kernel uf ciale, reperibile da http://www.kernel.org), sia da QEMU, senza dover applicare patch aggiuntive. Inoltre, la Versatile Express monta un core Cortex-A9, una CPU ARM-based utilizzata su gran parte dei tablet, smartphone e netbook di recente produzione. Emulare la piattaforma di sviluppo è piuttosto semplice, basta lanciare il comando: $ qemu-system-arm -M vexpress-a9 -kernel ash.img

Dove ash.img è un le contenente l’immagine del nostro kernel/ rmware che vogliamo far girare. Nei passi seguenti vedremo come generare tale immagine. RROFKDL GL FURVV FRPSLOD LR H La toolchain è un insieme di strumenti (tipicamente un compilatore, un linker e delle librerie) che ci permettono di generare le applicazioni per il sistema target a partire dai sorgenti. La GNU toolchain tipica è costituita dal compilatore GCC, le binutils (strumenti per la manipolazione dei binari) e le librerie glibc. Per questa prima fase ci vengono in aiuto le toolchain pre-compilate (creare un sistema da zero non implica necessariamente di doverci ricompilare anche gli strumenti per creare il sistema stesso).

PE GG G

/L

U

In rete si trovano molte toolchain pre-compilate,

2GT N

nel nostro caso utilizzeremo la Linaro Toolchain

.P Z

Binaries [3], una toolchain ottimizzata per le più

GR G

UR

GP G Q N RTQITCOOC QTG

CN Q N GNNQ

UGORTG NQ U GUUQ P RGP GP GOGP

G C Q G I TC NC RTQRT C CRRN EC QPG.

recenti famiglie di CPU ARM (Cortex A8, A9,

La prima fase della ricompilazione del kernel

etc.).

consiste nel processo di con gurazione. Esso

Il setup della toolchain è costituito dai seguenti

permette di scegliere la particolare architettura

passaggi: • download dei binari della toolchain da internet: https://launchpad.net/linaro-toolchain-binaries/trunk/2012.09/+download/... • estrazione del pacchetto .tar.bz2:

che vogliamo utilizzare per il layer di basso livello, assieme a tutti i driver e le funzionalità di alto livello che vogliamo fornire alle applicazioni user-space. Come abbiamo detto la piattaforma Versatile Express è già supportata



pienamente dal kernel Linux,

setup della variabile di ambiente PATH per rendere disponibili i binari della toolchain

quindi possiamo procedere direttamente alla

dalla shell corrente:

con gurazione senza dover applicare patch o modi care codice:

)DVH

SUHSDUD LR H GHO NHU HO

A questo punto abbiamo tutti gli strumenti ne-

Le variabili di ambiente ARCH e CROSS_COM-

cessari per iniziare a sviluppare sulla board vir-

PILE sono informazioni per il compilatore; esse

tuale.

permettono di selezionare la particolare archi-

Il primo passo consiste nel reperire i sorgenti

tettura (ARCH) e la particolare versione com-

“mainline” del kernel da http://www.kernel.org e

pilatore (CROSS_COMPILE) per generare il

ricompilarli per la nostra archiettura target.

codice oggetto.

Al momento della stesura di questo articolo l’ul-

L’opzione “vexpress_defcon g” viene usata dal

timo kernel del ramo “stable” è il 3.5.4, proce-

kernel nel processo di build: essa permette di

diamo quindi al download e all’estrazione dei

selezionare la con gurazione di default (defcon-

sorgenti:

g) stabilita dalla comunità di sviluppatori che mantengono il codice per tale architettura. Le varie con gurazioni *_defcon g per ARM si trovano tutte in arch/arm/con gs/*.

Il kernel Linux supporta un’ampia gamma di

In ne resta da effettuare il passo di compilazio-

architetture e piattaforme eterogenee: fonda-

ne vero e proprio:

mentalmente esso è composto da un layer di basso livello (./arch/*) che si interfaccia direttamente con il

La ricompilazione di un intero kernel richiede

particolare hardware ed esporta ai livelli più alti

dai 5 ai 10 minuti. Al termine, se tutto è andato

interfacce generiche indipendenti dall’hardware

correttamente, troveremo il seguente le nelle

sottostante.

directory dei sorgenti del kernel: