SlideShare a Scribd company logo
Kernel 
•Microkernel 
•Kernel monolitico (Linux) 
•Utilizzo dei moduli 
Percorso 5 
Moduli del kernel 
2
Linux Kernel(1) 
•Gestisce tutte le risorse hardware: CPU, memoria, I/O 
•Fornisce un insieme di API (system call), circa 300 
–Permettono alle applicazioni utente e alle librerie di utilizzare l’hardware 
•Gestisce la concorrenza e l’uso dell’hardware: 
–Scheduling dei processi 
–Condivisione dell’HW, ad esempio della scheda di rete 
–Lavora in interruzione (nelle ultime versioni il kernel può essere esso stesso interrotto) 
Percorso 5 
Moduli del kernel 
3
Linux Kernel(2) 
•Le system call sono stabili nel tempo 
–Solo nuove system call possono venire aggiunte 
•Le informazioni di sistema e del kernel sono messe a disposizione tramite pseudo filesystem (anche detti filesystem virtuali) 
•I più importanti sono: 
–/proc 
–/sys 
Percorso 5 
Moduli del kernel 
4
/proc 
•Il filesystem proc, montato su /proc, contiene informazioni su: 
–Processi 
–Memoria 
–Parametri di gestione 
–Vi è una directory per ciascuno dei processi in esecuzione 
–Ad es. In /proc/cpuinfo vi sono i dettagli sulla CPU 
Percorso 5 
Moduli del kernel 
5
/sys 
•Il filesystem sysfs, montato su /sys, contiene informazioni su: 
–device 
–Driver 
•È di fatto una interfaccia tra spazio utente e spazio kernel 
•Esempi sono [7]: 
–/sys/modules 
–/sys/kernel 
–/sys/fs 
–/sys/firmware 
–/sys/dev 
Percorso 5 
Moduli del kernel 
6
Esercizio 
•Utilizzando le pagine di manuale, provare ad esplorare le directory /proc e /sys, con particolare riferimento ai moduli del kernel già installati 
•Provare a rifare un esempio di questo genere: 
$ sleep 100 & 
[1] 4357 
$ ls /proc/4357 
... 
$ cat /proc/4357/cmdline 
sleep100 
Percorso 5 
Moduli del kernel 
7
/dev 
•Contiene i device (dispositivi virtuali) utilizzati da Linux per virtualizzare i dispositivi fisici 
•Il gestore dei device è Udev 
•Udev crea di volta in volta solamente i device (in /dev) corrispondenti ai device fisici realmente collegati 
•Si notino in particolare 
–/dev/sda per il primo disco 
–i tty per le console (ALT-F1 etc…) e i pts per i terminali all’interno dell’interfaccia grafica (usare who per vederli) 
Percorso 5 
Moduli del kernel 
8
modprobe 
•Per vedere le opzioni settate per il modulo in memoria: 
–systool -v -m module_name (installare sysfsutils se necessario) 
•Modprobe può vedere la configurazione e le dipendenze di un modulo 
–modprobe -c | grep module_name 
–modprobe --show-depends module_name 
•modprobe nome_modulo carica il modulo (più efficemente di insmod) 
Percorso 5 
Moduli del kernel 
9
lsmod 
•Permette di verificare quali e quanti moduli siano caricati 
•Dato un modulo si può utilizzare: 
–modinfo nome_modulo 
Per avere informazioni su quel modulo 
•Ad es.: 
–modinfo bluetooth 
Percorso 5 
Moduli del kernel 
10
Caricamento dei moduli 
•I moduli sono caricati in modo automatico da udev 
•Per caricarne un altro esterno o per bloccarne uno va inserito in /etc/modules 
•Se è necessario passargli dei parametri, vanno messi in /etc/modprobe.d/nomemodulo.conf come opzione: 
–options thinkpad_acpi fan_control=1 
•Si può anche passare l’opzione tramite il bootloader 
•Ad es. in Grub bisogna premere e alla visione del menù e poi aggiungere il parametro e premere b per il boot [8] 
Percorso 5 
Moduli del kernel 
11
lspci 
•Permette di individuare i dispositivi PCI collegati 
•lspci permette per esempio (sulla macchina virtuale su portatile Apple) di vedere: 
–la scheda grafica Innotek 
–il controller USB Apple 
Percorso 5 
Moduli del kernel 
12
lsusb 
•Permette di vedere i dispositivi collegati all’USB 
•Altri comandi utili per avere una descrizione dell’hardware disponibile: 
–lshw 
–cat /proc/cpuinfo 
–dmidecode, per il BIOS 
–iwconfig (per la scheda di rete wireless) 
•Se i risultati sono molti si possono redirigere su file 
Percorso 5 
Moduli del kernel 
13
Kernel module – un esempio 
•Per eliminare un modulo si può usare rmmod 
•Oppure mettere in blacklist il modulo che si desidera bloccare 
•La lista nera è in /etc/modprobe.d/blacklist.conf 
•Si possono bloccare solo i moduli non presenti nel kernel, dunque solo quelli caricati separatamente 
Percorso 5 
Moduli del kernel 
14
Esercizio 
•Provare a replicare l’esempio della slide precedente 
•In particolare provare con il modulo e1000 
•Cosa succede? Provare anche con rmmod 
•Provare poi con il modulo lp e seguire quanto riportato in [9] 
Percorso 5 
Moduli del kernel 
15
Fase di boot 
•La sequenza di boot è divisa in varie fasi: 
1.Hardware boot 
2.Loader del sistema operativo 
3.Startup del kernel 
4.Init e inittab 
5.Script di boot 
•Fare riferimento a man boot 
Percorso 5 
Moduli del kernel 
16
Fase di boot(1) 
•Hardware boot 
–Self test (BIOS) e lettura parametri da CMOS (NVRAM); UEFI sarà il nuovo standard al posto del classico BIOS 
–Via hardware viene fatto accesso al device di boot, caricando il loader del sistema operativo e trasferendo il controllo ad esso 
–Esiste anche il boot via rete, tramite vari protocolli, tra cui DHCP, TFTP, PXE, Etherboot 
Percorso 5 
Moduli del kernel 
17
Fase di boot(2) 
•Loader del sistema operativo 
–Nei personal computer, esso è nell’MBR (primo settore del dispositivo di boot) 
–La dimensione limitata dell’MBR (512 byte) rende quasi impossibile installare un vero e proprio OS loader in esso 
–Viene dunque chiamato un loader secondario situato su di una partizione del disco 
–Normalmente si usa LILO oppure GRUB 
–Possono entrambi funzionare da loader secondario (richiamati da un MBR installato dal DOS) oppure da loader in due parti, completo di MBR+seconda parte dalla partizione di root 
–Il compito del loader è di trovare il kernel nel disco, caricarlo e lanciarlo, eventualmente passandogli dei parametri 
–Vi è solitamente anche un minimo di interfaccia 
Percorso 5 
Moduli del kernel 
18
Fase di boot(3) 
•Startup del kernel 
–Quando il kernel è caricato, esso inizializza i dispositivi (tramite i relativi driver), fa partire lo swapper (kswapd) e monta il filesystem di root (/) 
–I parametri passati al kernel possono modificare tale comportamento (ad esempio modificare il root filesystem di default) 
–Il kernel crea il primo processo, con PID 1; esso esegue /sbin/init, passandogli eventuali altri parametri 
Percorso 5 
Moduli del kernel 
19
Runlevel 
•Indica il runlevel attuale 
•Legge da /var/run/utmp 
Percorso 5 
Moduli del kernel 
20
Esercizio 
•Provare ad individuare i vari runlevel disponibili 
•Provare a verificare la presenza del processo init 
•Provare ad individuare il runlevel di Ubuntu 
•Provare a cambiare il runlevel a 1 
–Cosa succede? Provare a fare ssh su 127.0.0.1 
•E provando init 2? 
Percorso 5 
Moduli del kernel 
21
Fase di boot(4) 
•Init e inittab 
–Init provvede a leggere /etc/inittab per ulteriori istruzioni 
–Su Ubuntu inittab non è presente, le sue funzioni vengono svolte da altri script, i quali definiscono i vari run-level, ciascuno associato ad un insieme di servizi (di solito S è per singolo utente, il livello 2 è quello in cui la maggior parte dei servizi di rete partono, 3 è multiuser, 5 è il livello multiuser con interfaccia grafica) 
–Il livello può essere cambiato con init 
–Tramite gli script i servizi vengono di fatto lanciati o fermati 
Percorso 5 
Moduli del kernel 
22
Fase di boot(5) 
•Script di boot 
–Per ciascun servizio tra quelli gestiti vi è uno script di startup posizionato in /etc/init.d 
–Tali script accettano come parametri start, stop e in taluni casi restart 
–Lanciati senza parametri gli script mostrano i parametri utilizzabili 
–OpenBSD ed altri sistemi (anche Slackware Linux) utilizzano uno schema di script di boot diverso 
Percorso 5 
Moduli del kernel 
23
/etc/rc[0-6S].d 
•Si tratta di directory nelle quali sono presenti dei link (solitamente simbolici) agli script reali che sono posti in /etc/init.d 
•I vari file (link agli script) vengono richiamati in ordine: 
–i link con nome che inizia con S vengono richiamati con il parametro start 
–quelli con la K servono allo stop del servizio 
•Dopo S o K vi è un numero e la descrizione del servizio; gli script vengono richiamati in ordine di numero, dato il runlevel di interesse 
Percorso 5 
Moduli del kernel 
24
Boot in Ubuntu [si veda 10] 
•Le directory ed i file di configurazione importanti sono: 
–/etc/init pur non essendo dei veri script, i file presenti nella directory contengono quanto serve per rimpiazzare i precedenti script sysvinit 
–/etc/init.d per retrocompatibilità la directory contiene script compatibili, che pure chiamano service myservice start 
–/etc/init/rc-sysinit.conf controlla l’esecuzione degli script tradizionali aggiunti a mano o con update-rc.d ai livelli /etc/rc* 
–/etc/default contiene file di configurazione sia per i tradizionali sia per I nuovi script basati su upstart (service myservice start) 
Percorso 5 
Moduli del kernel 
25
Partenza di un servizio 
# Tradizionale: 
/etc/init.d/myservice start 
# Modalità Upstart 
service myservice start 
Percorso 5 
Moduli del kernel 
26
Stop di un servizio 
# Tradizionale: 
/etc/init.d/myservice stop 
# Modalità Upstart 
service myservice stop 
Percorso 5 
Moduli del kernel 
27
Elenco dei servizi disponibili 
# Tradizionale: 
ls /etc/init.d 
# Modalità Upstart 
service --status-all 
•Si noti che la modalità Upstart è in grado di mostrare sia i servizi tradizionali sia quelli di tipo upstart 
Percorso 5 
Moduli del kernel 
28
Aggiungere un servizio 
# Tradizionale: 
update-rc.d apache2 defaults 
# Modalità Upstart 
Non vi è il concetto di runlevel. 
È necessario aggiungere un upstart config in 
/etc/init e editare un file in /etc/default 
Percorso 5 
Moduli del kernel 
29
Cancellare un servizio 
# Tradizionale: 
rm /etc/rc*/*myscript 
# Modalità Upstart 
Se non c’è nulla in /etc/default, editare config in 
/etc/init 
Percorso 5 
Moduli del kernel 
30
Esercizio 
•Individuare, tramite ricerca sui manuali e/o su Internet i servizi per: 
–la rete 
–ssh 
•Provare ad abilitarli e disabilitarli 
•Provare ad inserire in rc.local un semplice script capace di stampare un messaggio 
•Provare a creare un servizio di un tipo qualsiasi 
Percorso 5 
Moduli del kernel 
31
Bibliografia 
•https://wiki.ubuntu.com/ 
•http://wiki.ubuntu-it.org 
•http://help.ubuntu-it.org/ 
•http://free-electrons.com/docs/ 
•https://wiki.archlinux.org/index.php/kernel_modules 
•https://help.ubuntu.com/community/Loadable_Modules 
•[7] http://www.linux.org/threads/sysfs-and-configfs.4956/ 
•[8] https://wiki.archlinux.org/index.php/Kernel_parameters#When_starting_the_kernel 
•[9] http://askubuntu.com/questions/134266/how-do-i-prevent-the-lp- module-from-loading-on-boot 
•[10] https://help.ubuntu.com/community/UbuntuBootupHowto 
Percorso 5 
Moduli del kernel 
32
These slides are licensed under a Creative Commons 
Attribution Non Commercial Share Alike 4.0 International 
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ 
Versione in Italiano: 
https://creativecommons.org/licenses/by-nc-sa/4.0/deed.it

More Related Content

What's hot

Introduzione User Mode Linux
Introduzione User Mode LinuxIntroduzione User Mode Linux
Introduzione User Mode LinuxMajong DevJfu
 
Sistemi operativi
Sistemi operativiSistemi operativi
Sistemi operativi
Marco Liverani
 
Compilazione Kernel
Compilazione KernelCompilazione Kernel
Compilazione Kernel
N3mes1s Uncategorized
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleIntroduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleMajong DevJfu
 
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device Drivers
Fabio Nisci
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
Fulvio Corno
 
LUG - Ricompilazione kernel
LUG - Ricompilazione kernelLUG - Ricompilazione kernel
LUG - Ricompilazione kernel
Alessandro Manfredi
 
Condivisione di dischi - NFS - Reti miste Windows/Linux - SMB e NetBIOS - Sam...
Condivisione di dischi - NFS - Reti miste Windows/Linux - SMB e NetBIOS - Sam...Condivisione di dischi - NFS - Reti miste Windows/Linux - SMB e NetBIOS - Sam...
Condivisione di dischi - NFS - Reti miste Windows/Linux - SMB e NetBIOS - Sam...
Fulvio Corno
 
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
Fulvio Corno
 
LTSP
LTSPLTSP
Lug Roma3 Corso Linux Base
Lug Roma3   Corso Linux BaseLug Roma3   Corso Linux Base
Lug Roma3 Corso Linux Basefosk
 
From Scratch To Network - User mode linux
From Scratch To Network - User mode linuxFrom Scratch To Network - User mode linux
From Scratch To Network - User mode linuxMajong DevJfu
 
Giochiamo ai COW-boy : zfs & btrfs
Giochiamo ai COW-boy : zfs & btrfsGiochiamo ai COW-boy : zfs & btrfs
Giochiamo ai COW-boy : zfs & btrfs
alberto fiaschi
 
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Majong DevJfu
 
Architettura degli Elaboratori
Architettura degli ElaboratoriArchitettura degli Elaboratori
Architettura degli Elaboratorisviciu
 
Virtualizzazione
VirtualizzazioneVirtualizzazione
Virtualizzazione
Paolo Campegiani
 
Sistema Operativo - LInux - Modulo 2.1
Sistema Operativo - LInux - Modulo 2.1Sistema Operativo - LInux - Modulo 2.1
Sistema Operativo - LInux - Modulo 2.1
I.S.I.S. "Antonio Serra" - Napoli
 
Amministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxAmministrazione base dei sistemi Linux
Amministrazione base dei sistemi Linux
Paolo Campegiani
 
APT per RPM
APT per RPMAPT per RPM
APT per RPM
Francesco Taurino
 

What's hot (20)

Introduzione User Mode Linux
Introduzione User Mode LinuxIntroduzione User Mode Linux
Introduzione User Mode Linux
 
Sistemi operativi
Sistemi operativiSistemi operativi
Sistemi operativi
 
Compilazione Kernel
Compilazione KernelCompilazione Kernel
Compilazione Kernel
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleIntroduzione Alla Uml Mconsole
Introduzione Alla Uml Mconsole
 
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device Drivers
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
 
LUG - Ricompilazione kernel
LUG - Ricompilazione kernelLUG - Ricompilazione kernel
LUG - Ricompilazione kernel
 
Condivisione di dischi - NFS - Reti miste Windows/Linux - SMB e NetBIOS - Sam...
Condivisione di dischi - NFS - Reti miste Windows/Linux - SMB e NetBIOS - Sam...Condivisione di dischi - NFS - Reti miste Windows/Linux - SMB e NetBIOS - Sam...
Condivisione di dischi - NFS - Reti miste Windows/Linux - SMB e NetBIOS - Sam...
 
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
 
LTSP
LTSPLTSP
LTSP
 
Lug Roma3 Corso Linux Base
Lug Roma3   Corso Linux BaseLug Roma3   Corso Linux Base
Lug Roma3 Corso Linux Base
 
From Scratch To Network - User mode linux
From Scratch To Network - User mode linuxFrom Scratch To Network - User mode linux
From Scratch To Network - User mode linux
 
Lezione tre
Lezione treLezione tre
Lezione tre
 
Giochiamo ai COW-boy : zfs & btrfs
Giochiamo ai COW-boy : zfs & btrfsGiochiamo ai COW-boy : zfs & btrfs
Giochiamo ai COW-boy : zfs & btrfs
 
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05
 
Architettura degli Elaboratori
Architettura degli ElaboratoriArchitettura degli Elaboratori
Architettura degli Elaboratori
 
Virtualizzazione
VirtualizzazioneVirtualizzazione
Virtualizzazione
 
Sistema Operativo - LInux - Modulo 2.1
Sistema Operativo - LInux - Modulo 2.1Sistema Operativo - LInux - Modulo 2.1
Sistema Operativo - LInux - Modulo 2.1
 
Amministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxAmministrazione base dei sistemi Linux
Amministrazione base dei sistemi Linux
 
APT per RPM
APT per RPMAPT per RPM
APT per RPM
 

Viewers also liked

Approcci ed applicazioni per l’Ambient Intelligence
Approcci ed applicazioni per l’Ambient IntelligenceApprocci ed applicazioni per l’Ambient Intelligence
Approcci ed applicazioni per l’Ambient Intelligence
Fulvio Corno
 
Ambient intelligence - an overview
Ambient intelligence - an overviewAmbient intelligence - an overview
Ambient intelligence - an overview
Fulvio Corno
 
AmI 2015 - Course Introduction
AmI 2015 - Course IntroductionAmI 2015 - Course Introduction
AmI 2015 - Course Introduction
Fulvio Corno
 
Introduzione ai Web Information Systems
Introduzione ai Web Information SystemsIntroduzione ai Web Information Systems
Introduzione ai Web Information Systems
Fulvio Corno
 
Introduction to Graphs
Introduction to GraphsIntroduction to Graphs
Introduction to Graphs
Fulvio Corno
 
Introduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applicationsIntroduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applications
Fulvio Corno
 
Tecnologie per la disabilita' nella formazione ingegneristica di base
Tecnologie per la disabilita' nella formazione ingegneristica di baseTecnologie per la disabilita' nella formazione ingegneristica di base
Tecnologie per la disabilita' nella formazione ingegneristica di base
Fulvio Corno
 
La percezione sensoriale
La percezione sensorialeLa percezione sensoriale
La percezione sensoriale
Fulvio Corno
 
Graphs: Cycles
Graphs: CyclesGraphs: Cycles
Graphs: Cycles
Fulvio Corno
 
Primi passi - VirtualBox - Installazione Ubuntu 12.04 LTS - Shell
 Primi passi - VirtualBox - Installazione Ubuntu 12.04 LTS - Shell Primi passi - VirtualBox - Installazione Ubuntu 12.04 LTS - Shell
Primi passi - VirtualBox - Installazione Ubuntu 12.04 LTS - Shell
Fulvio Corno
 
Programming with JavaFX
Programming with JavaFXProgramming with JavaFX
Programming with JavaFX
Fulvio Corno
 
La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari
 La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari
La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari
Fulvio Corno
 
Tecnologie e applicazioni domotiche: potenzialità ed approcci industriali a c...
Tecnologie e applicazioni domotiche: potenzialità ed approcci industriali a c...Tecnologie e applicazioni domotiche: potenzialità ed approcci industriali a c...
Tecnologie e applicazioni domotiche: potenzialità ed approcci industriali a c...
Fulvio Corno
 
Java collections framework
Java collections frameworkJava collections framework
Java collections framework
Fulvio Corno
 
Introduction to JavaFX
Introduction to JavaFXIntroduction to JavaFX
Introduction to JavaFX
Fulvio Corno
 
Programmazione in C (corso 12BHD Informatica)
Programmazione in C (corso 12BHD Informatica)Programmazione in C (corso 12BHD Informatica)
Programmazione in C (corso 12BHD Informatica)
Fulvio Corno
 
Esercizi di programmazione in C (v. 2.01)
Esercizi di programmazione in C (v. 2.01)Esercizi di programmazione in C (v. 2.01)
Esercizi di programmazione in C (v. 2.01)
Fulvio Corno
 

Viewers also liked (17)

Approcci ed applicazioni per l’Ambient Intelligence
Approcci ed applicazioni per l’Ambient IntelligenceApprocci ed applicazioni per l’Ambient Intelligence
Approcci ed applicazioni per l’Ambient Intelligence
 
Ambient intelligence - an overview
Ambient intelligence - an overviewAmbient intelligence - an overview
Ambient intelligence - an overview
 
AmI 2015 - Course Introduction
AmI 2015 - Course IntroductionAmI 2015 - Course Introduction
AmI 2015 - Course Introduction
 
Introduzione ai Web Information Systems
Introduzione ai Web Information SystemsIntroduzione ai Web Information Systems
Introduzione ai Web Information Systems
 
Introduction to Graphs
Introduction to GraphsIntroduction to Graphs
Introduction to Graphs
 
Introduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applicationsIntroduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applications
 
Tecnologie per la disabilita' nella formazione ingegneristica di base
Tecnologie per la disabilita' nella formazione ingegneristica di baseTecnologie per la disabilita' nella formazione ingegneristica di base
Tecnologie per la disabilita' nella formazione ingegneristica di base
 
La percezione sensoriale
La percezione sensorialeLa percezione sensoriale
La percezione sensoriale
 
Graphs: Cycles
Graphs: CyclesGraphs: Cycles
Graphs: Cycles
 
Primi passi - VirtualBox - Installazione Ubuntu 12.04 LTS - Shell
 Primi passi - VirtualBox - Installazione Ubuntu 12.04 LTS - Shell Primi passi - VirtualBox - Installazione Ubuntu 12.04 LTS - Shell
Primi passi - VirtualBox - Installazione Ubuntu 12.04 LTS - Shell
 
Programming with JavaFX
Programming with JavaFXProgramming with JavaFX
Programming with JavaFX
 
La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari
 La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari
La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari
 
Tecnologie e applicazioni domotiche: potenzialità ed approcci industriali a c...
Tecnologie e applicazioni domotiche: potenzialità ed approcci industriali a c...Tecnologie e applicazioni domotiche: potenzialità ed approcci industriali a c...
Tecnologie e applicazioni domotiche: potenzialità ed approcci industriali a c...
 
Java collections framework
Java collections frameworkJava collections framework
Java collections framework
 
Introduction to JavaFX
Introduction to JavaFXIntroduction to JavaFX
Introduction to JavaFX
 
Programmazione in C (corso 12BHD Informatica)
Programmazione in C (corso 12BHD Informatica)Programmazione in C (corso 12BHD Informatica)
Programmazione in C (corso 12BHD Informatica)
 
Esercizi di programmazione in C (v. 2.01)
Esercizi di programmazione in C (v. 2.01)Esercizi di programmazione in C (v. 2.01)
Esercizi di programmazione in C (v. 2.01)
 

Similar to Moduli del kernel - Boot del sistema

PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxMarco Ferrigno
 
Linux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaLinux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compatta
Alessandro Selli
 
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)
Marcello Missiroli
 
Log files - Approcci al Troubleshooting
 Log files - Approcci al Troubleshooting Log files - Approcci al Troubleshooting
Log files - Approcci al Troubleshooting
Fulvio Corno
 
LUG - Logical volumes management
LUG - Logical volumes managementLUG - Logical volumes management
LUG - Logical volumes managementAlessandro Manfredi
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxDeveler S.r.l.
 
Corso linux base
Corso linux baseCorso linux base
Corso linux base
Beniamino Ferrari
 
Lezione corso Base GNU/Linux
Lezione corso Base GNU/LinuxLezione corso Base GNU/Linux
Lezione corso Base GNU/LinuxAlex Palesandro
 
Linux & Open Source : Lezione Cinque
Linux & Open Source : Lezione CinqueLinux & Open Source : Lezione Cinque
Linux & Open Source : Lezione Cinque
Dario Mazza
 
Linux & Open Source : Lezione 1
Linux & Open Source : Lezione 1Linux & Open Source : Lezione 1
Linux & Open Source : Lezione 1
Dario Mazza
 
Lezione Cinque
Lezione CinqueLezione Cinque
Lezione Cinque
Sebastiano Merlino (eTr)
 
Battaglia Navale
Battaglia NavaleBattaglia Navale
Battaglia Navale
PaoloVanacore
 
Presentazione Linux
Presentazione LinuxPresentazione Linux
Presentazione LinuxMatteo
 
Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding Linux
NaLUG
 
Guida alla modifica del dsdt 1a parte - le basi
Guida alla modifica del dsdt   1a parte - le basiGuida alla modifica del dsdt   1a parte - le basi
Guida alla modifica del dsdt 1a parte - le basiguest1842a5
 
Network configuration - IPTables firewall
 Network configuration - IPTables firewall Network configuration - IPTables firewall
Network configuration - IPTables firewall
Fulvio Corno
 
Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014
Joaquim Hangalo
 
Osiris Operating system
Osiris Operating systemOsiris Operating system
Osiris Operating system
Diego
 
Elementidi informatica
Elementidi informaticaElementidi informatica
Elementidi informatica
giu89
 

Similar to Moduli del kernel - Boot del sistema (20)

PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
 
Linux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaLinux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compatta
 
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)
 
Log files - Approcci al Troubleshooting
 Log files - Approcci al Troubleshooting Log files - Approcci al Troubleshooting
Log files - Approcci al Troubleshooting
 
LUG - Logical volumes management
LUG - Logical volumes managementLUG - Logical volumes management
LUG - Logical volumes management
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
 
Corso linux base
Corso linux baseCorso linux base
Corso linux base
 
Lezione corso Base GNU/Linux
Lezione corso Base GNU/LinuxLezione corso Base GNU/Linux
Lezione corso Base GNU/Linux
 
Linux & Open Source : Lezione Cinque
Linux & Open Source : Lezione CinqueLinux & Open Source : Lezione Cinque
Linux & Open Source : Lezione Cinque
 
Linux & Open Source : Lezione 1
Linux & Open Source : Lezione 1Linux & Open Source : Lezione 1
Linux & Open Source : Lezione 1
 
Lezione Cinque
Lezione CinqueLezione Cinque
Lezione Cinque
 
Battaglia Navale
Battaglia NavaleBattaglia Navale
Battaglia Navale
 
Presentazione Linux
Presentazione LinuxPresentazione Linux
Presentazione Linux
 
Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding Linux
 
Guida alla modifica del dsdt 1a parte - le basi
Guida alla modifica del dsdt   1a parte - le basiGuida alla modifica del dsdt   1a parte - le basi
Guida alla modifica del dsdt 1a parte - le basi
 
Network configuration - IPTables firewall
 Network configuration - IPTables firewall Network configuration - IPTables firewall
Network configuration - IPTables firewall
 
Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014Installazione di koha_su_debian_v2_0_20_12_2014
Installazione di koha_su_debian_v2_0_20_12_2014
 
Osiris Operating system
Osiris Operating systemOsiris Operating system
Osiris Operating system
 
Elementidi informatica
Elementidi informaticaElementidi informatica
Elementidi informatica
 
Modulo 1 - Lezione 2
Modulo 1 - Lezione 2Modulo 1 - Lezione 2
Modulo 1 - Lezione 2
 

Moduli del kernel - Boot del sistema

  • 1.
  • 2. Kernel •Microkernel •Kernel monolitico (Linux) •Utilizzo dei moduli Percorso 5 Moduli del kernel 2
  • 3. Linux Kernel(1) •Gestisce tutte le risorse hardware: CPU, memoria, I/O •Fornisce un insieme di API (system call), circa 300 –Permettono alle applicazioni utente e alle librerie di utilizzare l’hardware •Gestisce la concorrenza e l’uso dell’hardware: –Scheduling dei processi –Condivisione dell’HW, ad esempio della scheda di rete –Lavora in interruzione (nelle ultime versioni il kernel può essere esso stesso interrotto) Percorso 5 Moduli del kernel 3
  • 4. Linux Kernel(2) •Le system call sono stabili nel tempo –Solo nuove system call possono venire aggiunte •Le informazioni di sistema e del kernel sono messe a disposizione tramite pseudo filesystem (anche detti filesystem virtuali) •I più importanti sono: –/proc –/sys Percorso 5 Moduli del kernel 4
  • 5. /proc •Il filesystem proc, montato su /proc, contiene informazioni su: –Processi –Memoria –Parametri di gestione –Vi è una directory per ciascuno dei processi in esecuzione –Ad es. In /proc/cpuinfo vi sono i dettagli sulla CPU Percorso 5 Moduli del kernel 5
  • 6. /sys •Il filesystem sysfs, montato su /sys, contiene informazioni su: –device –Driver •È di fatto una interfaccia tra spazio utente e spazio kernel •Esempi sono [7]: –/sys/modules –/sys/kernel –/sys/fs –/sys/firmware –/sys/dev Percorso 5 Moduli del kernel 6
  • 7. Esercizio •Utilizzando le pagine di manuale, provare ad esplorare le directory /proc e /sys, con particolare riferimento ai moduli del kernel già installati •Provare a rifare un esempio di questo genere: $ sleep 100 & [1] 4357 $ ls /proc/4357 ... $ cat /proc/4357/cmdline sleep100 Percorso 5 Moduli del kernel 7
  • 8. /dev •Contiene i device (dispositivi virtuali) utilizzati da Linux per virtualizzare i dispositivi fisici •Il gestore dei device è Udev •Udev crea di volta in volta solamente i device (in /dev) corrispondenti ai device fisici realmente collegati •Si notino in particolare –/dev/sda per il primo disco –i tty per le console (ALT-F1 etc…) e i pts per i terminali all’interno dell’interfaccia grafica (usare who per vederli) Percorso 5 Moduli del kernel 8
  • 9. modprobe •Per vedere le opzioni settate per il modulo in memoria: –systool -v -m module_name (installare sysfsutils se necessario) •Modprobe può vedere la configurazione e le dipendenze di un modulo –modprobe -c | grep module_name –modprobe --show-depends module_name •modprobe nome_modulo carica il modulo (più efficemente di insmod) Percorso 5 Moduli del kernel 9
  • 10. lsmod •Permette di verificare quali e quanti moduli siano caricati •Dato un modulo si può utilizzare: –modinfo nome_modulo Per avere informazioni su quel modulo •Ad es.: –modinfo bluetooth Percorso 5 Moduli del kernel 10
  • 11. Caricamento dei moduli •I moduli sono caricati in modo automatico da udev •Per caricarne un altro esterno o per bloccarne uno va inserito in /etc/modules •Se è necessario passargli dei parametri, vanno messi in /etc/modprobe.d/nomemodulo.conf come opzione: –options thinkpad_acpi fan_control=1 •Si può anche passare l’opzione tramite il bootloader •Ad es. in Grub bisogna premere e alla visione del menù e poi aggiungere il parametro e premere b per il boot [8] Percorso 5 Moduli del kernel 11
  • 12. lspci •Permette di individuare i dispositivi PCI collegati •lspci permette per esempio (sulla macchina virtuale su portatile Apple) di vedere: –la scheda grafica Innotek –il controller USB Apple Percorso 5 Moduli del kernel 12
  • 13. lsusb •Permette di vedere i dispositivi collegati all’USB •Altri comandi utili per avere una descrizione dell’hardware disponibile: –lshw –cat /proc/cpuinfo –dmidecode, per il BIOS –iwconfig (per la scheda di rete wireless) •Se i risultati sono molti si possono redirigere su file Percorso 5 Moduli del kernel 13
  • 14. Kernel module – un esempio •Per eliminare un modulo si può usare rmmod •Oppure mettere in blacklist il modulo che si desidera bloccare •La lista nera è in /etc/modprobe.d/blacklist.conf •Si possono bloccare solo i moduli non presenti nel kernel, dunque solo quelli caricati separatamente Percorso 5 Moduli del kernel 14
  • 15. Esercizio •Provare a replicare l’esempio della slide precedente •In particolare provare con il modulo e1000 •Cosa succede? Provare anche con rmmod •Provare poi con il modulo lp e seguire quanto riportato in [9] Percorso 5 Moduli del kernel 15
  • 16. Fase di boot •La sequenza di boot è divisa in varie fasi: 1.Hardware boot 2.Loader del sistema operativo 3.Startup del kernel 4.Init e inittab 5.Script di boot •Fare riferimento a man boot Percorso 5 Moduli del kernel 16
  • 17. Fase di boot(1) •Hardware boot –Self test (BIOS) e lettura parametri da CMOS (NVRAM); UEFI sarà il nuovo standard al posto del classico BIOS –Via hardware viene fatto accesso al device di boot, caricando il loader del sistema operativo e trasferendo il controllo ad esso –Esiste anche il boot via rete, tramite vari protocolli, tra cui DHCP, TFTP, PXE, Etherboot Percorso 5 Moduli del kernel 17
  • 18. Fase di boot(2) •Loader del sistema operativo –Nei personal computer, esso è nell’MBR (primo settore del dispositivo di boot) –La dimensione limitata dell’MBR (512 byte) rende quasi impossibile installare un vero e proprio OS loader in esso –Viene dunque chiamato un loader secondario situato su di una partizione del disco –Normalmente si usa LILO oppure GRUB –Possono entrambi funzionare da loader secondario (richiamati da un MBR installato dal DOS) oppure da loader in due parti, completo di MBR+seconda parte dalla partizione di root –Il compito del loader è di trovare il kernel nel disco, caricarlo e lanciarlo, eventualmente passandogli dei parametri –Vi è solitamente anche un minimo di interfaccia Percorso 5 Moduli del kernel 18
  • 19. Fase di boot(3) •Startup del kernel –Quando il kernel è caricato, esso inizializza i dispositivi (tramite i relativi driver), fa partire lo swapper (kswapd) e monta il filesystem di root (/) –I parametri passati al kernel possono modificare tale comportamento (ad esempio modificare il root filesystem di default) –Il kernel crea il primo processo, con PID 1; esso esegue /sbin/init, passandogli eventuali altri parametri Percorso 5 Moduli del kernel 19
  • 20. Runlevel •Indica il runlevel attuale •Legge da /var/run/utmp Percorso 5 Moduli del kernel 20
  • 21. Esercizio •Provare ad individuare i vari runlevel disponibili •Provare a verificare la presenza del processo init •Provare ad individuare il runlevel di Ubuntu •Provare a cambiare il runlevel a 1 –Cosa succede? Provare a fare ssh su 127.0.0.1 •E provando init 2? Percorso 5 Moduli del kernel 21
  • 22. Fase di boot(4) •Init e inittab –Init provvede a leggere /etc/inittab per ulteriori istruzioni –Su Ubuntu inittab non è presente, le sue funzioni vengono svolte da altri script, i quali definiscono i vari run-level, ciascuno associato ad un insieme di servizi (di solito S è per singolo utente, il livello 2 è quello in cui la maggior parte dei servizi di rete partono, 3 è multiuser, 5 è il livello multiuser con interfaccia grafica) –Il livello può essere cambiato con init –Tramite gli script i servizi vengono di fatto lanciati o fermati Percorso 5 Moduli del kernel 22
  • 23. Fase di boot(5) •Script di boot –Per ciascun servizio tra quelli gestiti vi è uno script di startup posizionato in /etc/init.d –Tali script accettano come parametri start, stop e in taluni casi restart –Lanciati senza parametri gli script mostrano i parametri utilizzabili –OpenBSD ed altri sistemi (anche Slackware Linux) utilizzano uno schema di script di boot diverso Percorso 5 Moduli del kernel 23
  • 24. /etc/rc[0-6S].d •Si tratta di directory nelle quali sono presenti dei link (solitamente simbolici) agli script reali che sono posti in /etc/init.d •I vari file (link agli script) vengono richiamati in ordine: –i link con nome che inizia con S vengono richiamati con il parametro start –quelli con la K servono allo stop del servizio •Dopo S o K vi è un numero e la descrizione del servizio; gli script vengono richiamati in ordine di numero, dato il runlevel di interesse Percorso 5 Moduli del kernel 24
  • 25. Boot in Ubuntu [si veda 10] •Le directory ed i file di configurazione importanti sono: –/etc/init pur non essendo dei veri script, i file presenti nella directory contengono quanto serve per rimpiazzare i precedenti script sysvinit –/etc/init.d per retrocompatibilità la directory contiene script compatibili, che pure chiamano service myservice start –/etc/init/rc-sysinit.conf controlla l’esecuzione degli script tradizionali aggiunti a mano o con update-rc.d ai livelli /etc/rc* –/etc/default contiene file di configurazione sia per i tradizionali sia per I nuovi script basati su upstart (service myservice start) Percorso 5 Moduli del kernel 25
  • 26. Partenza di un servizio # Tradizionale: /etc/init.d/myservice start # Modalità Upstart service myservice start Percorso 5 Moduli del kernel 26
  • 27. Stop di un servizio # Tradizionale: /etc/init.d/myservice stop # Modalità Upstart service myservice stop Percorso 5 Moduli del kernel 27
  • 28. Elenco dei servizi disponibili # Tradizionale: ls /etc/init.d # Modalità Upstart service --status-all •Si noti che la modalità Upstart è in grado di mostrare sia i servizi tradizionali sia quelli di tipo upstart Percorso 5 Moduli del kernel 28
  • 29. Aggiungere un servizio # Tradizionale: update-rc.d apache2 defaults # Modalità Upstart Non vi è il concetto di runlevel. È necessario aggiungere un upstart config in /etc/init e editare un file in /etc/default Percorso 5 Moduli del kernel 29
  • 30. Cancellare un servizio # Tradizionale: rm /etc/rc*/*myscript # Modalità Upstart Se non c’è nulla in /etc/default, editare config in /etc/init Percorso 5 Moduli del kernel 30
  • 31. Esercizio •Individuare, tramite ricerca sui manuali e/o su Internet i servizi per: –la rete –ssh •Provare ad abilitarli e disabilitarli •Provare ad inserire in rc.local un semplice script capace di stampare un messaggio •Provare a creare un servizio di un tipo qualsiasi Percorso 5 Moduli del kernel 31
  • 32. Bibliografia •https://wiki.ubuntu.com/ •http://wiki.ubuntu-it.org •http://help.ubuntu-it.org/ •http://free-electrons.com/docs/ •https://wiki.archlinux.org/index.php/kernel_modules •https://help.ubuntu.com/community/Loadable_Modules •[7] http://www.linux.org/threads/sysfs-and-configfs.4956/ •[8] https://wiki.archlinux.org/index.php/Kernel_parameters#When_starting_the_kernel •[9] http://askubuntu.com/questions/134266/how-do-i-prevent-the-lp- module-from-loading-on-boot •[10] https://help.ubuntu.com/community/UbuntuBootupHowto Percorso 5 Moduli del kernel 32
  • 33. These slides are licensed under a Creative Commons Attribution Non Commercial Share Alike 4.0 International To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ Versione in Italiano: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.it