Understanding Linux: 20 anni di kernel tra storia e tecnica
Upcoming SlideShare
Loading in...5
×
 

Understanding Linux: 20 anni di kernel tra storia e tecnica

on

  • 886 views

 

Statistics

Views

Total Views
886
Views on SlideShare
747
Embed Views
139

Actions

Likes
0
Downloads
3
Comments
0

1 Embed 139

http://www.scoop.it 139

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

Understanding Linux: 20 anni di kernel tra storia e tecnica Understanding Linux: 20 anni di kernel tra storia e tecnica Presentation Transcript

  • #LINUX DAY NAPOLI 2011 Understanding Linux:20 anni di kernel tra storia e tecnica A CURA DI MARCO FERRIGNO - Security & system independent researcher -- Developer of the Italian Debian GNU/Linux HOWTOs - gplus.to/marko.ferrigno #all_contacts
  • root@host:/# introPROPEDEUTICITA: NOZIONI BASILARI SULLE ARCHITETTURE DI ELABORAZIONE, NOZIONI BASILARI SULLUTILIZZO DEI SISTEMI OPERATIVI, CURIOSITA E SPIRITO DI INIZIATIVA.COSA IMPAREREMO DA QUESTO TALK: COSE UN KERNEL, IL KERNEL LINUX: STORIA, IL KERNEL LINUX: TECNICA, IL KERNEL LINUX IN PRATICA, … ALTRE AMENITA NERD ORIENTED
  • Kernel: cosè realmente?E IL SOFTWARE IL CUI COMPITO E QUELLO DI FORNIRE AI PROCESSI INESECUZIONE SULLELABORATORE UN ACCESSO SICURO E CONTROLLATOALLHARDWARE.PRINCIPALI MANSIONI: GESTIONE DELLA PORZIONE TEMPO-MACCHINA, GESTIONE DELLE ASTRAZIONI.I KERNEL SI CLASSIFICANO IN QUATTRO CATEGORIE: MONOLITICI MICROKERNEL IBRIDI ESOKERNEL View slide
  • Differenze tra kernelKERNEL MONOLITICI(UNIX->*.BSD, LINUX )INTEGRAZIONE DEL CODICE STRETTAMICROKERNEL(MACH, MINIX, QNX)SEPARAZIONE SERVIZI BASE DA STRUTTRAOPERATIVA View slide
  • Differenze tra kernel IBRIDI (WINDOWS, XNU, DRAGONFLY, QUARK)CODICE NON ESSENZIALE A LIVELLO KS ESOKERNEL (NEMESIS)”POTERE ALLO SVILUPPATORE”
  • Kernel Linux: le origini"I’m doing a (free) operating system (just a hobby, won’t be big and professionallike gnu) for 386(486) AT clones."- Linus Torvads 26 agosto 1991 8:12 am - camp.os.minixHA INIZIO UNA STORIA RICCA DI CONTRIBUTI DA PARTE DI UTENTI DI TUTTO ILMONDO CHE COMUNICAVANO ESCLUSIVAMENTE TRAMITE INTERNET.TRA LA NASCITA E LO STATO DELLARTE: LA ”GUERRA” LINUS TORVALDS VS ANDREW TANENBAUM LINUX 1.0 - 14 MARZO 1994 LINUX 3.0 - 21 LUGLIO 2011
  • Kernel Linux: stato dellarteLINUX 3.0: PRINCIPALI MIGLIORAMENTI BTRFS: DEFRAMMENTAZIONE AUTOMATICA, SCRUBBING , PRESTAZIONI AMPIAMENTO DEL PARCO DRIVER E DELLE ARCHITETTURE > SCALABILITA DEL VFS PROCESS SCHEDULER++ GESTIONE DELLA MEMORIA++ NETWORKING → IPSET: SCTP, UDPLITE FILE SYSTEM → EXT4 ”PUNCH HOLE”, CIFS WINDOWS 2008 DFS, XFS++ CRYPTO → FREESCALE SEC4/CAAM, SHA1/256 VIA NANO, S5PV210 VIRTUALIZZAZIONE → USER MODE++, XEN BLKBACK SICUREZZA → SELINUX MOUNT POINT /sys/fs/selinux ALTRE MODIFICHE → ULIMIT, KBUILD, HIBERNATE, POSIX-TIMER, COREDUMPNB: (++) == miglioramento rispetto alla release precedente FACCIAMO UN PASSO INDIETRO ...
  • Kernel Linux: melting potIL ”SISTEMA” LINUX: CODICE EX NOVO KERNEL LINUX GESTIONE DEI SERVIZI DI RETE 4.3BSD VARI FRAMMENTI DI CODICE X WINDOWS GNU PRINCIPALI LIBRERIE DI SISTEMA, GCCFILE SYSTEM HIERARCHY STANDARD:DOCUMENTO CHE STABILISCE SOTTO QUALI NOMI DI DIRECTORY I FILE DICONFIGURAZIONE, LE LIBRERIE, I FILE ESEGUIBILI DI SISTEMA E I FILE DI DATIDOVREBBERO ESSERE ARCHIVIATIDISTRIBUZIONI E PACKAGES MANAGERS:DA SOFTLANDING LINUX SYSTEM (AGOSTO 1992) A SABAYON ……. PASSANDO PER SLACKWARE, DEBIAN, RED HAT
  • Kernel Linux: licenzeI TERMINI DELLA GNU GENERAL PUBLIC LICENSE (GPL) SONO STATI STABILITIDALLA FREE SOFTWARE FOUNDATION.IL SISTEMA LINUX E LIBERO NEL SENSO CHE SI PUO COPIARE, MODIFICARE EUSARE IN QUALUNQUE MODO SI DESIDERI E SI PUO FAR CIRCOLARE SENZAALCUNA LIMITAZIONE.CHIUNQUE LO USI O CREI UN PRODOTTO DA ESSO DERIVATO NON PUORECLAMARE DIRITTI DI PROPRIETA SUL PRODOTTO.ALLATTO DELLA DISTRIBUZIONE SI DEVE RENDERE DISPONIBILE IL CODICESORGENTE E CIO VALE PER OGNI COMPONENTE DI UN PACCHETTO DIDISTRIBUZIONE CHE SIA OGGETTO DELLA GPL.CIO NON EVITA LA DIFFUSIONE GRATUITA O LA VENDITA DI VERSIONIPURAMENTE BINARIE, PURCHE CHIUNQUE RICEVA I FILE ESEGUIBILI ABBIA LAPOSSIBILITA DI OTTENERE IL CODICE SORGENTE AD UN PREZZORAGIONEVOLE
  • Kernel Linux: moduli & driverTORNANDO ALLA TECNICA … COSE UN MODULO?E UN COMPONENTE SOFTWARE CHE PUÒ SVOLGERE DIVERSE FUNZIONIVANTAGGI: PUÒ ESSERE COMPILATO SEPARATAMENTE ED ESSERE CARICATO IN UN KERNEL GIA IN USO. ALTA PERSONALIZZAZIONE DISTRIBUZIONE GRATUITA E LIBERAI DRIVER IN UN SISTEMA LINUX:IL KERNEL POSSIEDE DELLE TABELLE DINAMICHE DI TUTTI I DRIVER NOTI EFORNISCE UN INSIEME DI PROCEDURE CHE PERMETTONO DI AGGIUNGERE ORIMUOVERE UN DRIVER DA QUESTE TABELLE IN QUALUNQUE MOMENTOMODULI & DRIVER:UN MODULO PUO REGISTRARE MOLTI TIPI DI DRIVER; UN CERTO MODULO PUOSCEGLIERE FRA QUESTI E, SE LO DESIDERA, REGISTRARE PIU DI UN DRIVER.UN CERTO DRIVER POTREBBE VOLER REGISTRARE DUE MECCANISMI DISTINTIPER LACCESSO AD UN DISPOSITIVO.
  • Kernel Linux: gestione dei processiMODELLO UNIX: CREAZIONE - FORK() - ED ESECUZIONE - EXEC() - DEIPROGRAMMI.IDENTITA DEI PROCESSI: IDENTIFICATORE (PROCESS IDENTIFIER - PID) CREDENZIALI UTENTE PERSONALITA DELLA SEMANTICA (LINUX)CONTESTO DI UN PROCESSO: CONTESTO DI SCHEDULING CONTABILIZZAZIONE DELLE RISORSE TABELLA DEI FILES CONTESTO DEL FILE SYSTEM TABELLA DEI GESTORI DEI SEGNALI CONTESTO DELLA MEMORIA VIRTUALELA CHIAMATA CLONE() E IL CONCETTO DI TASK
  • Kernel Linux: schedulingLO SCHEDULING CONSISTE NELLALLOCAZIONE DEL TEMPO DI CPU AI DIVERSITASK ALLINTERNO DI UN SISTEMA OPERATIVO.UN ASPETTO IMPORTANTE DELLO SCHEDULING NEL SISTEMA LINUX ÈLESECUZIONE DEI VARI TASK DEL KERNEL: TASK RICHIESTI DA UN PROCESSO IN ESECUZIONE TASK INTERNI ESEGUITI PER CONTO DI UN DRIVER DI DISPOSITIVO.2 DISTINTI ALGORITMI DI SCHEDULING(CON PRELAZIONE E BASATO SULLE PRIORITA): ALGORITMO A PARTIZIONE DEL TEMPO ALGORITMO DI REAL TIME (SOFT)SINCRONIZZAZIONE KERNEL: PRELAZIONE VS SPINLOCKMULTIELABORAZIONE SIMMETRICA (SMP): SPINLOCK BIG KERNEL LOCK (BKL) LOCK MULTIPLI E ALGORITIMI DI BILANCIAMENTO DEL CARICO
  • Kernel Linux: gestione della memoria ALLOCAZIONE E RILASCIO DI PAGINE E BLOCCHI DI MEMORIA MEMORIA VIRTUALEGESTIONE DELLA MEMORIA FISICA:ZONA MEMORIA FISICAZONE_DMA <16 MBZONE_NORMAL 16 MB <X< 896 MBZONE_HIGHMEM >896 MBSISTEMI DI ALLOCAZIONE: BUDDY, KMALLOC(), SLABGESTIONE DELLA MEMORIA VIRTUALE:SPAZIO DI INDIRIZZI VISIBILE A OGNI PROCESSO(NATURA LOGICA VS NATURA FISICA)ASPETTI DA VALUTARE: DURATA DI UNO SPAZIO DI INDIRIZZI PAGINAZIONE E AVVICENDAMENTO
  • Kernel Linux: file systemIL DOGMA: OGNI COSA E UN FILEDAL VANGELO DI THOMPSON && RITCHIE: ”UN FILE NON E NECESSARIAMENTE UN OGGETTO MEMORIZZATO IN UN DISCO O PRELEVATO DA UN SERVER DI RETE: UN FILE E QUALUNQUE ELEMENTO SIA IN GRADO DI GESTIRE LIMMISSIONE O LEMISSIONE DI UN FLUSSO DI DATI”IL KERNEL DI LINUX GESTISCE TUTTI I TIPI DI FILE NASCONDENDONE IDETTAGLI RELATIVI ALLA STRUTTURA INTERNA SOTTO UNO STRATO DIPROGRAMMI: IL FILE SYSTEM VIRTUALE (VFS)IL VFS DEFINISCE QUATTRO TIPI DI OGGETTI PRINCIPALI: INODE FILE → /usr/include/linux/fs.h SUPERBLOCCO DENTRY → /usr/include/stdio.hJOURNALING: ANNOTAZIONE DELLE MODIFICHE/PROC: RAPPRESENTAZIONE COME FILE DELLE STRUTTURE DEL KERNEL
  • Kernel Linux: I/OIL SISTEMA LINUX SUDDIVIDE I DISPOSITIVI IN TRE CLASSI:DISPOSITIVI A BLOCCHI→ BLOCCHI DI DATI DI DIMENSIONE FISSA INDIPENDETEDISPOSITIVI A CARATTERI→ MOUSE E TASTIERE DISPOSITIVI DI RETE → COMUNICAZIONE INDIRETTA TRAMITE IL SOTTOSISTEMA DI RETE DELKERNEL
  • Kernel Linux: comunicazione fra processiIL MECCANISMO STANDARD DI UNIX USATO PER COMUNICARE A UN PROCESSOCHE UN EVENTO SI È VERIFICATO È IL SEGNALELINUX PERO NON UTILIZZA I SEGNALI PER COMUNICARE CON I PROCESSIESEGUITI IN MODALITA KERNEL. ESSO FA USO DEGLI STATI DI SCHEDULING EDELLE STRUTTURE wait_queueMECCANISMO DEI SEMAFORI – VANTAGGI: ESSERE CONDIVISI IN GRAN NUMERO DA PROCESSI INDIPENDENTI ESECUZIONE ATOMICAPASSAGGIO DI DATI TRA PROCESSI: PIPE
  • Kernel Linux: struttura di reteINTERNAMENTE IL KERNEL REALIZZA I SERVIZI DI RETE PER MEZZO DI TRESTRATI DI PROGRAMMI: INTERFACCIA A SOCKET (4.3BSD)DRIVER DEI PROTOCOLLI (ETICHETTATURA DI PROTOCOLLO)→ skbuff→ GESTIONE DEL FIREWALL→ CATENE DI FIREWALLDRIVER DEI DISPOSITIVI DI RETE→ ipfraq→ ipq
  • Kernel Linux: sicurezzaLE QUESTIONI RELATIVE ALLA SICUREZZA SONO CLASSIFICABILI IN DUEGRUPPI: AUTENTICAZIONE → ASSICURARE CHE NESSUNO POSSA ACCEDERE AL SISTEMA SENZA PRMADIMOSTRARE DI AVERNE DIRITTO → FUNZIONE DI CODIFICA NON INVERTIBILE → PAM (PLUGGABLE AUTHENTICATION MODULES) CONTROLLO DELLACCESSO → FORNIRE UN MECCANISMO CHE PERMETTA DI CONTROLLARE SE UNUTENTE ABBIA DIRITTO DACCESSO A UN CERTO OGGETTO E CHE IMPEDISCALACCESSO SE LESITO DEL CONTROLLO E NEGATIVO → UID, GID → MASCHERA DI PROTEZIONE → ROOT (da non confondere con chroot*)*isolare limiti operativi di una singola applicazione, utile per la difesa in rete (…e non solo)
  • Kernel Linux: mappa
  • Kernel Linux: praticaFORZA && CORAGGIOSTEP N°1: SCARICARE I SORGENTI https://www.kernel.org/CASO DESEMPIO, LINUX KERNEL 3.0.4 (LATEST STABLE KERNEL)https://www.kernel.org/pub/linux/kernel/v3.x/STEP N°2: SCOMPATTARE LARCHIVIOroot@host:/# bunzip2 linux-3.0.4.tar.bz2#sostituisce il *.tar.bz2 con il suo equivalente non compresso *.tarroot@host:/# tar xvf linux-3.0.4.tar#estrae dallarchivio i files e crea la giusta struttura di directory, mantenendo il file *.tar#a questo punto si può entrare nella direcotry creata:root@host:/# cd linux-3.0.4root@host:/linux-3.0.4#
  • Kernel Linux: praticaSTEP N°3: LA FASE DI CONFIGURAZIONEroot@host:/linux-3.0.4# make config#nel caso nel sistema fossere presenti le librerie ncurses (e relativi files di sviluppo) èpossibile sostituire il comando sopra citato conroot@host:/linux-3.0.4# make menuconfigLA SELEZIONE DEI PARAMETRI E UN PROCEDIMENTO LUNGO CHE RICHIEDEMOLTA PONDERAZIONE: SI TRATTA DI DECIDERE CHE COSA ANDRACOMPILATO ED INCLUSO NEL KERNEL, CHE COSA NON DOVRA ESSERECOMPILATO, COSA ANDRA COMPILATO MA SARA UTILIZZATO COME MODULO. NT (NERDATA TOTALE)
  • Kernel Linux: praticaSTEP N°4: LA COMPILAZIONEASSICURATEVI CHE LA VOSTRA MACCHINA SIA A DISPOSIZIONE SENZAINTERRUZZIONI MA SOPRATTUTTO TROVATEVI QUALCOSA DI DIVERTENTE DAFARE … 4 SEMPLICI LETTERE STRESSERANNO IL VOSTRO PC IN UNA MANIERANON INDIFFERENTEroot@host:/linux-3.0.4# make
  • Kernel Linux: praticaSTEP N°5: IMMAGINE COMPRESSA, MODULI E RAMDISKIN QUESTO MOMENTO ABBIAMO COMPILATO TUTTO MA NON ABBIAMO ANCORAMESSO AL LORO POSTO NE I MODULI NE LIMMAGINE DEL KERNEL:CREIAMOLA!root@host:/linux-3.0.4# make bzImageFATTO CIO NELLA SOTTODIRECTORY arch/xyz/boot SI TROVERA IL FILE bzImage.#xyz = sigla che indica larchitettura per cui è stato compilato il kernelCREATO IL KERNEL E IL MOMENTO DI INSTALLARE I MODULIroot@host:/linux-3.0.4# make modules_installFATTO (cit. necessaria)! MANCA SOLO UN RAMDISKCOSE? E UNA PORZIONE DI RAM CHE VIENE UTILIZZATA COME DISCO.root@host:/linux-3.0.4# mkinitramfs -o /boot/initrd.img-3.0.4 3.0.4IL PRIMO PARAMETRO INDICA IL PATH IN CUI ALLOCARE IL FILE, IL SECONDOINDICA LA VERSIONE DEL KERNEL DI CUI GENERARE IL RAMDISK
  • Kernel Linux: praticaSTEP N°6: COPIA DEI FILE IMMAGINE DEL KERNEL cp arch/x86/boot/bzImage /boot/vmlinuz-3.0.4 MAPPATURA DEL SISTEMA cp System.map /boot/System.map-3.0.4 [CONSIGLIATA] CONFIGURAZIONE USATA cp .config /boot/config-3.0.4STEP N°7: MODIFICA DEL BOOTLOADERLILO, GRUB, GRUB2 … SI RIMANDA ALLE RISPETTIVE GUIDE (RTFM googleandogoogleando)
  • Kernel Linux: il lato oscuroKERNEL PANIC→ ERRORE IRRECUPERABILE INDIVIDUATO IN KERNEL SPACEINIEZIONE DI FALLIMENTI→ TRANSAZIONE DI UN SISTEMA IN UNO STATO NON CORRETTOOVERFLOW→ STACK→ BUFFER→ HEAP
  • GRAZIE A ... Dennis MacAlistair Ritchie (Bronxville, 9 settembre 1941 – Murray Hill, 12 ottobre 2011) Co-creatore del linguaggio C (insieme a Brian Kerningam e Ken Thompson) e co-creatore dell’originale UNIX (assieme a Ken Thompson), a quest’uomo sono legate leorigini dell’affascinante e intricata storia del sistema operativo “più elegante” del mondo.Se ne è andata una delle menti più brillanti dell’Informatica dei primi anni, dal cui GENIO ASSOLUTO discendono tutti i sistemi operativi UNIX-derivati, tra cui Linux, BSD e MacOS X, nonché tutti i linguaggi di programmazione moderni. L’eco dovuta alla sua opera non si spegnerà mai.