SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
#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:/# intro
PROPEDEUTICITA':
NOZIONI BASILARI SULLE ARCHITETTURE DI ELABORAZIONE,
NOZIONI BASILARI SULL'UTILIZZO DEI SISTEMI OPERATIVI,
CURIOSITA' E SPIRITO DI INIZIATIVA.
COSA IMPAREREMO DA QUESTO TALK:
COS'E' 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 IN
ESECUZIONE SULL'ELABORATORE UN ACCESSO SICURO E CONTROLLATO
ALL'HARDWARE.
PRINCIPALI MANSIONI:
 GESTIONE DELLA PORZIONE TEMPO-MACCHINA,
 GESTIONE DELLE ASTRAZIONI.
I KERNEL SI CLASSIFICANO IN QUATTRO CATEGORIE:
MONOLITICI
MICROKERNEL
IBRIDI
ESOKERNEL
Differenze tra kernel
KERNEL MONOLITICI
(UNIX->*.BSD, LINUX )
INTEGRAZIONE DEL CODICE STRETTA
MICROKERNEL
(MACH, MINIX, QNX)
SEPARAZIONE SERVIZI BASE DA STRUTTRA
OPERATIVA
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 professional
like gnu) for 386(486) AT clones."
- Linus Torvads 26 agosto 1991 8:12 am - camp.os.minix
HA INIZIO UNA STORIA RICCA DI CONTRIBUTI DA PARTE DI UTENTI DI TUTTO IL
MONDO CHE COMUNICAVANO ESCLUSIVAMENTE TRAMITE INTERNET.
TRA LA NASCITA E LO STATO DELL'ARTE:
LA ”GUERRA” LINUS TORVALDS VS ANDREW TANENBAUM
LINUX 1.0 - 14 MARZO 1994
LINUX 3.0 - 21 LUGLIO 2011
Kernel Linux: stato dell'arte
LINUX 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,
COREDUMP
NB: (++) == miglioramento rispetto alla release precedente
FACCIAMO UN PASSO INDIETRO ...
Kernel Linux: melting pot
IL ”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, GCC
FILE SYSTEM HIERARCHY STANDARD:
DOCUMENTO CHE STABILISCE SOTTO QUALI NOMI DI DIRECTORY I FILE DI
CONFIGURAZIONE, LE LIBRERIE, I FILE ESEGUIBILI DI SISTEMA E I FILE DI DATI
DOVREBBERO ESSERE ARCHIVIATI
DISTRIBUZIONI E PACKAGES MANAGERS:
DA SOFTLANDING LINUX SYSTEM (AGOSTO 1992) A SABAYON …
…. PASSANDO PER SLACKWARE, DEBIAN, RED HAT
Kernel Linux: licenze
I TERMINI DELLA GNU GENERAL PUBLIC LICENSE (GPL) SONO STATI STABILITI
DALLA FREE SOFTWARE FOUNDATION.
IL SISTEMA LINUX E' LIBERO NEL SENSO CHE SI PUO' COPIARE, MODIFICARE E
USARE IN QUALUNQUE MODO SI DESIDERI E SI PUO' FAR CIRCOLARE SENZA
ALCUNA LIMITAZIONE.
CHIUNQUE LO USI O CREI UN PRODOTTO DA ESSO DERIVATO NON PUO'
RECLAMARE DIRITTI DI PROPRIETA' SUL PRODOTTO.
ALL'ATTO DELLA DISTRIBUZIONE SI DEVE RENDERE DISPONIBILE IL CODICE
SORGENTE E CIO' VALE PER OGNI COMPONENTE DI UN PACCHETTO DI
DISTRIBUZIONE CHE SIA OGGETTO DELLA GPL.
CIO' NON EVITA LA DIFFUSIONE GRATUITA O LA VENDITA DI VERSIONI
PURAMENTE BINARIE, PURCHE' CHIUNQUE RICEVA I FILE ESEGUIBILI ABBIA LA
POSSIBILITA' DI OTTENERE IL CODICE SORGENTE AD UN PREZZO
RAGIONEVOLE
Kernel Linux: moduli & driver
TORNANDO ALLA TECNICA … COS'E' UN MODULO?
E' UN COMPONENTE SOFTWARE CHE PUÒ SVOLGERE DIVERSE FUNZIONI
VANTAGGI:
PUÒ ESSERE COMPILATO SEPARATAMENTE ED ESSERE CARICATO IN UN
KERNEL GIA' IN USO.
ALTA PERSONALIZZAZIONE
DISTRIBUZIONE GRATUITA E LIBERA
I DRIVER IN UN SISTEMA LINUX:
IL KERNEL POSSIEDE DELLE TABELLE DINAMICHE DI TUTTI I DRIVER NOTI E
FORNISCE UN INSIEME DI PROCEDURE CHE PERMETTONO DI AGGIUNGERE O
RIMUOVERE UN DRIVER DA QUESTE TABELLE IN QUALUNQUE MOMENTO
MODULI & DRIVER:
UN MODULO PUO' REGISTRARE MOLTI TIPI DI DRIVER; UN CERTO MODULO PUO'
SCEGLIERE FRA QUESTI E, SE LO DESIDERA, REGISTRARE PIU' DI UN DRIVER.
UN CERTO DRIVER POTREBBE VOLER REGISTRARE DUE MECCANISMI DISTINTI
PER L'ACCESSO AD UN DISPOSITIVO.
Kernel Linux: gestione dei
processi
MODELLO UNIX: CREAZIONE - FORK() - ED ESECUZIONE - EXEC() - DEI
PROGRAMMI.
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 VIRTUALE
LA CHIAMATA CLONE() E IL CONCETTO DI TASK
Kernel Linux: scheduling
LO SCHEDULING CONSISTE NELL'ALLOCAZIONE DEL TEMPO DI CPU AI DIVERSI
TASK ALL'INTERNO DI UN SISTEMA OPERATIVO.
UN ASPETTO IMPORTANTE DELLO SCHEDULING NEL SISTEMA LINUX È
L'ESECUZIONE 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 SPINLOCK
MULTIELABORAZIONE 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 VIRTUALE
GESTIONE DELLA MEMORIA FISICA:
SISTEMI DI ALLOCAZIONE: BUDDY, KMALLOC(), SLAB
GESTIONE 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
ZONA MEMORIA FISICA
ZONE_DMA <16 MB
ZONE_NORMAL 16 MB <X< 896 MB
ZONE_HIGHMEM >896 MB
Kernel Linux: file system
IL DOGMA: OGNI COSA E' UN FILE
DAL 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 L'IMMISSIONE O L'EMISSIONE DI UN
FLUSSO DI DATI”
IL KERNEL DI LINUX GESTISCE TUTTI I TIPI DI FILE NASCONDENDONE I
DETTAGLI RELATIVI ALLA STRUTTURA INTERNA SOTTO UNO STRATO DI
PROGRAMMI: 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.h
JOURNALING: ANNOTAZIONE DELLE MODIFICHE
/PROC: RAPPRESENTAZIONE COME FILE DELLE STRUTTURE DEL KERNEL
Kernel Linux: I/O
IL SISTEMA LINUX SUDDIVIDE I DISPOSITIVI IN TRE CLASSI:
DISPOSITIVI A BLOCCHI
→ BLOCCHI DI DATI DI DIMENSIONE FISSA INDIPENDETE
DISPOSITIVI A CARATTERI
→ MOUSE E TASTIERE
DISPOSITIVI DI RETE
→ COMUNICAZIONE INDIRETTA TRAMITE IL SOTTOSISTEMA DI RETE DEL
KERNEL
Kernel Linux: comunicazione fra
processi
IL MECCANISMO STANDARD DI UNIX USATO PER COMUNICARE A UN PROCESSO
CHE UN EVENTO SI È VERIFICATO È IL SEGNALE
LINUX PERO' NON UTILIZZA I SEGNALI PER COMUNICARE CON I PROCESSI
ESEGUITI IN MODALITA' KERNEL. ESSO FA USO DEGLI STATI DI SCHEDULING E
DELLE STRUTTURE wait_queue
MECCANISMO DEI SEMAFORI – VANTAGGI:
ESSERE CONDIVISI IN GRAN NUMERO DA PROCESSI INDIPENDENTI
ESECUZIONE ATOMICA
PASSAGGIO DI DATI TRA PROCESSI:
PIPE
Kernel Linux: struttura di rete
INTERNAMENTE IL KERNEL REALIZZA I SERVIZI DI RETE PER MEZZO DI TRE
STRATI DI PROGRAMMI:
INTERFACCIA A SOCKET (4.3BSD)
DRIVER DEI PROTOCOLLI (ETICHETTATURA DI PROTOCOLLO)
→ skbuff
→ GESTIONE DEL FIREWALL
→ CATENE DI FIREWALL
DRIVER DEI DISPOSITIVI DI RETE
→ ipfraq
→ ipq
Kernel Linux: sicurezza
LE QUESTIONI RELATIVE ALLA SICUREZZA SONO CLASSIFICABILI IN DUE
GRUPPI:
AUTENTICAZIONE
→ ASSICURARE CHE NESSUNO POSSA ACCEDERE AL SISTEMA SENZA PRMA
DIMOSTRARE DI AVERNE DIRITTO
→ FUNZIONE DI CODIFICA NON INVERTIBILE
→ PAM (PLUGGABLE AUTHENTICATION MODULES)
CONTROLLO DELL'ACCESSO
→ FORNIRE UN MECCANISMO CHE PERMETTA DI CONTROLLARE SE UN
UTENTE ABBIA DIRITTO D'ACCESSO A UN CERTO OGGETTO E CHE IMPEDISCA
L'ACCESSO SE L'ESITO 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: pratica
FORZA && CORAGGIO
STEP N°1: SCARICARE I SORGENTI https://www.kernel.org/
CASO D'ESEMPIO, LINUX KERNEL 3.0.4 (LATEST STABLE KERNEL)
https://www.kernel.org/pub/linux/kernel/v3.x/
STEP N°2: SCOMPATTARE L'ARCHIVIO
root@host:/# bunzip2 linux-3.0.4.tar.bz2
#sostituisce il *.tar.bz2 con il suo equivalente non compresso *.tar
root@host:/# tar xvf linux-3.0.4.tar
#estrae dall'archivio 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.4
root@host:/linux-3.0.4#
Kernel Linux: pratica
STEP N°3: LA FASE DI CONFIGURAZIONE
root@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 con
root@host:/linux-3.0.4# make menuconfig
LA SELEZIONE DEI PARAMETRI E' UN PROCEDIMENTO LUNGO CHE RICHIEDE
MOLTA PONDERAZIONE: SI TRATTA DI DECIDERE CHE COSA ANDRA'
COMPILATO ED INCLUSO NEL KERNEL, CHE COSA NON DOVRA' ESSERE
COMPILATO, COSA ANDRA' COMPILATO MA SARA' UTILIZZATO COME MODULO.
NT (NERDATA TOTALE)
Kernel Linux: pratica
STEP N°4: LA COMPILAZIONE
ASSICURATEVI CHE LA VOSTRA MACCHINA SIA A DISPOSIZIONE SENZA
INTERRUZZIONI MA SOPRATTUTTO TROVATEVI QUALCOSA DI DIVERTENTE DA
FARE … 4 SEMPLICI LETTERE STRESSERANNO IL VOSTRO PC IN UNA MANIERA
NON INDIFFERENTE
root@host:/linux-3.0.4# make
Kernel Linux: pratica
STEP N°5: IMMAGINE COMPRESSA, MODULI E RAMDISK
IN QUESTO MOMENTO ABBIAMO COMPILATO TUTTO MA NON ABBIAMO ANCORA
MESSO AL LORO POSTO NE' I MODULI NE' L'IMMAGINE DEL KERNEL:
CREIAMOLA!
root@host:/linux-3.0.4# make bzImage
FATTO CIO' NELLA SOTTODIRECTORY arch/xyz/boot SI TROVERA' IL FILE bzImage.
#xyz = sigla che indica l'architettura per cui è stato compilato il kernel
CREATO IL KERNEL E' IL MOMENTO DI INSTALLARE I MODULI
root@host:/linux-3.0.4# make modules_install
FATTO (cit. necessaria)! MANCA SOLO UN RAMDISK
COS'E'? 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.4
IL PRIMO PARAMETRO INDICA IL PATH IN CUI ALLOCARE IL FILE, IL SECONDO
INDICA LA VERSIONE DEL KERNEL DI CUI GENERARE IL RAMDISK
Kernel Linux: pratica
STEP 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.4
STEP N°7: MODIFICA DEL BOOTLOADER
LILO, GRUB, GRUB2 … SI RIMANDA ALLE RISPETTIVE GUIDE (RTFM googleando
googleando)
Kernel Linux: il lato oscuro
KERNEL PANIC
→ ERRORE IRRECUPERABILE INDIVIDUATO IN KERNEL SPACE
INIEZIONE DI FALLIMENTI
→ TRANSAZIONE DI UN SISTEMA IN UNO STATO NON CORRETTO
OVERFLOW
→ 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 le
origini 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.

Más contenido relacionado

La actualidad más candente

Digital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaformaDigital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaformaMarco Ferrigno
 
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesLinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesMaurizio Antonelli
 
Cyber Forensics - Acquisizione e analisi dei dati
Cyber Forensics - Acquisizione e analisi dei datiCyber Forensics - Acquisizione e analisi dei dati
Cyber Forensics - Acquisizione e analisi dei datiMarco Ferrigno
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
Corso formazione Linux
Corso formazione LinuxCorso formazione Linux
Corso formazione LinuxErcole Palmeri
 
Cyber Forensic
Cyber ForensicCyber Forensic
Cyber ForensicNaLUG
 
Sicurezza e protezione dati su raspberry
Sicurezza e protezione dati su raspberrySicurezza e protezione dati su raspberry
Sicurezza e protezione dati su raspberryOrazio Sarno
 
Da Thompson a Torvalds: passato, presente e futuro del mondo *nix
Da Thompson a Torvalds: passato, presente e futuro del mondo *nixDa Thompson a Torvalds: passato, presente e futuro del mondo *nix
Da Thompson a Torvalds: passato, presente e futuro del mondo *nixFelice Pescatore
 
Presentazione Linux
Presentazione LinuxPresentazione Linux
Presentazione LinuxMatteo
 
Introduzione a Linux: differenze con windows e strumenti per la programmazione
Introduzione a Linux: differenze con windows e strumenti per la programmazioneIntroduzione a Linux: differenze con windows e strumenti per la programmazione
Introduzione a Linux: differenze con windows e strumenti per la programmazioneValerio Bruno
 
Nslu2 how to unslung
Nslu2 how to unslungNslu2 how to unslung
Nslu2 how to unslungMarcello Viti
 
Sistema operativo Unix e Linux
Sistema operativo Unix e LinuxSistema operativo Unix e Linux
Sistema operativo Unix e LinuxGiulia Shkreli
 
Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
 Cosa è Gnu/Linux - Breve storia - Concetti fondamentali Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
Cosa è Gnu/Linux - Breve storia - Concetti fondamentaliFulvio Corno
 
Elio Tondo - Linux In Azienda
Elio Tondo - Linux In AziendaElio Tondo - Linux In Azienda
Elio Tondo - Linux In AziendaBetter Software
 

La actualidad más candente (19)

Digital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaformaDigital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaforma
 
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesLinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
 
Cyber Forensics - Acquisizione e analisi dei dati
Cyber Forensics - Acquisizione e analisi dei datiCyber Forensics - Acquisizione e analisi dei dati
Cyber Forensics - Acquisizione e analisi dei dati
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Corso formazione Linux
Corso formazione LinuxCorso formazione Linux
Corso formazione Linux
 
Cyber Forensic
Cyber ForensicCyber Forensic
Cyber Forensic
 
Sicurezza e protezione dati su raspberry
Sicurezza e protezione dati su raspberrySicurezza e protezione dati su raspberry
Sicurezza e protezione dati su raspberry
 
Da Thompson a Torvalds: passato, presente e futuro del mondo *nix
Da Thompson a Torvalds: passato, presente e futuro del mondo *nixDa Thompson a Torvalds: passato, presente e futuro del mondo *nix
Da Thompson a Torvalds: passato, presente e futuro del mondo *nix
 
Lezione tre
Lezione treLezione tre
Lezione tre
 
Presentazione Linux
Presentazione LinuxPresentazione Linux
Presentazione Linux
 
Introduzione a Linux: differenze con windows e strumenti per la programmazione
Introduzione a Linux: differenze con windows e strumenti per la programmazioneIntroduzione a Linux: differenze con windows e strumenti per la programmazione
Introduzione a Linux: differenze con windows e strumenti per la programmazione
 
Linux & Open Source - Lezione 2
Linux & Open Source - Lezione 2Linux & Open Source - Lezione 2
Linux & Open Source - Lezione 2
 
Nslu2 how to unslung
Nslu2 how to unslungNslu2 how to unslung
Nslu2 how to unslung
 
Lezione due
Lezione dueLezione due
Lezione due
 
Sistema operativo Unix e Linux
Sistema operativo Unix e LinuxSistema operativo Unix e Linux
Sistema operativo Unix e Linux
 
Oltre I firewall
Oltre I firewallOltre I firewall
Oltre I firewall
 
Compilazione Kernel
Compilazione KernelCompilazione Kernel
Compilazione Kernel
 
Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
 Cosa è Gnu/Linux - Breve storia - Concetti fondamentali Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
 
Elio Tondo - Linux In Azienda
Elio Tondo - Linux In AziendaElio Tondo - Linux In Azienda
Elio Tondo - Linux In Azienda
 

Similar a Understanding Linux

Linux & Open Source : Lezione Tre
Linux & Open Source : Lezione TreLinux & Open Source : Lezione Tre
Linux & Open Source : Lezione TreDario Mazza
 
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsMirko Mancin
 
Linux & Open Source : Lezione Due
Linux & Open Source : Lezione DueLinux & Open Source : Lezione Due
Linux & Open Source : Lezione DueDario Mazza
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneLinux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneFulvio Corno
 
Digital Forensic
Digital ForensicDigital Forensic
Digital ForensicNaLUG
 
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device DriversFabio Nisci
 
Amministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxAmministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxPaolo Campegiani
 
Virtualizzazione con Gnu/Linux e Xen
Virtualizzazione con Gnu/Linux e XenVirtualizzazione con Gnu/Linux e Xen
Virtualizzazione con Gnu/Linux e XenClaudio Cardinali
 
Lezione corso Base GNU/Linux
Lezione corso Base GNU/LinuxLezione corso Base GNU/Linux
Lezione corso Base GNU/LinuxAlex Palesandro
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggeraRoberto Polli
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspLaura Camellini
 
Sistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxSistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxTruelite
 
Power point sistemi operativi , luca marcella 3° e
Power point sistemi operativi , luca marcella 3° ePower point sistemi operativi , luca marcella 3° e
Power point sistemi operativi , luca marcella 3° eLuca Marcella
 

Similar a Understanding Linux (20)

Linux & Open Source : Lezione Tre
Linux & Open Source : Lezione TreLinux & Open Source : Lezione Tre
Linux & Open Source : Lezione Tre
 
Sistema Operativo - LInux - Modulo 2.1
Sistema Operativo - LInux - Modulo 2.1Sistema Operativo - LInux - Modulo 2.1
Sistema Operativo - LInux - Modulo 2.1
 
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
 
Linux & Open Source : Lezione Due
Linux & Open Source : Lezione DueLinux & Open Source : Lezione Due
Linux & Open Source : Lezione Due
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneLinux Kernel, driver e compilazione
Linux Kernel, driver e compilazione
 
Digital Forensic
Digital ForensicDigital Forensic
Digital Forensic
 
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device Drivers
 
Amministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxAmministrazione base dei sistemi Linux
Amministrazione base dei sistemi Linux
 
Virtualizzazione con Gnu/Linux e Xen
Virtualizzazione con Gnu/Linux e XenVirtualizzazione con Gnu/Linux e Xen
Virtualizzazione con Gnu/Linux e Xen
 
GNU Linux introduction
GNU Linux introductionGNU Linux introduction
GNU Linux introduction
 
debian gnu linux
debian gnu linuxdebian gnu linux
debian gnu linux
 
Lezione corso Base GNU/Linux
Lezione corso Base GNU/LinuxLezione corso Base GNU/Linux
Lezione corso Base GNU/Linux
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggera
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcsp
 
Sistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxSistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente Linux
 
LTSP
LTSPLTSP
LTSP
 
LUG - Ricompilazione kernel
LUG - Ricompilazione kernelLUG - Ricompilazione kernel
LUG - Ricompilazione kernel
 
Power point sistemi operativi , luca marcella 3° e
Power point sistemi operativi , luca marcella 3° ePower point sistemi operativi , luca marcella 3° e
Power point sistemi operativi , luca marcella 3° e
 
APT per RPM
APT per RPMAPT per RPM
APT per RPM
 
Ti base 2020b
Ti base 2020bTi base 2020b
Ti base 2020b
 

Más de NaLUG

Grid System
Grid SystemGrid System
Grid SystemNaLUG
 
Digital Divide
Digital DivideDigital Divide
Digital DivideNaLUG
 
Drupal
DrupalDrupal
DrupalNaLUG
 
Open Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracyOpen Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracyNaLUG
 
OpenHardware : Arduino
OpenHardware : ArduinoOpenHardware : Arduino
OpenHardware : ArduinoNaLUG
 
Net Neutrality: HoBBIT
Net Neutrality: HoBBITNet Neutrality: HoBBIT
Net Neutrality: HoBBITNaLUG
 
Opensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo TerritorialeOpensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo TerritorialeNaLUG
 
Knomos
Knomos Knomos
Knomos NaLUG
 
App comunicazione comune di Napoli
App comunicazione comune di NapoliApp comunicazione comune di Napoli
App comunicazione comune di NapoliNaLUG
 
BISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmarkBISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmarkNaLUG
 
ClearOS
ClearOSClearOS
ClearOSNaLUG
 
Security and hacking Engineering
Security and hacking EngineeringSecurity and hacking Engineering
Security and hacking EngineeringNaLUG
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEANaLUG
 
Una nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fnaUna nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fnaNaLUG
 
ROS@Unina
ROS@Unina   ROS@Unina
ROS@Unina NaLUG
 
Python@Unina - Exercises
Python@Unina - ExercisesPython@Unina - Exercises
Python@Unina - ExercisesNaLUG
 
Python@Unina - Theory
Python@Unina - TheoryPython@Unina - Theory
Python@Unina - TheoryNaLUG
 
Linux@Unina
Linux@UninaLinux@Unina
Linux@UninaNaLUG
 
Dispositivi Medici con il software Libero
Dispositivi Medici con il software LiberoDispositivi Medici con il software Libero
Dispositivi Medici con il software LiberoNaLUG
 
OpenSource nel comune di Napoli
OpenSource nel comune di NapoliOpenSource nel comune di Napoli
OpenSource nel comune di NapoliNaLUG
 

Más de NaLUG (20)

Grid System
Grid SystemGrid System
Grid System
 
Digital Divide
Digital DivideDigital Divide
Digital Divide
 
Drupal
DrupalDrupal
Drupal
 
Open Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracyOpen Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracy
 
OpenHardware : Arduino
OpenHardware : ArduinoOpenHardware : Arduino
OpenHardware : Arduino
 
Net Neutrality: HoBBIT
Net Neutrality: HoBBITNet Neutrality: HoBBIT
Net Neutrality: HoBBIT
 
Opensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo TerritorialeOpensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo Territoriale
 
Knomos
Knomos Knomos
Knomos
 
App comunicazione comune di Napoli
App comunicazione comune di NapoliApp comunicazione comune di Napoli
App comunicazione comune di Napoli
 
BISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmarkBISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmark
 
ClearOS
ClearOSClearOS
ClearOS
 
Security and hacking Engineering
Security and hacking EngineeringSecurity and hacking Engineering
Security and hacking Engineering
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEA
 
Una nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fnaUna nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fna
 
ROS@Unina
ROS@Unina   ROS@Unina
ROS@Unina
 
Python@Unina - Exercises
Python@Unina - ExercisesPython@Unina - Exercises
Python@Unina - Exercises
 
Python@Unina - Theory
Python@Unina - TheoryPython@Unina - Theory
Python@Unina - Theory
 
Linux@Unina
Linux@UninaLinux@Unina
Linux@Unina
 
Dispositivi Medici con il software Libero
Dispositivi Medici con il software LiberoDispositivi Medici con il software Libero
Dispositivi Medici con il software Libero
 
OpenSource nel comune di Napoli
OpenSource nel comune di NapoliOpenSource nel comune di Napoli
OpenSource nel comune di Napoli
 

Understanding Linux

  • 1. #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
  • 2. root@host:/# intro PROPEDEUTICITA': NOZIONI BASILARI SULLE ARCHITETTURE DI ELABORAZIONE, NOZIONI BASILARI SULL'UTILIZZO DEI SISTEMI OPERATIVI, CURIOSITA' E SPIRITO DI INIZIATIVA. COSA IMPAREREMO DA QUESTO TALK: COS'E' UN KERNEL, IL KERNEL LINUX: STORIA, IL KERNEL LINUX: TECNICA, IL KERNEL LINUX IN PRATICA, … ALTRE AMENITA' NERD' ORIENTED
  • 3. Kernel: cos'è realmente? E' IL SOFTWARE IL CUI COMPITO E' QUELLO DI FORNIRE AI PROCESSI IN ESECUZIONE SULL'ELABORATORE UN ACCESSO SICURO E CONTROLLATO ALL'HARDWARE. PRINCIPALI MANSIONI:  GESTIONE DELLA PORZIONE TEMPO-MACCHINA,  GESTIONE DELLE ASTRAZIONI. I KERNEL SI CLASSIFICANO IN QUATTRO CATEGORIE: MONOLITICI MICROKERNEL IBRIDI ESOKERNEL
  • 4. Differenze tra kernel KERNEL MONOLITICI (UNIX->*.BSD, LINUX ) INTEGRAZIONE DEL CODICE STRETTA MICROKERNEL (MACH, MINIX, QNX) SEPARAZIONE SERVIZI BASE DA STRUTTRA OPERATIVA
  • 5. Differenze tra kernel IBRIDI (WINDOWS, XNU, DRAGONFLY, QUARK) CODICE NON ESSENZIALE A LIVELLO KS ESOKERNEL (NEMESIS) ”POTERE ALLO SVILUPPATORE”
  • 6. Kernel Linux: le origini "I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones." - Linus Torvads 26 agosto 1991 8:12 am - camp.os.minix HA INIZIO UNA STORIA RICCA DI CONTRIBUTI DA PARTE DI UTENTI DI TUTTO IL MONDO CHE COMUNICAVANO ESCLUSIVAMENTE TRAMITE INTERNET. TRA LA NASCITA E LO STATO DELL'ARTE: LA ”GUERRA” LINUS TORVALDS VS ANDREW TANENBAUM LINUX 1.0 - 14 MARZO 1994 LINUX 3.0 - 21 LUGLIO 2011
  • 7. Kernel Linux: stato dell'arte LINUX 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, COREDUMP NB: (++) == miglioramento rispetto alla release precedente FACCIAMO UN PASSO INDIETRO ...
  • 8. Kernel Linux: melting pot IL ”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, GCC FILE SYSTEM HIERARCHY STANDARD: DOCUMENTO CHE STABILISCE SOTTO QUALI NOMI DI DIRECTORY I FILE DI CONFIGURAZIONE, LE LIBRERIE, I FILE ESEGUIBILI DI SISTEMA E I FILE DI DATI DOVREBBERO ESSERE ARCHIVIATI DISTRIBUZIONI E PACKAGES MANAGERS: DA SOFTLANDING LINUX SYSTEM (AGOSTO 1992) A SABAYON … …. PASSANDO PER SLACKWARE, DEBIAN, RED HAT
  • 9. Kernel Linux: licenze I TERMINI DELLA GNU GENERAL PUBLIC LICENSE (GPL) SONO STATI STABILITI DALLA FREE SOFTWARE FOUNDATION. IL SISTEMA LINUX E' LIBERO NEL SENSO CHE SI PUO' COPIARE, MODIFICARE E USARE IN QUALUNQUE MODO SI DESIDERI E SI PUO' FAR CIRCOLARE SENZA ALCUNA LIMITAZIONE. CHIUNQUE LO USI O CREI UN PRODOTTO DA ESSO DERIVATO NON PUO' RECLAMARE DIRITTI DI PROPRIETA' SUL PRODOTTO. ALL'ATTO DELLA DISTRIBUZIONE SI DEVE RENDERE DISPONIBILE IL CODICE SORGENTE E CIO' VALE PER OGNI COMPONENTE DI UN PACCHETTO DI DISTRIBUZIONE CHE SIA OGGETTO DELLA GPL. CIO' NON EVITA LA DIFFUSIONE GRATUITA O LA VENDITA DI VERSIONI PURAMENTE BINARIE, PURCHE' CHIUNQUE RICEVA I FILE ESEGUIBILI ABBIA LA POSSIBILITA' DI OTTENERE IL CODICE SORGENTE AD UN PREZZO RAGIONEVOLE
  • 10. Kernel Linux: moduli & driver TORNANDO ALLA TECNICA … COS'E' UN MODULO? E' UN COMPONENTE SOFTWARE CHE PUÒ SVOLGERE DIVERSE FUNZIONI VANTAGGI: PUÒ ESSERE COMPILATO SEPARATAMENTE ED ESSERE CARICATO IN UN KERNEL GIA' IN USO. ALTA PERSONALIZZAZIONE DISTRIBUZIONE GRATUITA E LIBERA I DRIVER IN UN SISTEMA LINUX: IL KERNEL POSSIEDE DELLE TABELLE DINAMICHE DI TUTTI I DRIVER NOTI E FORNISCE UN INSIEME DI PROCEDURE CHE PERMETTONO DI AGGIUNGERE O RIMUOVERE UN DRIVER DA QUESTE TABELLE IN QUALUNQUE MOMENTO MODULI & DRIVER: UN MODULO PUO' REGISTRARE MOLTI TIPI DI DRIVER; UN CERTO MODULO PUO' SCEGLIERE FRA QUESTI E, SE LO DESIDERA, REGISTRARE PIU' DI UN DRIVER. UN CERTO DRIVER POTREBBE VOLER REGISTRARE DUE MECCANISMI DISTINTI PER L'ACCESSO AD UN DISPOSITIVO.
  • 11. Kernel Linux: gestione dei processi MODELLO UNIX: CREAZIONE - FORK() - ED ESECUZIONE - EXEC() - DEI PROGRAMMI. 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 VIRTUALE LA CHIAMATA CLONE() E IL CONCETTO DI TASK
  • 12. Kernel Linux: scheduling LO SCHEDULING CONSISTE NELL'ALLOCAZIONE DEL TEMPO DI CPU AI DIVERSI TASK ALL'INTERNO DI UN SISTEMA OPERATIVO. UN ASPETTO IMPORTANTE DELLO SCHEDULING NEL SISTEMA LINUX È L'ESECUZIONE 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 SPINLOCK MULTIELABORAZIONE SIMMETRICA (SMP): SPINLOCK BIG KERNEL LOCK (BKL) LOCK MULTIPLI E ALGORITIMI DI BILANCIAMENTO DEL CARICO
  • 13. Kernel Linux: gestione della memoria ALLOCAZIONE E RILASCIO DI PAGINE E BLOCCHI DI MEMORIA MEMORIA VIRTUALE GESTIONE DELLA MEMORIA FISICA: SISTEMI DI ALLOCAZIONE: BUDDY, KMALLOC(), SLAB GESTIONE 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 ZONA MEMORIA FISICA ZONE_DMA <16 MB ZONE_NORMAL 16 MB <X< 896 MB ZONE_HIGHMEM >896 MB
  • 14. Kernel Linux: file system IL DOGMA: OGNI COSA E' UN FILE DAL 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 L'IMMISSIONE O L'EMISSIONE DI UN FLUSSO DI DATI” IL KERNEL DI LINUX GESTISCE TUTTI I TIPI DI FILE NASCONDENDONE I DETTAGLI RELATIVI ALLA STRUTTURA INTERNA SOTTO UNO STRATO DI PROGRAMMI: 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.h JOURNALING: ANNOTAZIONE DELLE MODIFICHE /PROC: RAPPRESENTAZIONE COME FILE DELLE STRUTTURE DEL KERNEL
  • 15. Kernel Linux: I/O IL SISTEMA LINUX SUDDIVIDE I DISPOSITIVI IN TRE CLASSI: DISPOSITIVI A BLOCCHI → BLOCCHI DI DATI DI DIMENSIONE FISSA INDIPENDETE DISPOSITIVI A CARATTERI → MOUSE E TASTIERE DISPOSITIVI DI RETE → COMUNICAZIONE INDIRETTA TRAMITE IL SOTTOSISTEMA DI RETE DEL KERNEL
  • 16. Kernel Linux: comunicazione fra processi IL MECCANISMO STANDARD DI UNIX USATO PER COMUNICARE A UN PROCESSO CHE UN EVENTO SI È VERIFICATO È IL SEGNALE LINUX PERO' NON UTILIZZA I SEGNALI PER COMUNICARE CON I PROCESSI ESEGUITI IN MODALITA' KERNEL. ESSO FA USO DEGLI STATI DI SCHEDULING E DELLE STRUTTURE wait_queue MECCANISMO DEI SEMAFORI – VANTAGGI: ESSERE CONDIVISI IN GRAN NUMERO DA PROCESSI INDIPENDENTI ESECUZIONE ATOMICA PASSAGGIO DI DATI TRA PROCESSI: PIPE
  • 17. Kernel Linux: struttura di rete INTERNAMENTE IL KERNEL REALIZZA I SERVIZI DI RETE PER MEZZO DI TRE STRATI DI PROGRAMMI: INTERFACCIA A SOCKET (4.3BSD) DRIVER DEI PROTOCOLLI (ETICHETTATURA DI PROTOCOLLO) → skbuff → GESTIONE DEL FIREWALL → CATENE DI FIREWALL DRIVER DEI DISPOSITIVI DI RETE → ipfraq → ipq
  • 18. Kernel Linux: sicurezza LE QUESTIONI RELATIVE ALLA SICUREZZA SONO CLASSIFICABILI IN DUE GRUPPI: AUTENTICAZIONE → ASSICURARE CHE NESSUNO POSSA ACCEDERE AL SISTEMA SENZA PRMA DIMOSTRARE DI AVERNE DIRITTO → FUNZIONE DI CODIFICA NON INVERTIBILE → PAM (PLUGGABLE AUTHENTICATION MODULES) CONTROLLO DELL'ACCESSO → FORNIRE UN MECCANISMO CHE PERMETTA DI CONTROLLARE SE UN UTENTE ABBIA DIRITTO D'ACCESSO A UN CERTO OGGETTO E CHE IMPEDISCA L'ACCESSO SE L'ESITO 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)
  • 20. Kernel Linux: pratica FORZA && CORAGGIO STEP N°1: SCARICARE I SORGENTI https://www.kernel.org/ CASO D'ESEMPIO, LINUX KERNEL 3.0.4 (LATEST STABLE KERNEL) https://www.kernel.org/pub/linux/kernel/v3.x/ STEP N°2: SCOMPATTARE L'ARCHIVIO root@host:/# bunzip2 linux-3.0.4.tar.bz2 #sostituisce il *.tar.bz2 con il suo equivalente non compresso *.tar root@host:/# tar xvf linux-3.0.4.tar #estrae dall'archivio 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.4 root@host:/linux-3.0.4#
  • 21. Kernel Linux: pratica STEP N°3: LA FASE DI CONFIGURAZIONE root@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 con root@host:/linux-3.0.4# make menuconfig LA SELEZIONE DEI PARAMETRI E' UN PROCEDIMENTO LUNGO CHE RICHIEDE MOLTA PONDERAZIONE: SI TRATTA DI DECIDERE CHE COSA ANDRA' COMPILATO ED INCLUSO NEL KERNEL, CHE COSA NON DOVRA' ESSERE COMPILATO, COSA ANDRA' COMPILATO MA SARA' UTILIZZATO COME MODULO. NT (NERDATA TOTALE)
  • 22. Kernel Linux: pratica STEP N°4: LA COMPILAZIONE ASSICURATEVI CHE LA VOSTRA MACCHINA SIA A DISPOSIZIONE SENZA INTERRUZZIONI MA SOPRATTUTTO TROVATEVI QUALCOSA DI DIVERTENTE DA FARE … 4 SEMPLICI LETTERE STRESSERANNO IL VOSTRO PC IN UNA MANIERA NON INDIFFERENTE root@host:/linux-3.0.4# make
  • 23. Kernel Linux: pratica STEP N°5: IMMAGINE COMPRESSA, MODULI E RAMDISK IN QUESTO MOMENTO ABBIAMO COMPILATO TUTTO MA NON ABBIAMO ANCORA MESSO AL LORO POSTO NE' I MODULI NE' L'IMMAGINE DEL KERNEL: CREIAMOLA! root@host:/linux-3.0.4# make bzImage FATTO CIO' NELLA SOTTODIRECTORY arch/xyz/boot SI TROVERA' IL FILE bzImage. #xyz = sigla che indica l'architettura per cui è stato compilato il kernel CREATO IL KERNEL E' IL MOMENTO DI INSTALLARE I MODULI root@host:/linux-3.0.4# make modules_install FATTO (cit. necessaria)! MANCA SOLO UN RAMDISK COS'E'? 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.4 IL PRIMO PARAMETRO INDICA IL PATH IN CUI ALLOCARE IL FILE, IL SECONDO INDICA LA VERSIONE DEL KERNEL DI CUI GENERARE IL RAMDISK
  • 24. Kernel Linux: pratica STEP 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.4 STEP N°7: MODIFICA DEL BOOTLOADER LILO, GRUB, GRUB2 … SI RIMANDA ALLE RISPETTIVE GUIDE (RTFM googleando googleando)
  • 25. Kernel Linux: il lato oscuro KERNEL PANIC → ERRORE IRRECUPERABILE INDIVIDUATO IN KERNEL SPACE INIEZIONE DI FALLIMENTI → TRANSAZIONE DI UN SISTEMA IN UNO STATO NON CORRETTO OVERFLOW → STACK → BUFFER → HEAP
  • 26. 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 le origini 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.