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 go­rwx {} \;
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 [­­ opz­spec]
●
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[0­9][0­9]servizio arrestano ('K'ill) i servizi
●
I links S[0­9][0­9]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[0­9][0­9]servizio stop
● I servizi vengono avviati
● comandi S[0­9][0­9]servizio start
Cenni sullo startup del S.O.
Directories /etc/rc?.d
●
L'ordine di esecuzione dei comandi
K[0­9][0­9]servizio stop
S[0­9][0­9]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 = 100­xx)
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 sysv­rc­conf
● 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:
~# sysv­rc­conf ­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