PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
Upcoming SlideShare
Loading in...5
×
 

PIT2012: Workshop@UniNA - Compilazione del Kernel Linux

on

  • 638 views

 

Statistics

Views

Total Views
638
Views on SlideShare
638
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    PIT2012: Workshop@UniNA - Compilazione del Kernel Linux PIT2012: Workshop@UniNA - Compilazione del Kernel Linux Presentation Transcript

    • PIT 2012: Workshop@UniNA Compilazione del Kernel Linux - light tips && tricks - a cura di Marco Ferrignocon il patrocinio del Preside della Facoltà di Ingegneria dellUniversità degli Studi di Napoli Federico II: Prof. Piero Salatino e con il sostegno del Prof. Antonio Pescapè Comics Unina Research Group
    • root@host:/# introPROPEDEUTICITA: Nozioni basilari sulle architetture di elaborazione, Nozioni basilari sullutilizzo dei sistemi operativi, Curiosità e spirito di iniziativa.COSA IMPAREREMO DA QUESTO TALK: GNU/Linux Day 2011: a che punto eravamo rimasti? Il kernel Linux in pratica; Compilazione: un approccio top-down; Bootloader manager && opzioni addizionali
    • GNU General Public LicenseIl sistema Linux è libero, nel senso che si può copiare, modificare e usare inqualunque modo si desideri e si può far circolare senza alcuna limitazioneAllatto della distribuzione si deve rendere disponibile il codice sorgente e ciò vale perogni componente di un pacchetto di distribuzione che sia oggetto della GPL
    • Kernel: cosè realmente?E il software il cui compito è quello di fornire ai processi in esecuzione sullelaboratoreun accesso sicuro e controllato al hardware.PRINCIPALI MANSIONI:  Gestione della porzione tempo-macchina  Gestione delle astrazioni Nel nostro caso (quasi) KERNEL MONOLITICI (UNIX->*.BSD, LINUX ) INTEGRAZIONE DEL CODICE STRETTA
    • Kernel Linux: mappa
    • Kernel Linux: perchè compilareDomanda: La mia distro ha già un kernel precompilato, perchè dovrei ricompilare?Essenzialmente sono quattro i casi in cui la ricompilazione è necessariaLaggiornamento a versioni più recenti senza cambiare distribuzione;Linserimento di nuove funzionalità non contenute nel kernel precompilato;Limplementazione di nuovi driver per una certa periferica;Curiosità e spirito di iniziativa ^_^
    • Kernel Linux: versioni disponibili Domanda: Dove procurarsi i sorgenti?su https://www.kernel.org/Caso desempio: Linux kernel 3.3.2 (Latest Stable Kernel; 13 aprile 2012)https://www.kernel.org/pub/linux/kernel/v3.x/ Numerazione:Nome file: linux-x.y.zMajor release: xRamo di sviluppo: yVersioni per ramo di sviluppo: z
    • Kernel Linux: il formato compressoSCOMPATTARE LARCHIVIOconsiglio: scompattare larchivio nella cartella /usr/srcroot@host:/# bunzip2 linux-3.3.2.tar.bz2sostituisce il *.tar.bz2 con il suo equivalente non compresso *.tarroot@host:/# tar xvf linux-3.3.2.tarestrae dallarchivio i files e crea la giusta struttura di directory, mantenendo il file *.tara questo punto si può entrare nella direcotry creata:root@host:/# cd linux-3.3.2root@host:/linux-3.3.2#
    • Kernel Linux: configurazioneLA FASE DI CONFIGURAZIONEroot@host:/linux-3.3.2# make confignel caso nel sistema fossero presenti le librerie ncurses (e relativi files di sviluppo) èpossibile sostituire il comando sopra citato conroot@host:/linux-3.3.2# make menuconfigLa selezione dei parametri è un procedimento lungo che richiede molta ponderazione:si tratta di decidere cosa andrà compilato ed incluso nel kernel, che cosa non dovràessere compilato, cosa andrà compilato ma sarà utilizzato come modulo.ATTENZIONE ai contrassegni: (*); (M)
    • Kernel Linux: make menuconfigUNO DEI CASI DUSO: make menuconfig
    • General setup --->CONFIGURA FUNZIONALITÀ GENERALI DEL KERNEL.Voci principali (o da tenere sottocchio) su ~60: ( ) Tool per la Cross Compilazione Modalità di compressione del Kernel --- >(GZIP, BZIP2, LZMA, XZ, LZO) [*]System V IPC Sottosistema IRQ ---> Sottosistema RCU ---> [*] Initial RAM filesystem and RAM disk support [*] Configure standard Kernel features (expert users) ---> Kernel performance events and counter --->
    • [*] Enable loadable module support --->I moduli sono piccoli pezzi di codice già compilato che possono essere inseriti nel Kernelin esecuzione.Abilitando questa opzione ed eseguendo successivamentemake modules_installmetteremo i moduli nella cartella/lib/modulesda dove potranno essere poi caricati tramite lutilizzo di modprobe… altri dettagli nelle prossime slides :)
    • [*] Enable the block layer --->Attivazione dei supporti di grandi dimensioni (>2TB) e opzioni per la loro gestionePRINCIPALE SOTTOVOCE:I/O SCHEDULER: DEADLINE: inizio e fine di un servizio tramite un preciso vincolo temporale CFQ: richieste sincrone alle quali è assegnata una porzione di tempo-macchina perciascuna coda di appartenenza NOOP: semplicemente FIFO ^_^
    • Processor type and features --->PROCESSORE: TIPO E CARATTERISTICHE.In questa sezione potete scegliere il tipo di processore per il quale va compilato ilKernelVoci principali (o da tenere sottocchio) su ~70: [*] Enable MPS table (MultiProcessor Specification) [*] Supporting for big SMP System with more than 8 CPUs [*] Paravirtualized guest support ---> Processor family ---> [*] SMT (Hyperthreading) scheduler support Preemption model ---> (server, desktop, low-latency desktop) Hight memory support --->
    • ACPI options / Bus / ELFPOWER MANAGEMENT AND ACPI OPTIONS --->Da tenere sottocchio: CPU frequency scaling → x86 frequency scaling driverBUS OPTIONS --->PCI/PCI-EXPRESS/PCMCIAEXECUTABLE FILE FORMAT / EMULATIONS --->[*] Kernel support for ELF binaries
    • [*] Networking support ---> LISTA VASTISSIMA!Un insieme di opzioni specializzate per la rete, tra cui: Networking option ---> [*] Amateur radio support ---> [M] IRDA ---> [M] Bluetooth ---> [*] Wireless ---> [M] WIMAX ---> NFC (EXPERIMENTAL) --->
    • Device Drivers / Firmware DriversDEVICE DRIVERS --->Opzioni relative alla gestione dei device, dai più obsoleti a quelli più usati:ATA/ATAPI/MFM/RLL;SCSI;SERIAL ATA;PARALLEL ATA;IEEE 1394;MACINTOSH DEVICE DRIVER;ISDN SUPPORT;USB SUPPORT;MMC/SD/SDIO;…FIRMWARE DRIVERS --->[M] EFI variable support[M] DELL system management base driver[ ] Sigmastudio firmware loader[ ] Google firmware driver
    • File system --->IL DOGMA: OGNI COSA E UN FILELa lista dei filesystem supportati è vastissima: EXT2, EXT3, EXT4, RAISER, JFS, XFS, BTRFS, ..JOURNALING: annotazione delle modifiche a seguito di una caduta di tensioneAltre particolarità: Supporto delle quote [M] FUSE (File system in User Space) DOS/FAT/NT file system ---> Network file system --->
    • Kernel hacking --->Avrete a che fare con ~100naio di opzioni.Nella maggior parte dei casi si tratta di debugger e detector: File system Scheduler SLAB Kernel memory leak Spinlock …
    • Security options --->Particolare attenzione a: SELINUX: razionalizza il volume di software caricato con un rafforzamento dellepolitiche di sicurezza strettamente allineato con i requisiti minimi del TCSEC (TrestedComputer System Evalutation Criteria) APPARMOR: permette di associare ad ogni programma un profilo di sicurezza cherestringe le capacità del programma stesso
    • Cryptogaphic API --->[*] Cryptographic algorith managerMolti degli algoritmi presenti sono impostati come moduli e sono divisi nelle seguenticategorie Authenticated encryption Block modes Hash modes Digest Ciphers Compression Random number generator Hardware crypto device --->
    • Virtualization --->KERNEL BASED VIRTUAL MACHINE (KVM) ha tra i suoi maggiori sviluppatori Red-HatKVM è una complessa infrastruttura di virtualizzazione attualmente implementata comemoduloSi prevede a breve la realizzazione di uninterfaccia a chiamata di sistema
    • Kernel Linux: la compilazioneTERMINATA LA LUUUUUUUUUNGA DISAMINA, PASSIAMO ALLA COMPILAZIONE!Assicuratevi che la vostra macchina sia a disposizione senza interruzioni ma soprattuttotrovatevi qualcosa di divertente da fare … 4 semplici lettere stresseranno il vostro pc inuna maniera non indifferenteroot@host:/linux-3.3.2# make
    • Kernel Linux: immagine compressa e moduliIMMAGINE COMPRESSAIn questo momento abbiamo compilato tutto ma non abbiamo ancora messo al loro posto nè imoduli nè limmagine del kernelroot@host:/linux-3.3.2# make bzImageFatto ciò nella sottodirectory arch/xyz/boot si troverà il file bzImage.xyz = sigla che indica larchitettura per cui è stato compilato il kernelCreato il Kernel è il momento di installare i moduliroot@host:/linux-3.3.2# make modules_installFATTO! (cit. necessaria)!Manca solo un RAMdisk
    • Kernel Linux: moduli & driverMa … cosè un modulo?E un componente software che può svolgere diverse funzioniVANTAGGI: Può essere compilato separatamente ed essere caricato in un kernel già in uso Alta personalizzazione Distribuzione gratuita e liberaI DRIVER IN UN SISTEMA LINUX:Il kernel possiede delle tabelle dinamiche di tutti i driver noti e fornisce un insieme diprocedure che permettono di aggiungere o rimuovere un driver da queste tabelle inqualunque momentoMODULI & DRIVER:Un modulo può registrare molti tipi di driver;Un certo modulo può scegliere di registrare più di un driver;Un certo driver potrebbe voler registrare due meccanismi distinti per laccesso ad undispositivo
    • Kernel Linux: initramfsTorniamo al RAMdisk: cosè?E una porzione di RAM che viene utilizzata come disco.root@host:/linux-3.3.2# mkinitramfs -o /boot/initrd.img-3.3.2Il primo parametro indica in path in cui allocare il file
    • Kernel Linux: the end … o quasiCOPIA DEI FILE IMMAGINE DEL KERNEL cp arch/x86/boot/bzImage /boot/vmlinuz-3.3.2 MAPPATURA DEL SISTEMAcp System.map /boot/System.map-3.3.2 [CONSIGLIATA] CONFIGURAZIONE USATAcp .config /boot/config-3.3.2MODIFICA DEL BOOTLOADERLILO, GRUB, GRUB2 … SI RIMANDA ALLE RISPETTIVE GUIDE (RTFM googleandogoogleando)
    • Kernel Linux: il lato oscuroKERNEL PANIC→ ERRORE IRRECUPERABILE INDIVIDUATO IN KERNEL SPACEMANCATO CARICAMENTO DEI MODULIINIEZIONE DI FALLIMENTI→ TRANSAZIONE DI UN SISTEMA IN UNO STATO NON CORRETTOOVERFLOW→ STACK→ BUFFER→ HEAP
    • Moduli: after compilingINSERIMENTO E DEALLOCAZIONE …… rispettivamente con insmod e rmmodNel loro funzionamento non tengono conto delle dipendenze, di conseguenza laprecedenza fra i moduli deve essere tenuta in conto quando si determina lordine conil quale caricarli.Naturalmente la rimozione dei moduli deve avvenire per ordine inverso.LISTA MODULI CARICATIlsmodLoutput visualizza il nome del modulo, il numero di dipendenze e le dipendenzestesse.CARICAMENTO MODULImodprobeCarica, sfruttando la il contenuto di modules.dep, tutti i moduli eventualmentenecessari per il corretto funzionamento di quello specificatoGENERATORE DI DIPENDENZEdepmodSi trova come script di avvio in tutte le distribuzioni e consente di generareautomaticamente il file modules.dep (lista di dipendenze)
    • Kernel Linux: opzioni addizionaliAlcune opzioni addizionali:Algoritmo di scheduling: inserimentoIl kernel permette di impostare lalgoritmo di scheduling a runtime mediante sysfs; inquesto modo è possibile selezionare il miglior algoritmo a seconda del proprio utilizzoroot@host:/# echo nomescheduler > sys/block/nomedevice/queue/ioschedOpzioni di avvio installazioneacpi=off → disattiva luso dellACPIapm=off → disattiva luso dellAPMdisplay=IP:0 → trasmette il display su un sistema remotoexpert → permette il partizionamento di un media staccabile e il montaggio di altri devicemediacheck → verifica integrità isonoathlon → disattiva le ottimizzazioni per AMD Athlonnoprobe → disattiva il rilevamento hardwarenousb → disattiva il caricamento del modulo e il montaggio di periferiche usbresolution= → imposta la modalità video preferita
    • Stiamo per finire ...Talk is cheap. Show me the code (Linus Torvalds)
    • … stiamo finendo ...Un sentito ringraziamento a chi ha permesso lo svolgersi di tuttoquesto:al Preside della Facoltà di Ingegneria dellUniversità degliStudi di Napoli Federico II: Prof. Piero Salatinoe al Prof. Antonio Pescapè, nostro eterno supporterAi ragazzi dellassociazione NaLug – Napoli GNU/Linux Users Grouphttp://nalug.netinfo@nalug.net
    • … abbiamo finito!Bibliografia:dal kernel 2.2 in poi … parecchi kernel panic -.-Riferimenti e contatti:Marco Ferrigno- Security & system independent researcher -- Developer of the Italian Debian GNU/Linux HOWTOs -http://marcoferrigno.wordpress.com best regards ;-)