Sistemi Operativi. Esercitazione 11. Corso di Laurea Triennale in Ingegneria Informatica.

Documenti analoghi
Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica Esercitazione 11.

Kernel Linux (per sysadm)

linux-rtai

Sistema operativo. Avere un architettura multi-core è un vantaggio

Compilazione del Kernel Linux 2.6.x

Guida all installazione di RTAI

Alcuni concetti base

Ricompilazione del Kernel a modo mio :

ImoLUG. [ Corso Linux: Lezione 2 ]

Sistemi Operativi. Lez. 0: Introduzione ai sistemi operativi

Carta Regionale dei Servizi MANUALE DI INSTALLAZIONE E CONFIGURAZIONE SOFTWARE CRS PER LINUX

Installazione di un sistema GNU/Linux

Linux e i software liberi. di Nardean Lorenzo e Redigolo Marco

Sistema Operativo (Software di base)

Ricompilazione driver per webcam Philips

Compilazione Kernel 2.6x con supporto BootSplash

I sistemi operativi. Prof. Daniele Contarino

Sistemi operativi. Fondamenti di Informatica

Seminari Quota - Utilizzi e Implementazione -

Comandi di base UNIX. cd, cp, rm, mkdir, mv tar, gzip, kill, bg, fg chmod, chown sudo, su redirezione, >, >>, pagine di manuale, man

Le distribuzioni GNU/Linux

KERNEL LINUX. Ricompilazione ed Ottimizzazione. Relatore: Mirco Chinelli Linux Day Torino 2009

Introduzione all uso dei laboratori aka Linux basics. October 23, 2013

Kernel. Microkernel Kernel monolitico (Linux) Utilizzo dei moduli. Percorso 5 Moduli del kernel 2

Di cosa parleremo. Installazione programmi

Sistemi Operativi: Concetti Introduttivi

Scritta da Andrea Cappa COME INSTALLARE LINUX IN UN HOST VIRTUALE

Sistemi embedded un dispositivo incapsulato progettato per una determinata applicazione

Cosa è importante: pom.xml Goal Plug-in Repository

Un Pinguino piccolo piccolo

IDE DevC

I Boot Loader: LiLo & Grub

Sistema operativo & file system 1

Lezione 6 Analisi del codice

Dal sistema operativo all' hardware

Corso di QoS e sicurezza nelle reti Lezione del 11/03/2015

Corsi di Formazione Open Source & Scuola Provincia di Pescara gennaio 2005 aprile ~

Tecnologie Open Source per Giuristi

A cura di isazi

Sistemi Di Elaborazione Dell informazione

IL SOFTWARE DI SISTEMA

Reti di Telecomunicazioni Lezione del 15/11/2013

Corso di avvicinamento al Software Libero. Lunedi 30 Gennaio

Server LDAP. File Server. Domain Controller. Installazione di una piattaforma Linux Alessandro Brusò 24/05/2012

SUPSI. Utilizzo del laboratorio di Meccatronica

Introduzione al DEV C++

Lezione 5 Debian GNU/Linux

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Introduzione ai Moduli del Kernel di Linux. E.Mumolo, DEEI

Possiamo, quindi, procedere con l installazione e la configurazione di Asterisk nella nostra infrastruttura.

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Provare e installare Linux

WP5. 9 Settembre Paolo Veronesi (INFN CNAF)

Introduzione ai sistemi GNU/Linux

Introduzione ecos. Agenda. Giovanni Perbellini

PIT 2012:

Modalità di installazione di Linux Il pinguino si fa in quattro per noi

Servizi della biblioteca. Accedere alle risorse elettroniche da fuori rete Unimore

Linguaggio C: Introduzione ad ambienti di sviluppo integrati (IDE) e a Dev-C++ Università degli Studi di Brescia

Ambienti di Sviluppo. Linguaggi compilati

Horizone Server IN00B02WEB. Horizone PDK

ELAD FDM-S1. Manuale Installazione Componenti Per Linux

Linux su FPGA Xilinx

Virtualizzazione di macchine Linux tramite XEN

OpenStack. Gestione Immagini Virtuali. Marco Caberletti. Formazione MCloud WP1 Ancona Marzo 2013

Laboratorio di Sistemi Operativi

Kit di Installazione / Migrazione SeceCBI CSE Rel 04

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per utenti singoli)

Compilazione rapporto di Audit in remoto

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio

Il Sistema Operativo. Informatica Sistema Operativo 1

Contenitori. Subhraveti, D. Containers Beyond the Hype. AppOrbit, 2015.

LPIC-1 Junior Level Linux Certification

Certificazione LPI

Linux+Win9x+Grub HOWTO

Sistemi Operativi Windows e Linux Innovazione scolastica e sicurezza informatica

File Leggimi di Parallels Tools

Processo di boot Linux su un PC x86 : il Bootstrap.

Ingegneria del Software 1: Eclipse

GNU/Debian: una distribuzione aggiornata e stabile

Guida all'installazione di Ubuntu 10.10

PROGRAMMA DEL CORSO MASTER IN TECNICO HARDWARE E SOFTWARE

Il Sistema Operativo

Ciao a tutti, oggi vi mostrero' come ho recuperato dei file erroneamente cancellati.

Configuration Change Release Management

Corso di avvicinamento al Software Libero. Lunedi 23 Gennaio

Colla MGC Guida all installazione

Modulo III - Guida alla installazione di R

Università degli Studi di Padova

Linux, non solo Ubuntu! di Tamara Muscas & Paolo Cortis

Esercitazione 05. Prima di iniziare. Packet Filtering [ ICMP ] Sommario. Angelo Di Iorio (Paolo Marinelli)

Linux: Organizzazione filesystem

Sistema nazionale di rilevazione delle presenze

Implementazione di un repository locale e possibili sviluppi futury. Marcello Casalena. Seminari

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito)

Introduzione a Gentoo Linux. Francesco Di Cintio

Opensuse cenni storici

Fondamenti di informatica I. Sistemi operativi II

CONTROLLER RAID LC2. Requisiti di sistema. Aprire la scheda completamente prima di procedere all'installazione ISTRUZIONI DI INSTALLAZIONE

Sistemi Operativi ed interazione con HW e CAD

Transcript:

Sistemi Operativi Corso di Laurea Triennale in Ingegneria Informatica Esercitazione 11 Kernel Linux (vs micro-kernel) Configurazione e compilazione Linux Kernel daniel.cesarini@for.unipi.it 1

Sommario Kernel monolitico vs modulare vs microkernel Kernel Linux: configurazione e compilazione... Kernel Linux, Configurazione e compilazione 2

Kernel (Differenti approcci)

Kernel monolitico Un unico file oggetto Un unico spazio di indirizzamento nel kernel tutti i processi a livello di sistema (quando sono nel kernel) condividono lo spazio di indirizzamento CPU, mem, IPC, Driver, Permessi, nel kernel Kernel Linux, Configurazione e compilazione 4

Micro-Kernel Nucleo micro Ridotto all'essenziale per garantire l'astrazione di macchina Scheduler (CPU virtuali) Memory management (memoria virtuale) IPC - Inter Process Communication es. L4 (Jochen Liedtke), GNU/Hurd,... Kernel Linux, Configurazione e compilazione 5

Monolithic vs Micro-Kernel microkernel: PRO - isolamento componenti - resistenza ai guasti - sicurezza CONTRO - tutto passa dall'ipc: - prestazioni, - difficoltà progettuale Kernel Linux, Configurazione e compilazione 6

Kernel modulare I kernel monolitici possono essere modularizzati Tale operazioni non incide sullo spazio di indirizzamento del kernel Si dice kernel modulare un kernel che permette il caricamento dinamico (a runtime ) di moduli oggetto Kernel Linux, Configurazione e compilazione 7

Kernel Linux configurazione / compilazione

Kernel Linux (2.6.x) Numeri mole: 320 Mb di sorgenti per 4 500 000 LOC costo dello sviluppo: 4 500 anni/uomo, 612 000 000 $ totale fonte: www.dwheeler.com/essays/linux-kernel-cost.html Kernel Linux, Configurazione e compilazione 9

Ottenere il kernel http://www.kernel.org tarball da 30 Mb contenenti sorgenti C (portabili su almeno 16 architetture ad oggi) Assembly (architecture specific) interamente rilasciato sotto licenza GPL (firmware a parte) compilabile utilizzando utility GNU (GCC, Make, Binutils) SCM utilizzato dalla comunità: git Kernel Linux, Configurazione e compilazione 10

Linux Kernel E un kernel monolitico (i.e. non microkernel), ma modulare L installazione consiste di: parte monolitica (vmlinuz) moduli (initrd) Kernel Linux, Configurazione e compilazione 11

Linux parte monolitica Non risiede necessariamente sul filesystem, ma deve essere nota al boot loader (e.g. lilo, grub, yaboot, loadlin,... ) il boot loader ` l applicazione che si preoccupa di installare il e kernel in modo che la procedura di bootstrap della macchina (tipicamente implementata nel BIOS) sia in grado di accedervi è fortemente dipendente dall architettura esempi: lilo e grub su i386, yaboot su powerpc Quando risiede sul filesystem tipicamente è un unico file: /boot/vmlinu{x,z}-<kernel-version> (e.g. /boot/vmlinux-2.6.32) Viene caricata in memoria al boot e mai scaricata Kernel Linux, Configurazione e compilazione 12

Linux moduli del kernel Parti di kernel, caricati/scaricati su richiesta, manualmente dall utente o da demoni preposti (kerneld, ora kmod subsystem) Devono essere accessibili a runtime, quindi sono nel filesystem un albero di file oggetto (.o, ora.ko) radicato in /lib/modules/<kernel-version>/ (e.g. /lib/modules/2.6.32/) Flessibilità dei moduli name aliasing ed opzioni (/etc/modules.conf, /etc/modprobe.d/) dipendenze inter-modulo (/lib/modules/.../modules.dep) moduli caricati al boot (/etc/modules) Kernel Linux, Configurazione e compilazione 13

Gestione moduli Comandi inerenti i moduli: Caricamento su richiesta insmod (full path, non gestisce alias e dipendenze) modprobe (nome modulo, gestisce alias e dipendenze) Rimozione: rmmod, modprobe -r (gestisce dipendenze) Lista dei moduli caricati: lsmod (implementato via /proc/modules) Calcolo delle dipendenze: depmod Informazioni (parametri, licenza,... ): modinfo Pacchetto Debian module-init-tools Kernel Linux, Configurazione e compilazione 14

Configurazione e compilazione

Configurazione

Configurazione, compilazione, installazione kernel Gestite dal Makefile distribuito assieme al kernel Target del Makefile: config, xconfig, menuconfig, oldconfig, gconfig (solo 2.6.x) Ogni (o quasi) componente del kernel può essere: compilata ed inclusa nella parte monolitica compilata come modulo non compilata Vengono gestite dipendenze inter-componente Kernel Linux, Configurazione e compilazione 17

Configurazione Risiede nel file.config all interno dell albero dei sorgenti La configurazione del kernel installato è tipicamente in /boot/config-x.x.x (X.X.X versione kernel installato) Per partire da quella base copiarlo nella cartella in cui sono i sorgenti Kernel Linux, Configurazione e compilazione 18

Compilazione

Compilazione Target del Makefile di interesse: pulizia: clean, mrproper compilazione parte monolitica: bzimage compilazione moduli: modules Risultati della compilazione arch/<architecture>/boot/bzimage più i file (.o/.ko) per i moduli Installazione: su disco: fortemente dipendente dal bootloader, spesso target install del Makefile su floppy: dd if=.../bzimage of=/dev/fd0 moduli: target modules_install del Makefile Kernel Linux, Configurazione e compilazione 20

Initrd (1/2) INITial Ram Disk Nel caso che parti del kernel necessarie al boot siano necessarie al boot (e.g. supporto scsi, filesystem, RAID) è possibile utilizzare un initrd Ogni initrd è una immagine (compressa, tipicamente in formato cpio + gzip) di un filesystem minimale contenente: moduli necessari al boot del sistema tool per il boot del filesystem reale (post caricamento dei moduli) Kernel Linux, Configurazione e compilazione 21

Initrd (2/2) Procedura (semplificata) di boot con initrd: loading del kernel e del ramdisk (boot loader) mounting del ramdisk come root filesystem (kernel) esecuzione di un programma predefinito (e.g. /init, /linuxrc) (kernel) loading di moduli necessari (/init) mounting del filesystem reale (/init) pivot_root (/init) procedura usuale di boot La configurazione di initrd è bootloader-dependent Comandi: mkinitrd, yaird, mkinitramfs(-kpkg), update-initramfs Kernel Linux, Configurazione e compilazione 22

Kernel Linux - the Debian way of life

Kernel the Debian way 1/2 Debian (come ogni distribuzione) fornisce pacchetti contenenti il kernel e i moduli. Vantaggi: supporto alla sicurezza, stabile e testato Svantaggi: non all ultimo grido, pochissime patch extra Può risultare utile utilizzare un kernel più recente per avere migliore supporto hardware o software (NIC ethernet 10 000, funzionalità stack di rete, virtualizzazione,... ) Debian fornisce una utility make-kpkg (pacchetto kernelpackage) per creare pacchetti del kernel customizzati Vantaggi: facile installare anche su un intero cluster, integrato con il package manager, integrato con patch presenti nell archivio Debian Svantaggi: niente supporto da parte del security team di Debian Kernel Linux, Configurazione e compilazione 24

Kernel the Debian way 2/2 Per ottenere un pacchetto del kernel custom Scaricare la tarpalla desiderata (o pacchetto linux-source- 2.6.26) Configurare il kernel (make oldconfig) Compilazione: make-kpkg --initrd kernel_image kernel_headers Opzioni: CONCURRENCY_LEVEL per specificare il numero di cpu da usare --append-to-version (alla versione del kernel) --revision (del pacchetto debian) --added-patches (vedi apt-cache search linux-patch) --added-modules (vedi module-assistant) Kernel Linux, Configurazione e compilazione 25

Moduli non ufficiali the Debian way 1/2 Molti driver non vengono integrati nel kernel di www.kernel.org per motivi di obsolescenza oppure di immaturità Debian fornisce una utility per creare pacchetti per tali moduli chiamata module-assistant (aka m-a, ) Pacchetti con suffisso -source o -src nell archivio (e.s. linux-wlan-ng-source) contengono i sorgenti di tali driver che devono poi essere compilati con m-a Vantaggi: generazione di pacchetti Debian Svantaggi: niente supporto dal security team Modalità interattiva: m-a Kernel Linux, Configurazione e compilazione 26

Moduli non ufficiali the Debian way 2/2 Listing dei driver disponibili: m-a list Preparazione del sistema alla compilazione (installazione degli header del kernel): m-a prepare Build: m-a build linux-wlan-ng (build) e installazione: m-a a-i linux-wlan-ng Update del DB di driver noti: m-a update Interfaccia testuale (utile per bugreport): m-a -t Kernel per cui compilare (default è quello in esecuzione): m-a -l 2.6.26-1-amd64 Kernel Linux, Configurazione e compilazione 27

Cosa c'è nel kernel?

Guardiamo un po' nel kernel Invochiamo il comando make menuconfig Ci si presenta un menu in ncurses (interfaccia testuale interattiva, basata sulle librerie ncurses) Possiamo trovare corrispondenze tra voci del menu e codice? Guardate un po' nei sottosistemi del kernel (dal menu, e poi direttamente nella gerarchia delle cartelle) Kernel Linux, Configurazione e compilazione 29

Esercizi

Esercizi Scaricare da http://kernel.org l ultima versione stabile del kernel Linux Configurarla Compilarla con make-kpkg Installare il deb risultante e tentare un boot (non rimuovere il kernel precedente, in caso qualcosa vada storto è bene avere almeno un kernel funzionante) Utilizzare m-a per compilare un modulo non ufficiale a vostra scelta (es. linux-wlan-ng) Kernel Linux, Configurazione e compilazione 31

Riferimenti (e fonti del codice, e delle slide) Linux Kernel Development (Robert Love) www.kernel.org per il codice www.debian.org e www.debianizzati.org per la compilazione a-là Debian www.msr-inria.inria.fr/~gares/stsl10 - Enrico Tassi - (buona parte di queste slide sono state copiate direttamente in questa presentazione, perché si è ritenuto che il materiale originale fosse una valida base per la lezione) Kernel Linux, Configurazione e compilazione 32