Utilizzo di un filesystem
Transcript
Utilizzo di un filesystem
corso linux livello1 1 Lez i one 5 Parte I Gestione del disco e dei filesystems, cenni sullo startup del sistema operativo (Umberto Zappi) 2009 LEZIONE 5 (P.1) Umberto Zappi Argomenti ● Gestione del disco e dei filesystems ● ● ● ● Partizionamento di un disco Creazione di un filesystem Utilizzo di un filesystem Il file /etc/fstab (mount filesystems in automatico/semimanuale) ● ● Ricerca di files Copia di files da/verso devices (backup/restore del MBR) ● Verifica dei filesystems LEZIONE 5 (P.1) Umberto Zappi Argomenti ● Cenni sullo startup del sistema operativo: ● init e runlevels Partizionamento di un disco In sintesi ● Dividere il disco in più aree (dette partizioni) serve per ... ● ● ● ● raggruppare i dati per tipologia (es: /home per i dati personali) mantenere filesystems specifici per diversi sistemi operativi (sistemi multi-boot) creare partizioni “specializzate” (swap area) aumentare la sicurezza del sistema evitando blocchi del S.O. dovuti al riempimento del filesystem di root Partizionamento di un disco Vantaggi ● ● Salvaguardia dei dati (ogni partizione può essere formattata separatamente da ciascun'altra) Si limita il blocco del S.O. per il riempimento del root fs / Svantaggi ● Frammentazione dello spazio libero ● Conoscere in anticipo le occupazioni disco (buona stima → conoscenza distribuzione) Partizionamento di un disco Partizione ● primaria ● ● ● estesa ● ● ● max. 1 partizione partizione numerata da 1 a 4 logica ● ● ● fino 4 partizioni partizione numerata da 1 a 4 catena di P. all'interno della P.estesa illimitate (teoria) partizione da 5 a 15 (scsi) o 63 (ide) Partizionamento di un disco Convenzione dei nomi ● dischi ● hda → hard disk IDE master sul 1° controller ● hdb → hard disk IDE slave sul 1° controller ● hdc → hard disk IDE master sul 2° controller ● hdd → hard disk IDE slave sul 2° controller ● sdx → x={a,b,c,...} disco SCSI x-esimo (dischi SATA e chiavette USB in emulazione SCSI) ● partizioni ● identificate dal nr. che segue il nome del disco Es: hda2 → 2° partizione sul disco IDE sdc1 → 1° partizione sul 3° disco SCSI/SATA Partizionamento di un disco Tipi di partizione (tag) ● ● le partizioni sono contrassegnate da un codice esadecimale: ● 83 = partizione per Linux/fs ● 82 = partizione per swap area Linux ● 5 = partizione estesa ● 7 = partizione NTFS ● 8e = partizione per LVM ● fd = partizione per Raid per ottenere un elenco completo dei tag, digitare 'l' (elle) dal prompt di fdisk (vedi prossima slide) Partizionamento di un disco Come si partiziona un disco ● Il comando fdisk ~# fdisk [l] device ● l (elle) lista le partizioni ● ● interfaccia a carattere, linea di comando esempio ~# fdisk /dev/sda ~# fdisk /dev/hda USARE CON CAUTELA Partizionamento di un disco Come si partiziona un disco ● Il comando cfdisk ~# cfdisk [device] ● ● interfaccia a carattere, form (curses) esempio ~# cfdisk /dev/sda ~# cfdisk /dev/hda USARE CON CAUTELA Partizionamento di un disco Files utili ● elenco partizioni caricate nel kernel ● /proc/partitions ● esempio ~$ cat /proc/partitions Partizionamento di un disco Utility per gestire le partizioni ● gparted ● ● ● interfaccia grafica permette il ridimensionamento delle partizioni e dei filesystems disponibile anche in versione live (CD, USB, PXE) ● partimage ● ● linea di comando/interfaccia curses backup/restore partizioni/immagini Partizionamento di un disco Riepilogo ● ● ● ● ● ● ● ● Divisione del disco in più aree Vantaggi e svantaggi Partizione primaria, estesa, logica Convenzione dei nomi Tipi di partizione (tag) Comandi fdisk, cfdisk File /proc/partitions Utility gparted, partimage Partizionamento di un disco ● bibliografia Partition HowTo ● man pages comandi ● (es: ~$ man fdisk) ● link ● ● http://gparted.sourceforge.net/livecd.php http://www.debian.org/doc/manuals/securing-debianhowto/ch3.en.html#s3.2 Partizionamento di un disco domande ? Creazione di un filesystem In sintesi ● Creare un filesystem serve per ... ● ● ● creare la struttura necessaria per la gestione dei files e directories inizializzare una partizione E' anche possibile creare un filesystem su un file Creazione di un filesystem Esempi di filesystems Linux ● tradizionali ● ● ● journaled ● ● ● ● ● ext3 reiserfs xfs (nato su sistemi Irix by SGI) jfs (nato su sistemi Aix by IBM) virtuali ● minix (preistorico Linux) ext2 proc, sysfs, tmpfs, usbfs Creazione di un filesystem Esempi di altri filesystems ● ● ● dos/vfat (floppy windows, chiavi usb) iso9660 (cd-rom) ntfs (windows nt/2000/xp/...) Creazione di un filesystem Come si crea un filesystem ● Il comando mkfs ~# mkfs t tipo_fs [opzioni] device ● front-end (interfaccia) che richiama i comandi specializzati per la creazione dei filesystem mkfs.ext3, mkfs.reiserfs, ecc ● le opzioni dipendono dal fs ● ~# mkreiserfs [opzioni] device Creazione di un filesystem Come si crea un filesystem ● Il comando mkfs ~# mkfs t tipo_fs [opzioni] device USARE CON CAUTELA ● esempio ~# mkfs t reiserfs /dev/sda1 ~# mkreiserfs /dev/sda1 ~# mkfs t xfs /dev/hda1 ~# mkfs t xfs /home/uzappi/mio_xfs nota: il file mio_xfs deve essere creato precedentemente Creazione di un filesystem Ridimensione del filesystem ● ● ● E' possibile ridimensionare (ampliare/ridurre) un filesystem da linea di comando La partizione sottostante al filesystem non può mai essere più piccola dello stesso filesystem Alcuni filesystem possono essere solo ampliati (es. xfs) Creazione di un filesystem Ridimensione del filesystem ● Comando resize2fs ● ● Comando resize_reiserfs ● ● allarga/restringe un fs reiser Comando xfs_growfs ● allarga/restringe un fs ext2/ext3 allarga un fs xfs (montato) Creazione di un filesystem Preparazione di una swap area ● Al pari dei fs, anche le swap aree devono essere inizializzate prima di poter essere usate ● il comando mkswap ~# mkswap [opzioni] device ● esempio ~# mkswap /dev/hda7 ~# mkswap /home/uzappi/mio_swap nota: il file mio_swap deve essere creato precedentemente Creazione di un filesystem Files utili ● Elenco dei filesystems conosciuti dal kernel in /proc/filesystems ● esempio ~$ cat /proc/filesystems Creazione di un filesystem Riepilogo ● ● ● ● ● ● Creazione di una struttura per contenere i files e le directories Elenco filesystem in Linux, Windows Comandi mkfs, mkreiserfs Ridimensionamento dei filesystems Creazione di una swap area (mkswap) File /proc/filesystems Creazione di un filesystem ● bibliografia ● ● link ● ● ● ● ● man pages comandi http://www.debian-administration.org/articles/388 http://linuxgazette.net/122/TWDT.html#piszcz http://linuxgazette.net/102/piszcz.html http://www.pluto.it/files/journal/pj0201/pjjfs.html http://lkml.org/lkml/2007/7/30/139 (it) Creazione di un filesystem domande ? Utilizzo di un filesystem In sintesi ● Per accedere ai dati (files e directories) presenti su un qualsiasi filesystem (su floppy, disco, chiavette USB, rete, ecc...) occorre “montarlo” Utilizzo di un filesystem Montaggio di un filesystem ● Il comando mount ~# mount [t fstype] [o opz] device mnt_pt ● fstype = tipo di filesystem ● opz = opzioni di mount ● device = periferica (di solito è la partizione con il fs da montare) ● mnt_pt = directory dove “attaccare” il fs ● esempio ~# mount t iso9660 o ro /dev/hdc /media/cdrom (in alcune distro si può specificare /cdrom invece di /media/cdrom) Utilizzo di un filesystem Le opzioni di mount ● Il comando mount o opz1[,opz2]... ● ● ● ● ● ● ● ro = filesystem in sola lettura rw = filesystem in lettura/scrittura remount = rimonta il filesystem noatime = non aggiorna l'access time nodiratime = vale per le directories uid=value = forza il proprietario dei files umask=value = forza i permessi (bit al contrario) Utilizzo di un filesystem Visualizzare i filesystems montati ● Il comando mount ~$ mount ● per ogni fs montato, il comando mount (senza argomenti) visualizza: ● il device ● la directory di montaggio ● il tipo di filesystem ● le opzioni di montaggio (alcune dipendono dal tipo di filesystem) Utilizzo di un filesystem Smontaggio di un filesystem ● Il comando umount ~# umount device|mount_point ● device = partizione (contenente il ● filesystem) da smontare mount_point = directory dov'è “attaccato” il filesystem da smontare ~# umount /media/cdrom (in alcune distro si può specificare /cdrom invece di /media/cdrom) Utilizzo di un filesystem Il mount point ● ● ● E' una directory (vuota) dove si attacca il filesystem Eventuali files e directories presenti sulla directory di mount point non saranno accessibili quando è montato il filesystem Attributi sul filesystem (proprietario, owner, permessi) vanno impostati a filesystem montato Utilizzo di un filesystem Mount point “vietati” ● ● Non possono diventare mount points le directories: ● /bin ● /dev (eccezione: mount dopo il boot) ● /etc ● /lib ● /sbin Queste directory devono rimanere legate al file system di root '/' e sono necessarie al boot del sistema Utilizzo di un filesystem Occupazione di un filesystem ● Il comando df (disk free) visualizza per ciascun filesystem ● ● ● ● ● ● il device la dimensione totale lo spazio occupato lo spazio disponibile la percentuale di utilizzo il mount_point Utilizzo di un filesystem Occupazione di un filesystem ● Il comando df ~$ df [khiTP] [file]... ● k = dimensioni in KB (1024 bytes) ● h = dimensioni facilmente leggibili ● i = inode totali, occupati e liberi ● T = elenca anche il tipo di fs ~$ df h . → mostra le occupazioni del fs contenente la directory corrente Utilizzo di un filesystem Occupazione di un filesystem ● Il comando df ~$ df [khiTP] [file]... ● ● ● se non è indicato nessun file, allora tutti i fs vengono visualizzati se sono indicati uno o più files, allora vengono visualizzati solo i fs contenenti i files P = forza l'output su una unica riga Utilizzo di un filesystem Occupazione di una directory ● Il comando du (disk usage) esamina lo spazio occupato da files e directories ● ● riporta lo spazio occupato dai blocchi del fs (default) esamina anche le sottodirectory (default) Utilizzo di un filesystem Occupazione di una directory ● Il comando du ~$ du [opzioni] [file]... ● s = totale di ciascun argomento ● c = totale generale ● k = dimensioni in KB ● m = dimensioni in MB ● h = dimensioni facilmente leggibili ● S = non include la dimensione delle sottodirectory Utilizzo di un filesystem Occupazione di una directory ● Il comando du ~$ du [opzioni] [file]... ● x = non esamina altri filesystem ● differenti da quello di partenza time = mostra la data di ultima modifica per ciascuna directory ~$ du hsc /etc /bin /sbin → mostra lo spazio impegnato da ciascuna directory e il totale delle 3 directories Utilizzo di un filesystem Gestione delle swap aree ● Il comando swapon attiva una o più aree di swap ~# swapon [v] [p pri] device ... ● p pri =imposta la priorità: valore da 0 (bassa) a 32767 (alta) ● Il comando swapoff disattiva una o più aree di swap ~# swapoff device ... Utilizzo di un filesystem Gestione delle swap aree ● Con il comando swapon si possono visualizzare le aree di swap attualmente attive ~# swapon s ~$ /sbin/swapon s Utilizzo di un filesystem Riepilogo ● ● ● ● ● ● ● Occorre “montare” il filesystem per poterlo usare Comandi mount, umount Considerazioni sul mount point Directories necessarie al boot Comando df (display filesystem) Comando du (disk usage) Comandi swapon, swapoff Utilizzo di un filesystem ● bibliografia ● man pages comandi Utilizzo di un filesystem domande ? Il file /etc/fstab In sintesi ● ● E' possibile montare i filesystems in modo automatico all'avvio del sistema, senza dover intervenire esplicitamente con il comando mount E' possibile delegare agli utenti il montaggio/smontaggio di alcuni fs senza che dispongano dei diritti di root (es. volumi cd-rom, floppy, chiavi usb, ...) Il file /etc/fstab Struttura del file /etc/fstab # device montaggio filesystem opzioni dump fsck ... /dev/hda1 / reiserfs defaults 0 1 /dev/hda2 /boot ext2 defaults 0 2 /dev/hda3 none swap sw 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto,ro 0 0 /dev/hdd /media/cdrom1 udf,iso9660 users,noauto,ro 0 0 ... ● Contiene le informazioni per il mount ● ● ● ● ● device mount_point filesystem opzioni di mount dump, fsck Il file /etc/fstab Comandi di montaggio, smontaggio ~# mount a ~# umount a ~# swapon a ~# swapoff a ~$ mount /media/cdrom0 ~$ mount /dev/hdc ~$ umount /media/cdrom0 Il file /etc/fstab Riepilogo ● ● ● ● Montaggio dei filesystem al boot Gli utenti (no root) possono montare i filesystem Struttura e contenuti del file /etc/fstab Comandi di montaggio e smontaggio dei filesystem e delle aree di swap Il file /etc/fstab ● bibliografia man fstab ● man mount ● man fsck ● Il file /etc/fstab domande ? Ricerca dei files In sintesi ● Spesso è necessario ricercare uno o più files all'interno di un albero di directories, conoscendo il nome o certe caratteristiche Ricerca dei files Il comando locate ● ● Permette di ricercare files e directory per nome (o una parte di esso) all'interno di predeterminati filesystems La ricerca viene effettuata leggendo uno o più “databases”, quindi risulta veloce ma non sincronizzata con il fs → Bisogna aggiornare i databases → DB di default: /var/cache/locate/locatedb ● La ricerca può essere effettuata da chiunque (non necessitano diritti sui filesystems) Ricerca dei files Il comando locate ~$ locate [opzioni] pattern... ● ● Si possono usare '*', '?', '[]' (ricordarsi di quotare con '\') Esempi: ~$ locate inittab → cerca le pathnames contenenti la stringa 'inittab' ~$ locate \*inittab\* → stessa cosa! ~$ locate /etc\*inittab → cerca la pathname che inizia con '/etc' e termina con 'inittab' Ricerca dei files Il comando locate ~$ locate [opzioni] pattern... ● Alcune opzioni di maggior uso A = ricerca pathnames aventi tutti i pattern in argomento ● b = il pattern deve essere presente nel pathname dopo l'ultima '/' ● c = conta le pathname trovate ● S = fornisce statistiche sul DB ● r = accetta regex come pattern ● Ricerca dei files L'utility updatedb ● ● ● ● ● ● Aggiorna i databases usati da locate Di solito viene lanciata via cron (ore notturne) Usa il comando find per la ricerca dei files Per default non inserisce nel DB le directories di rete (NFS, ...) e quelle temporanee (/tmp, /usr/tmp, /var/tmp) Per default non inserisce nel DB i fs nfs, proc Per eseguire updatedb bisogna avere i diritti di lettura/esecuzione (r-x) sulle directories da esplorare Ricerca dei files L'utility updatedb ● Esempio ~$ updatedb localpaths=/tmp prunepaths='' \ output=/tmp/mylocatedb → crea il DB /tmp/mylocatedb esplorando /tmp ~$ locate database=/var/cache/locate/locatedb:\ /tmp/mylocatedb /tmp\* locate → ricerca i contenuti di /tmp e locate ~$ locate database=/var/cache/locate/locatedb:\ /tmp/mylocatedb S → statistiche sui DB Ricerca dei files Il comando find ● ● ● ● Permette di ricercare files e directory per caratteristiche (nome, utente, data di modifica, ...) presenti sui filesystems montati La ricerca viene effettuata leggendo direttamente dal filesystem, quindi può risultare lenta Bisogna avere almeno i diritti in lettura ed esecuzione (r-x) sulle directories da esaminare Si possono eseguire comandi sui files e directory trovate Ricerca dei files Il comando find ● Ricerca files per nome: ~$ find ~ name miofile\* print → ricerca i files e directories con nome miofile* a partire dalla propria home directory print si può omettere (comportamento di default) ~$ find ~ iname miofile\* print → ricerca i files e directories con nome miofile* (maiuscolo/minuscolo) a partire dalla propria home directory Ricerca dei files Il comando find ● Ricerca files con date caratteristiche: ● user = appartenenti ad un utente ● group = appartenenti ad un gruppo ● mtime [+|]n = data modifica n*24h ● mmin [+|]n = data modifica n min ● atime [+|]n = data accesso n*24h ● amin [+|]n = data accesso n min ● type f|d|l|b|c|p|s = tipo di “file” Ricerca dei files Il comando find ● Si possono imporre delle limitazioni sul filesystem: ● mount|xdev = rimane sul fs ● depth = esamina il contenuto della ● ● directory e poi la directory stessa mindepth = livello min. di ricerca maxdepth = livello max. di ricerca Ricerca dei files Il comando find ● Per ogni elemento trovato da find (= soddisfa i criteri di ricerca) è possibile eseguire un comando exec = esegue il comando {} = è l'elemento trovato da find \; = termina il comando ~# find / user umby exec chmod gorwx {} \; Ricerca dei files Riepilogo ● ● ● ● Necessità di ricercare files/directories Comando locate Utility updatedb Comando find Ricerca dei files ● bibliografia man dei comandi ● man locatedb ● informazioni sul formato del database Ricerca dei files domande ? Copia di file da/verso device In sintesi ● Esiste un comando specializzato (dd) che serve per ... ● ● copiare dati/strutture da e verso devices converte e copia un file Copia di file da/verso devices Il comando dd ~$ dd if=/dev/fd0 of=floppy.img Legge/scrive un device bit a bit ● argomenti: ● if = file di input (default stdin) ● ● ● ● ● of = file di output (default stdout) bs = dimensione blocco count = numero dei blocchi skip = nr. blocchi da saltare (if) seek = nr. blocchi da saltare (of) Copia di file da/verso devices Montare un'immagine ● E' possibile montare un'immagine contenente un filesystem Esempio: per montare l'immagine del floppy copiata con dd in /floppy: ~# mount o loop floppy.img /floppy oppure ~# losetup /dev/loop/0 floppy.img ~# mount /dev/loop/0 /floppy Copia di file da/verso devices Montare un'immagine ● E' possibile montare un'immagine contenente un filesystem Esempio: Creazione di un filesystem su file ~# dd if=/dev/zero of=/usr/local/my_xfs \ bs=1M count=100 ~# mkfs t xfs /usr/local/my_xfs ~# mkdir /mnt/test_fs ~# mount o loop /usr/local/my_xfs /mnt/test_fs Copia di file da/verso devices Salvataggio del MBR ● MBR = Master boot record ● contiene informazioni sul boot ~# dd if=/dev/hda of=mbr.img bs=446 count=1 ~# dd if=/dev/sda of=mbr.img bs=446 count=1 ● per salvare anche la partition table ~# dd if=/dev/hda of=mbr.img bs=512 count=1 ~# dd if=/dev/sda of=mbr.img bs=512 count=1 ATTENZIONE: non salva i contenuti delle partizioni non salva informazioni sulle partizioni logiche NON tenere la copia dell'MBR sullo stesso disco Copia di file da/verso devices Ripristino del MBR ● ripristino del solo MBR ~# dd if=mbr.img of=/dev/hda bs=1 count=446 ● ripristino della sola partition table il MBR deve essere salvato con 512 byte ~# dd if=mbr.img of=/dev/hda bs=1 count=64 \ skip=446 seek=446 Copia di file da/verso devices Riepilogo ● ● ● ● ● Lettura/scrittura diretta su devices di ogni tipo Comando dd Montare un'immagine Salvataggio del MBR/partition table Ripristino del MBR/partition table Copia di file da/verso devices ● bibliografia ● ● link ● ● man dd http://www.cyberciti.biz/faq/howto-copy-mbr/ http://www.cyberciti.biz/tips/linux-how-tobackup-hard-disk-partition-table-mbr.html Copia di file da/verso devices domande ? Verifica dei filesystems In sintesi ● I filesystem si possono degradare a seguito di problemi HW o SW ● ● ● es: spegnimento improvviso del computer a seguito di caduta della corrente es: problemi su dischi, cavi, memoria, kernel bug, .... Necessità di verificare e correggere le strutture interne dei filesystems Verifica dei filesystems Modalità di verifica (come/quando) ● Automatica: ● alcuni filesystem (etx2/etx3) vengono verificati al momento della mount se dall'ultima verifica: viene superato il numero max. di mount ● viene superato un limite temporale ● ● Manuale: ● comando fsck lanciato da console Il filesystem da controllare deve essere smontato o montato in sola lettura Verifica dei filesystems Il comando fsck ● Il comando fsck ~# fsck [opzioni] device [ opzspec] ● front-end (interfaccia) che richiama i comandi specializzati per la verifica dei filesystem fsck.ext3, fsck.reiserfs, ecc ● le opzioni dipendono dal fs ● ~# reiserfsck [opzioni] device ~# fsck.tipofs [opzioni] device Verifica dei filesystems Il comando fsck ● opzioni ● ● ● ● N = non eseguire: mostra solo A = controlla tutti i fs elencati in /etc/fstab con il 6° campo (fsck) != 0 s = (con A) effettua il controllo in serie R = (con A) salta il controllo di / fs (magari perchè è montato in rw) Verifica dei filesystems Il comando fsck ● opzioni ● ● ● ● = inizio delle opzioni specifiche del fs p/a = ripara automaticamente il fs r = riparazione interattiva y = non richiede conferma a operatore Verifica dei filesystems Il comando tune2fs ● elenca/imposta i parametri su fs etx2/ etx3 ~# tune2fs [opzioni] device ● l = lista i contenuti ● c max_count = max. nr. di mount prima che venga effettuato un fsck ● i interval [d|m|w] = max. intervallo di tempo prima che venga effettuato un fsck ● L vol_label = imposta un nome di volume ● U UUID = imposta l'UUID (universal unique identifier) Verifica dei filesystems Il comando “tune” per altri fs ● Ogni fs ha un suo proprio comando tune e le opzioni possono essere molto differenti tra un fs ed un altro: ● ● ● ● reiserfstune xfs_admin jfs_tune In genere, l'assegnazione dell'etichetta e dell'UUID è supportata per tutti i fs di nuova generazione Verifica dei filesystems Ritrovare le partizioni perse ● Nel caso si perda la partition table e non ci sia possibilità di recuperarla, allora il comando gpart ci può fornire utili indicazioni ~# gpart [options] device ● esempio ~# gpart /dev/hda → ricerca le partizioni sul 1° HD IDE ~# gpart L → elenca le partizioni riconoscibili Verifica dei filesystems Riepilogo ● ● ● ● ● ● Necessità di verificare i filesystems Modalità di verifica Comando fsck Comando tune2fs Comandi “tune” per altri filesystems Ritrovare le partizioni perse Verifica dei filesystems ● bibliografia ● ● link ● man pages comandi http://www.marcogualmini.it/knoppix_recupero_dati.htm Verifica dei filesystems domande ? Cenni sullo startup del S.O. In sintesi ● Il kernel, dopo aver effettuato i controlli preliminari sull'hardware, monta in readonly il filesystem di root “/” ed esegue il comando init Cenni sullo startup del S.O. init ● ● ● ● E' il primo processo eseguito Il suo pid (process id) è 1 E' il padre di tutti i processi ● I nuovi processi prendono origine tramite system call fork() ed exec() Il suo comportamento è basato sul contenuto del file di configurazione /etc/inittab e di altri file (generalmente scripts di shell) Cenni sullo startup del S.O. I runlevels ● ● Sono una configurazione SW del sistema, che consentono l'esecuzione solo di un selezionato gruppo di processi Sono identificati da un numero da 0 a 6 o da S ● ● ● ● ● S → inizializza il sistema al boot 1 → modo “manutenzione” singolo utente 2-5 → modalità multi-user, dipende dalla dist. 0 → halt (il sistema viene fermato) 6 → reboot (riavvio del sistema) Cenni sullo startup del S.O. Il comando runlevel ● ● ● ● Trova il runlevel precedente e attuale Un runlevel non determinabile viene visualizzato con “N” ~# runlevel Anche who può dare informazioni sui runlevels ~$ who r who non è però idoneo per essere impiegato negli script di avvio (è nella directory /usr/bin) Cenni sullo startup del S.O. Il comando telinit (init) ● ● E' un link (simbolico) a init Serve per ... ● ● cambiare runlevel rileggere /etc/inittab (di solito dopo averlo modificato) ~# telinit Q → init riesamina /etc/inittab ~# telinit 5 → passa al runlevel 5 ~# telinit U → riesegue init senza cambiare il runlevel Cenni sullo startup del S.O. Il file /etc/inittab ● ● E' il file di configurazione di init Definisce ● qual'è il runlevel di default ● con quale modalità e quali comandi sono da eseguire al cambio di un runlevel ● quali comandi vanno eseguiti al verificarsi di certi eventi power fail ● pressione dei tasti <ctrl><alt><del> ● Cenni sullo startup del S.O. Il file /etc/inittab ● Le righe del file sono formate da: id:runlevels:action:process ● id → sequenza alfanumerica univoca fino a 4 caratteri che identifica una entry ● ● per compatibilità verso vecchi ambienti, di solito non si superano i 2 caratteri per i processi di login è consigliato mantenere il suffisso di id in corrispondenza della linea tty es: l1 per tty1 Cenni sullo startup del S.O. Il file /etc/inittab ● Le righe del file sono formate da: id:runlevels:action:process ● runlevels → elenca i runlevels per i quali process deve essere eseguito ● per alcune action, runlevels può essere ignorato Cenni sullo startup del S.O. Il file /etc/inittab ● Le righe del file sono formate da: id:runlevels:action:process ● action → indica le modalità di esecuzione di process ● ● ● initdefault → specifica il runlevel da eseguire all'avvio del sistema (process è ignorato) respawn → process viene rieseguito ogni volta che termina once → process viene eseguito una sola volta ● wait → come once, ma init attende il suo termine ● off → non fa niente Cenni sullo startup del S.O. Il file /etc/inittab ● Le righe del file sono formate da: id:runlevels:action:process ● action → indica le modalità di esecuzione di process ● boot → process da eseguire all'avvio del sistema ● bootwait → come boot, ma init attende il termine ● sysinit → come boot, ma eseguito prima di ogni boot o bootwait per boot, bootwait e sysinit, runlevels è ignorato Cenni sullo startup del S.O. Il file /etc/inittab ● Le righe del file sono formate da: id:runlevels:action:process ● action → indica le modalità di esecuzione di process ● ● ● ● ● ctrlaltdel → process viene eseguito quando init riceve il segnale SIGINT powerfail → process viene eseguito quando l'UPS segnala un'interruzione di energia elettrica powerwait → powerfail + init attende il termine powerfailnow → esecuzione di process quando l'UPS segnala che le batterie sono quasi scariche powerokwait → process viene eseguito quando l'UPS segnala il ritorno di energia elettrica Cenni sullo startup del S.O. Il file /etc/inittab ● Le righe del file sono formate da: id:runlevels:action:process ● process → indica il processo da eseguire ● può comprendere evenutali argomenti da passare al processo Cenni sullo startup del S.O. Standard BSD vs. System V ● Il sistema di avvio e della gestione dei runlevels varia moltissimo tra i 2 modelli di riferimento ● ● BSD (Berkeley Software Distribution) (es: Slackware) System V (es: Debian, SUSE, Red Hat) Cenni sullo startup del S.O. Standard BSD vs. System V ● Modello BSD (Berkeley Software Distribution) (es: Slackware) ● Ciascun runlevel usa uno script differente situato di solito nella directory /etc/rc.d ● E' difficile gestire gli avvii dei servizi per ciascun runlevel ● Un servizio può essere disabilitato per tutti i runlevels, togliendo il permesso di esecuzione dallo script richiamato Cenni sullo startup del S.O. Standard BSD vs. System V ● Modello System V (es: Debian, SUSE, Red Hat) ● Ciascun runlevel usa uno stesso script (es: /etc/init.d/rc) ● I servizi sono attivati/fermati in base al contenuto di directory diverse a seconda del runlevel ● Facilità di configurazione. E' possibile attivare/disattivare un servizio a piacere per ciascun runlevel Cenni sullo startup del S.O. init secondo System V (Debian) ● Funzionamento basato su: ● file /etc/inittab (già esaminato) configurazione di /sbin/init directory /etc/init.d ● ● contiene script di avvio/arresto servizi directories /etc/rcX.d (X = 0,1,2...6,S) ● specificano l'ordine di arresto e di avvio dei servizi per ciascun runlevel ● ● Cenni sullo startup del S.O. Directory /etc/init.d ● ● Contiene scripts richiamati da init ● rcS → prima fase di avvio del sistema ● rc → gestisce l'esecuzione dei servizi al cambio del runlevel Contiene scripts di avvio/arresto dei servizi ● richiamati (indirettamente) da /etc/init.d/rc ● richiamati manualmente ~# /etc/init.d/mysql start → avvia il DB mysql ~# /etc/init.d/mysql stop → arresta il DB mysql ~# /etc/init.d/mysql restart Cenni sullo startup del S.O. Directories /etc/rc?.d ● ● Contengono links agli scripts in /etc/init.d (avvio/arresto servizi) ● I links K[09][09]servizio arrestano ('K'ill) i servizi ● I links S[09][09]servizio avviano ('S'tart) i servizi Lo script /etc/init.d/rc esamina un runlevel (es: /etc/rc2.d per il runlevel 2) ● I servizi vengono arrestati ● comandi K[09][09]servizio stop ● I servizi vengono avviati ● comandi S[09][09]servizio start Cenni sullo startup del S.O. Directories /etc/rc?.d ● L'ordine di esecuzione dei comandi K[09][09]servizio stop S[09][09]servizio start è dato dall'ordine numerico delle 2 cifre che seguono le lettere K o S (priorità) /etc/rc2.d/S19mysql → ../init.d/mysql (link allo script per l'arresto/avvio di mysql) Cenni sullo startup del S.O. Directories /etc/rc?.d ● ● Per configurare che un servizio si avvii o si arresti al raggiungimento di un runlevel, è sufficiente cambiare il nome del link nella directory rc?.d Quando si cambia l'avvio in arresto o viceversa, è buona norma impostare la priorità (le 2 cifre che seguono S o K) con un valore di 100 – la priorità attuale Esempio: ~# ls /etc/rc2.d/*mysql (supponendo che torni /etc/rc2.d/S19mysql ...) ~# mv i /etc/rc2.d/S19mysql /etc/rc2.d/K81mysql Cenni sullo startup del S.O. Directories /etc/rc?.d ● Esempio: Supponendo di aver creato uno script: ● in grado di attivare/fermare un servizio ● che interpreti almeno le opzioni start e stop ● di averlo inserito in /etc/init.d allora, in ciascuna directory /etc/rcX.d (con X 0,...,6) va creato uno dei 2 link: ~# cd /etc/rcX.d ln s ../init.d/MioServizio SxxMioServizio ln s ../init.d/MioServizio KyyMioServizio (yy = 100xx) Cenni sullo startup del S.O. Utilities per gestire /etc/rcX.d ● In alternativa alla gestione manuale dei links nelle directories /etc/rcX.d sono disponibili dei tools ● L'utility sysvrcconf ● L'utility bum (boot-up manager) Cenni sullo startup del S.O. L'utility sysv-rc-conf ● ● ● ● Interfaccia carattere (curses) Scritta in perl Si può attivare/disattivare un servizio per ciascun runlevel Con il parametro -p si può impostare anche la priorità Esempio: ~# sysvrcconf p Cenni sullo startup del S.O. L'utility bum (boot-up manager) ● ● Intefaccia grafica Più bella di sysv-rc-conf ma permette meno controllo nell'impostazione dell'attivazione dei servizi per ciascun runlevel Cenni sullo startup del S.O. Upstart: il futuro di init ● In alcune distribuzioni (ubuntu) al posto di init viene installato upstart ● ● ● Viene eseguito ancora come /sbin/init Il file di configurazione /etc/inittab è sostituito con i files presenti in /etc/event.d Compatibile con gli script System V Cenni sullo stratup del S.O. Riepilogo ● ● ● ● ● ● ● ● ● init è il primo processo eseguito runlevels Comando runlevel Comando telinit (init) File /etc/inittab Standard BSD Berkeley vs. System V Directories /etc/init.d e /etc/rc?.d Utilities sysv-rc-conf, bum Cenno su Upstart Cenni sullo startup del S.O. ● bibliografia man init ● man telinit ● man inittab ● ● link ● ● ● ● http://a2.pluto.it/a2119.htm http://slackware.it/docs/configurazione.php#5 http://it.wikipedia.org/wiki/Init http://it.wikipedia.org/wiki/Upstart Cenni sullo startup del S.O. domande ? LEZIONE 5 domande ? corso linux livello 1 s egue 2° p ar te. . . 2009