Indice
In questa sezione vengono descritti suggerimenti base per configurare e gestire il sistema, per lo più dalla console.
screen(1) è uno strumento molto utile per permettere alle persone di accedere a siti remoti attraverso una connessione non affidabile o intermittente, dato che supporta connessioni interrotte.
Tabella 9.1. Elenco di programmi che supportano connessioni di rete interrotte
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
screen |
V:89, I:323 | 952 | multiplexer per terminale con emulazione di terminale VT100/ANSI |
screen(1) non permette solamente il funzionamento di una finestra di terminale con processi multipli, ma permette anche ai processi in shell remote di sopravvivere a connessioni interrotte. Quello che segue è un tipico scenario di uso di screen(1).
Si fa il login in una macchina remota.
Si avvia screen
in una console singola.
Si eseguono svariati programmi in finestre screen
create
con ^A c
("Control-A" seguito da "c").
Ci si sposta tra le svariate finestre screen
create con
^A n
("Control-A" seguito da "n").
All'improvviso si ha la necessità di lasciare il terminale, ma non si vuole perdere il lavoro attivo e si vuole mantenere la connessione.
Si può scollegare la sessione
screen
in uno qualsiasi dei metodi seguenti.
Scollegare brutalmente la connessione di rete
Digitare ^A d
("Control-A" seguito da "d") e fare
manualmente il log out dalla connessione remota.
Digitare ^A DD
("Control-A" seguito da "DD") per far si
che screen
si scolleghi e faccia il log out.
Ci si ricollega alla stessa macchina remota (anche da un terminale diverso).
Si avvia screen
con "screen -r
".
screen
magicamente ricollega tutte le finestre
screen
precedente con tutti i programmi in esecuzione
attivi.
![]() |
Suggerimento |
---|---|
Con |
In una sessione screen
tutto l'input da tastiera viene
inviato alla finestra attuale, tranne per le combinazioni di tasti per i
comandi. Tutte le combinazioni di tasti per i comandi di
screen
vengono inserite digitando ^A
("Control-A") più un singolo tasto [più eventuali parametri]. Ecco alcune
combinazioni di tasti importanti da ricordare.
Tabella 9.2. Elenco di associazioni di tasti per screen
azione associata | significato |
---|---|
^A ?
|
mostra una schermata di aiuto (visualizza le associazioni di tasti) |
^A c
|
crea una nuova finestra e si sposta in essa |
^A n
|
va alla finestra successiva |
^A p
|
va alla finestra precedente |
^A 0
|
va alla finestra numero 0 |
^A 1
|
va alla finestra numero 1 |
^A w
|
mostra l'elenco delle finestre |
^A a
|
invia Ctrl-A alla finestra attuale come input da tastiera |
^A h
|
scrive una copia della schermata della finestra attuale in un file |
^A H
|
inizia/termina la registrazione dell'attività della finestra attuale in un file |
^A ^X
|
blocca il terminale (protetto da password) |
^A d
|
scollega la sessione screen dal terminale |
^A DD
|
scollega la sessione di screen e fa il log out |
Vedere screen(1) per i dettagli.
Molti programmi registrano le proprie attività nella directory
"/var/log/
".
Il demone del registro del kernel: klogd(8)
Il demone del registro di sistema: rsyslogd(8)
Vedere Sezione 3.5.9, «I messaggi di sistema» e Sezione 3.5.10, «I messaggi del kernel».
Quelli che seguono sono alcuni analizzatori di registro degni di nota
("~Gsecurity::log-analyzer
" in
aptitude(8)).
Tabella 9.3. Elenco di analizzatori del registro di sistema
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
logwatch |
V:26, I:29 | 2018 | analizzatore di registro scritto in Perl con un bell'output |
fail2ban |
V:65, I:74 | 414 | strumento per interdire IP che causano errori di autenticazione multipli |
analog |
V:9, I:147 | 3187 | analizzatore del registro di server web |
awstats |
V:20, I:30 | 3101 | analizzatore potente e ricco di funzionalità per registro di server web |
sarg
|
V:13, I:13 | 921 | generatore di rapporti sull'analisi di squid |
pflogsumm |
V:2, I:5 | 133 | strumento per riassunti delle voci di registro di Postfix |
syslog-summary |
V:2, I:13 | 84 | riassume i contenuti di un file di registro di sistema |
lire
|
V:1, I:1 | 5040 | analizzatore di file di registro e generatore di rapporti ricco di funzionalità |
fwlogwatch |
V:0, I:1 | 440 | analizzatore del registro del firewall |
squidview |
V:0, I:4 | 198 | monitora e analizza i file access.log di squid |
visitors |
V:0, I:2 | 293 | analizzatore veloce del registro di server web |
swatch |
V:0, I:1 | 112 | visualizzatore di file di registro con corrispondenze con espressioni regolari, evidenziazione ed eventi |
crm114 |
V:0, I:1 | 1066 | Controllable Regex Mutilator e filtro per spam (CRM114) |
icmpinfo |
V:0, I:1 | 84 | interpreta i messaggi ICMP |
![]() |
Nota |
---|---|
CRM114 fornisce un'infrastruttura basata su un linguaggio per scrivere filtri fuzzy con la libreria per espressioni regolari TRE. Il suo utilizzo più comune è come filtro per la posta spazzatura, ma può anche essere usato come analizzatore di registro. |
Il semplice uso di script(1) (vedere Sezione 1.4.9, «Registrare le attività della shell») per registrare l'attività della shell produce un file con caratteri di controllo. Ciò può essere evitato usando col(1) nel modo seguente.
$ script Script è avviato, il file è typescript
Fare tutto quello che si vuole … e poi premere Ctrl-D
per
uscire da script
.
$ col -bx <typescript >filepulito $ vim filepulito
Se script
non è disponibile (per esempio, durante il
processo di avvio in initramfs), si può usare invece il comando seguente.
$ sh -i 2>&1 | tee typescript
![]() |
Suggerimento |
---|---|
Alcuni |
![]() |
Suggerimento |
---|---|
Si può usare
screen(1)
con " |
![]() |
Suggerimento |
---|---|
È possibile usare
emacs(1)
con " |
Sebbene gli strumenti di paginazione, come more(1) e less(1) (vedere Sezione 1.4.5, «Il paginatore») e gli strumenti personalizzati per l'evidenziazione e la formattazione (vedere Sezione 11.1.8, «Evidenziare e formattare dati in puro testo») possano mostrare il testo in un modo piacevole, gli editor generici (vedere Sezione 1.4.6, «L'editor di testo») sono più versatili e personalizzabili.
![]() |
Suggerimento |
---|---|
Per
vim(1)
e la sua modalità per paginatore, ossia
view(1),
" |
Il formato predefinito per la visualizzazione delle date e degli orari per
il comando "ls -l
" dipende dalla localizzazione (vedere Sezione 1.2.6, «Orari» per il valore). Si fa dapprima riferimento alla
variabile "$LANG
" che può essere scavalcata dalla
variabile "$LC_TIME
".
Il formato effettivo di visualizzazione predefinito per ciascuna
localizzazione dipende dalla versione della libreria C (il pacchetto
libc6
) usata. Differenti rilasci di Debian hanno cioè
valori predefiniti diversi.
Se si desidera veramente personalizzare questo formato di visualizzazione
delle date e degli orari, oltre a ciò che è fatto con la localizzazione, si deve impostare il valore dello stile degli orari con l'opzione
"--time-style
" o con il valore di
"$TIME_STYLE
" (vedere
ls(1),
date(1),
"info coreutils 'ls invocation'
").
Tabella 9.4. Esempi di visualizzazione di date e orari per il comando "ls
-l
" per wheezy
valore dello stile per gli orari | localizzazione | visualizzazione di data e ora |
---|---|---|
iso
|
qualsiasi |
01-19 00:15
|
long-iso
|
qualsiasi |
2009-01-19 00:15
|
full-iso
|
qualsiasi |
2009-01-19 00:15:16.000000000 +0900
|
locale
|
C
|
Jan 19 00:15
|
locale
|
en_US.UTF-8
|
Jan 19 00:15
|
locale
|
es_ES.UTF-8
|
ene 19 00:15
|
+%d.%m.%y %H:%M
|
qualsiasi |
19.01.09 00:15
|
+%d.%b.%y %H:%M
|
C o en_US.UTF-8
|
19.Jan.09 00:15
|
+%d.%b.%y %H:%M
|
es_ES.UTF-8
|
19.ene.09 00:15
|
![]() |
Suggerimento |
---|---|
Si può evitare di digitare lunghe opzioni nella riga di comando usando
alias, per esempio " |
![]() |
Suggerimento |
---|---|
Per i formati iso viene seguito lo standard ISO 8601. |
L'output inviato a schermo dalla shell nella maggior parte dei terminali
moderni può essere colorato usando codici di
escape ANSI (vedere
"/usr/share/doc/xterm/ctlseqs.txt.gz
").
Per esempio, provare a fare quanto segue.
$ RED=$(printf "\x1b[31m") $ NORMAL=$(printf "\x1b[0m") $ REVERSE=$(printf "\x1b[7m") $ echo "${RED}TESTO-ROSSO${NORMAL} ${REVERSE}TESTO-IN-NEGATIVO${NORMAL}"
I comandi colorati sono comodi per ispezionare il loro output in modo
interattivo. Nel mio file "~/.bashrc
" io includo quanto
segue.
if [ "$TERM" != "dumb" ]; then eval "`dircolors -b`" alias ls='ls --color=always' alias ll='ls --color=always -l' alias la='ls --color=always -A' alias less='less -R' alias ls='ls --color=always' alias grep='grep --color=always' alias egrep='egrep --color=always' alias fgrep='fgrep --color=always' alias zgrep='zgrep --color=always' else alias ll='ls -l' alias la='ls -A' fi
Questo uso degli alias limita gli effetti colorati all'uso interattivo dei
comandi. Ha il vantaggio, rispetto all'esportazione della variabile
d'ambiente "export GREP_OPTIONS='--color=auto'
", che i
colori possono essere visti in programmi di paginazione come
less(1).
Se si desidera eliminare i colori quando si invia l'output con una pipe ad
altri comandi, usare nell'esempio precedente per
"~/.bashrc
" "--color=auto
".
![]() |
Suggerimento |
---|---|
Questi alias di colorazione possono essere disattivati nell'ambiente
interattivo invocando la shell con il comando " |
È possibile registrare le attività dell'editor per ripetere azioni complesse.
Per vim fare nel modo seguente.
"qa
": avviare la registrazione dei caratteri digitati in
un registro chiamato "a
".
… attività nell'editor
"q
": terminare la registrazione dei caratteri digitati.
"@a
": eseguire il contenuto del registro
"a
".
Per Emacs fare nel modo seguente.
"C-x (
": iniziare la definizione di una macro da
tastiera.
… attività nell'editor
"C-x )
": terminare la definizione di una macro da
tastiera.
"C-x e
": eseguire la definizione di una macro da
tastiera.
Ci sono alcuni modi per registrare l'immagine grafica di un'applicazione X,
incluso il display di un xterm
.
Tabella 9.5. Elenco di strumenti di manipolazione di immagini grafiche
pacchetto | popcon | dimensione | comando |
---|---|---|---|
xbase-clients |
I:372 | 62 | xwd(1) |
gimp
|
V:124, I:468 | 15578 | menu della GUI |
imagemagick |
V:228, I:500 | 419 | import(1) |
scrot
|
V:3, I:15 | 80 | scrot(1) |
Esistono strumenti specializzati per registrare i cambiamenti nei file di configurazione con l'aiuto del sistema DVCS.
Tabella 9.6. Elenco di pacchetti per registrare la cronologia della configurazione in VCS
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
etckeeper |
V:19, I:23 | 243 | archivia i file di configurazione ed i loro metadati con Git (predefinito), Mercurial o Bazaar (nuovo) |
changetrack |
V:1, I:1 | 148 | archivia i file di configurazione con RCS (vecchio) |
Io raccomando l'uso del pacchetto etckeeper
con
git(1)
che mette l'intera directory "/etc
" sotto il controllo di
VCS. La sua guida di installazione ed il suo tutorial si trovano in
"/usr/share/doc/etckeeper/README.gz
".
Fondamentalmente, l'esecuzione di "sudo etckeeper init
"
inizializza il repository git per "/etc
", esattamente
come nel procedimento spiegato in Sezione 10.9.5, «Git per registrare la cronologia della configurazione» ma con speciali script
attivati da eventi per impostazioni più accurate.
Quando si cambia la configurazione, si può usare normalmente git(1) per registrare i cambiamenti. Esso registra automaticamente i cambiamenti in modo comodo anche ogni volta che vengono eseguiti i comandi di gestione dei pacchetti.
![]() |
Suggerimento |
---|---|
Si può sfogliare la cronologia dei cambiamenti di " |
L'avvio del sistema con un CD live Linux o un CD del debian-installer in modalità ripristino rende semplice la riconfigurazione dell'archiviazione dei dati sul dispositivo di avvio. Vedere anche Sezione 10.3, «I dati binari».
L'uso dello spazio su disco può essere valutato con i programmi forniti dai
pacchetti mount
, coreutils
e
xdu
:
mount(8) mostra tutti i file system (= dischi) montati.
df(1) mostra l'uso dello spazio su disco da parte dei file system.
du(1) mostra l'uso dello spazio su disco da parte dell'albero di directory.
![]() |
Suggerimento |
---|---|
Si può indirizzare l'output di
du(8)
a
xdu(1x)
per far sì che che produca la sua rappresentazione grafica e interattiva,
usando " |
Per la configurazione del partizionamento dei dischi, benché fdisk(8) sia considerato lo strumento standard, parted(8) merita un po' di attenzione. "Dati di partizionamento del disco", "tabella delle partizioni", "mappa delle partizioni" e "etichetta del disco" sono tutti sinonimi.
La maggior parte dei PC usa il classico schema basato su MBR (Master Boot Record) per contenere i dati sul partizionamento del disco nel primo settore, cioè il settore LBA 0 (512 byte).
![]() |
Nota |
---|---|
Alcuni PC più recenti con EFI (Extensible Firmware Interface), compresi i Mac basati su Intel, usano lo schema GPT (GUID Partition Table) per contenere i dati sul partizionamento del disco non nel primo settore. |
Sebbene fdisk(8) sia stato lo strumento standard per il partizionamento dei dischi, parted(8) lo sta sostituendo.
Tabella 9.7. Elenco di pacchetti di gestione delle partizioni dei dischi
pacchetto | popcon | dimensione | GPT | descrizione |
---|---|---|---|---|
util-linux |
V:897, I:999 | 1603 | Non supportato | utilità di sistema varie inclusi fdisk(8) e cfdisk(8) |
parted |
V:16, I:161 | 267 | Supportato | programma GNU Parted per il ridimensionamento delle partizioni dei dischi |
gparted |
V:28, I:174 | 6045 | Supportato |
editor delle partizioni di GNOME basato su libparted
|
gnu-fdisk |
V:3, I:15 | 215 | Supportato | sostituti GNU in console di fdisk(8), cfdisk(8), ecc. |
gdisk
|
V:0, I:7 | 736 | Supportato | editor delle partizioni per i dischi GPT |
gptsync |
V:0, I:2 | 72 | Supportato | sincronizza una tabella delle partizioni MBR classica con una GPT |
kpartx |
V:12, I:21 | 104 | Supportato | programma per creare la mappatura a device per le partizioni |
![]() |
Attenzione |
---|---|
Sebbene parted(8) sostenga di creare e ridimensionare anche i file system, è più sicuro fare queste cose usando gli strumenti specializzati meglio mantenuti, come mkfs(8) (mkfs.msdos(8), mkfs.ext2(8), mkfs.ext3(8), …) e resize2fs(8). |
![]() |
Nota |
---|---|
Per poter commutare tra GPT e MBR, è necessario cancellare direttamente i primi pochi
blocchi del contenuto del disco (vedere Sezione 10.3.6, «Pulire il contenuto di file») e usare " |
Anche se la riconfigurazione delle partizioni o l'ordine di attivazione di supporti di archiviazione removibili può portare ad avere nomi diversi per le partizioni, è possibili accedere ad esse in modo coerente. Ciò è utile anche se si hanno più dischi ed il BIOS non assegna loro un nome di dispositivo costante.
mount(8)
con l'opzione "-U
" può montare un device a blocchi usando
l'UUID invece di usare il suo nome di file come
"/dev/sda3
".
Il file "/etc/fstab
" (vedere
fstab(5))
può usare gli UUID.
Anche i bootloader (Sezione 3.3, «Stadio 2: il bootloader») possono usare gli UUID.
![]() |
Suggerimento |
---|---|
Si può scoprire l'UUID di un device a blocchi speciale con blkid(8). |
![]() |
Suggerimento |
---|---|
I nodi di device dei dispositivi come i supporti di archiviazione rimovibili possono essere resi statici usando regole udev, se necessario. Vedere Sezione 3.5.11, «Il sistema udev». |
Per il file system ext3, il pacchetto
e2fsprogs
fornisce gli strumenti seguenti.
I comandi
mkfs(8)
e
fsck(8)
sono forniti dal pacchetto e2fsprogs
come front-end per
vari programmi dipendenti dal file syste (mkfs.tipofs
e
fsck.tipofs
). Per il file system ext3 , sono
mkfs.ext3(8)
e
fsck.ext3(8)
(sono un collegamento fisico a
mke2fs(8)
e
e2fsck(8)).
Sono disponibili comandi simili per ciascun file system supportato da Linux.
Tabella 9.8. Elenco di pacchetti di gestione dei file system
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
e2fsprogs |
V:598, I:999 | 2364 | utilità per i file system ext2/ext3/ext4 |
reiserfsprogs |
V:10, I:43 | 1200 | utilità per i file system Reiserfs |
dosfstools |
V:49, I:508 | 201 | utilità per i file system FAT (Microsoft: MS-DOS, Windows) |
xfsprogs |
V:23, I:86 | 3078 | utilità per i file system XFS (SGI: IRIX) |
ntfs-3g |
V:187, I:485 | 1463 | utilità per i file system NTFS (Microsoft: Windows NT, …) |
jfsutils |
V:3, I:19 | 1024 | utilità per i file system JFS (IBM: AIX, OS/2) |
reiser4progs |
V:0, I:6 | 1296 | utilità per i file system Reiser4 |
hfsprogs |
V:0, I:9 | 317 | utilità per i file system HFS e HFS Plus (Apple: Mac OS) |
btrfs-tools |
V:11, I:21 | 2250 | utilità per i file system Btrfs |
zerofree |
V:1, I:12 | 14 | programma per impostare a 0 i blocchi liberi in file system ext2/3 |
![]() |
Suggerimento |
---|---|
Il file system Ext4 è il predefinito per il sistema Linux e il suo uso è caldamente raccomandato a meno che non sia abbiano specifiche ragioni per non farlo. |
![]() |
Suggerimento |
---|---|
Il file system Btrfs è disponibile nel kernel
Linux 3.2 (Debian |
![]() |
Avvertimento |
---|---|
Non si dovrebbe ancora usare il file system Btrfs per i propri dati importanti prima che abbia la funzionalità fsck(8) live in spazio kernel e il supporto nel boot loader. |
![]() |
Suggerimento |
---|---|
Alcuni strumenti permettono l'accesso a file system non supportati del kernel Linux (vedere Sezione 10.3.2, «Manipolare file senza montare i dischi»). |
In un sistema Linux, il comando mkfs(8) crea i file system ed il comando fsck(8) fornisce funzioni di controllo dell'integrità e di riparazione dei file system.
![]() |
Attenzione |
---|---|
In generale l'esecuzione di |
![]() |
Suggerimento |
---|---|
Per vedere i risultati del comando
fsck(8)
avviato dallo script di avvio, controllare i file in
" |
![]() |
Suggerimento |
---|---|
Per forzare l'esecuzione del comando
fsck(8)
in modo sicuro su tutti i file system, compreso il file system root, al
prossimo avvio usare " |
La configurazione statica di base del file system è fornita da
«/etc/fstab
». Ad esempio,
# <file system> <punto di mount> <tipo> <opzioni> <dump> <pass> proc /proc proc defaults 0 0 UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 noatime,errors=remount-ro 0 1 UUID=817bae6b-45d2-5aca-4d2a-1267ab46ac23 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
![]() |
Suggerimento |
---|---|
Per identificare un dispositivo a blocchi si può usare il suo UUID (vedere Sezione 9.3.3, «Accedere alle partizioni usando UUID») invece del normale nome di
device a blocchi quale « |
Le prestazioni e le caratteristiche di un file system possono essere ottimizzate usando per esso opzioni per il montaggio (vedere fstab(5) e mount(8)).Alcune opzioni importanti sono le seguenti.
L'opzione "defaults
" implica le opzioni predefinite:
"rw,suid,dev,exec,auto,nouser,async
". (Uso generico)
L'opzione "noatime
" o "relatime
" è
molto efficace nel velocizzare l'accesso in lettura. (Uso generico)
L'opzione "user
" permette ad un normale utente di montare
il file system. Questa opzione implica la combinazione di opzioni
"noexec,nosuid,nodev
". (Uso generico, usato per CD e
floppy)
La combinazione di opzioni "noexec,nodev,nosuid
" è usata
per migliorare la sicurezza. (Uso generico)
L'opzione "noauto
" limita il montaggio solamente a quando
esplicitamente richiesto. (Uso generico)
L'opzione "data=journal
" per ext3fs può migliorare la
salvaguardia dell'integrità dei dati contro interruzioni dell'alimentazione
a prezzo della perdita di un po' di velocità in scrittura.
![]() |
Suggerimento |
---|---|
Per utilizzare una modalità di journaling non predefinita per il file system
root, è necessario fornire i parametri di avvio del kernel (vedere Sezione 3.3, «Stadio 2: il bootloader»), ad esempio
" |
Le caratteristiche di un file system possono essere ottimizzate attraverso il suo superblocco usando il comando tune2fs(8).
L'esecuzione di "sudo tune2fs -l /dev/hda1
" mostra il
contenuto del superblocco del file system in "/dev/hda1
".
L'esecuzione di "sudo tune2fs -c 50 /dev/hda1
" cambia per
"/dev/hda1
" la frequenza dei controlli dei file system
(l'esecuzione di fsck
all'avvio) a 50 avvii.
L'esecuzione di "sudo tune2fs -j /dev/hda1
" aggiunge la
funzionalità di journaling al file system in "/dev/hda1
",
cioè converte il file system da ext2 a ext3. (Eseguire questo comando su file system non
montati.)
L'esecuzione di "sudo tune2fs -O extents,uninit_bg,dir_index
/dev/hda1 && fsck -pf /dev/hda1
" converte il filesystem in
"/dev/hda1
" da ext3 a ext4. (Eseguire questo comando su file system non
montati.)
![]() |
Avvertimento |
---|---|
La conversione del file system del dispositivo di avvio al file system ext4 dovrebbe essere evitato fino a che il boot loader GRUB non supporti bene il file system ext4 e non sia stata installata la versione 2.6.30, o una più recente, del kernel Linux. |
![]() |
Avvertimento |
---|---|
Prima di giocare con la configurazione dei dischi controllare il proprio hardware e leggere la pagina man di hdparam(8), perché è una cosa piuttosto pericolosa per l'integrità dei dati. |
Si può testare la velocità di accesso ai dischi di un disco rigido, ad
esempio "/dev/hda
" con "hdparm -tT
/dev/hda
". È possibile velocizzare alcuni dischi fissi connessi
con (E)IDE con "hdparm -q -c3 -d1 -u1 -m16 /dev/hda
" che
abilita il "supporto (E)IDE per I/O a 32 bit", l'uso dell'opzione
"using_dma", imposta l'opzione "interrupt-unmask" e imposta l'"I/O di
settori multipli a 16" (pericoloso!).
Si possono testare le capacità della cache in scrittura di un disco fisso,
ad esempio "/dev/sda
", con "hdparm -W
/dev/sda
". Si può disabilitare la funzionalità di cache in
scrittura con "hdparm -W 0 /dev/sda
".
Potrebbe essere possibile leggere CDROM masterizzati male in unità CD-ROM
moderne ad alta velocità rallentandole con "setcd -x 2
".
Le prestazioni e l'usura dei dischi delle unità a stato solido (SSD) possono essere ottimizzate nel modo seguente.
Usare il kernel Linux più recente (>= 3.2).
Ridurre le scritture su disco per gli accessi in lettura.
Impostare l'opzione di montaggio "noatime
" o
"relatime
" in /etc/fstab
.
Abilitare il comando TRIM.
Abilitare lo schema di allocazione dello spazio su disco ottimizzato SSD.
Impostare l'opzione di mountaggio "ssd
" in
/etc/fstab
per Btrfs.
Fare sì che il sistema muova tutti i dati su disco ogni 10 minuti sui PC portatili.
Impostare l'opzione di montaggio "commit=600
" in
/etc/fstab
. Vedere
fstab(5).
Impostare pm-utils in modo che usi la modalità laptop-mode anche quando collegato alla rete elettrica. Vedere Debian BTS #659260.
![]() |
Avvertimento |
---|---|
Modificare l'intervallo di scrittura dei dati dai normali 5 secondi a 10 minuti rende i dati vulnerabili in caso di mancanza di corrente. |
Con il demone smartd (8) è possibile monitorare e registrare i dischi fissi che sono conformi a SMART.
Installare il pacchetto smartmontools
.
Identificare i dispositivi dei dischi fissi usando df(1).
Si supponga che uno dei dispositivi dei dischi fissi da monitorare sia
"/dev/hda
".
Controllare l'output di "smartctl -a /dev/hda
" per vedere
se la funzionalità SMART è veramente abilitata.
Se non la è, abilitarla con "smartctl -s on -a /dev/hda
".
Abilitare l'esecuzione del demone smartd(8) nel modo seguente.
Rimuovere il carattere iniziale di commento dalla riga
"start_smartd=yes
" nel file
"/etc/default/smartmontools
".
Riavviare il demone
smartd(8)
con il comando "sudo /etc/init.d/smartmontools restart
".
![]() |
Suggerimento |
---|---|
Il demone
smartd(8)
può essere personalizzato con il file |
Le applicazioni creano file temporanei normalmente nella directory di
memorizzazione temporanea «/tmp
». Se
«/tmp
» non contiene abbastanza spazio, si può specificare
una directory di memorizzazione temporanea usando la variabile
$TMPDIR
per i programmi che si comportano in modo
corretto.
Le partizioni create al momento dell'installazione su LVM (Logical Volume Manager (funzionalità di Linux) possono essere facilmente ridimensionate concatenando ad esse delle estensioni o suddividendo le loro estensioni su dispositivi di archiviazione multipli senza riconfigurazioni importanti del sistema.
![]() |
Attenzione |
---|---|
L'uso del sistema LVM attuale può diminuire le garanzie contro la corruzione del file system offerte dai file system con journaling, come ext3fs, a meno di sacrificare le prestazioni di sistema disabilitando la cache in scrittura dei dischi fissi. |
Se è disponibile una nuova partizione vuota (per esempio
"/dev/sdx
"), la si può formattare con
mkfs.ext3(1)
e montarla con
mount(8)
in una directory in cui è necessario avere più spazio. (È necessario copiare
il contenuto originale della directory.)
$ sudo mv dir-da-usare vecchia-dir $ sudo mkfs.ext3 /dev/sdx $ sudo mount -t ext3 /dev/sdx dir-da-usare $ sudo cp -a vecchia-dir/* dir-da-usare $ sudo rm -rf vecchia-dir
![]() |
Suggerimento |
---|---|
In alternativa si può montare un file immagine vuoto del disco (vedere Sezione 10.2.5, «Creare un file con immagine di disco vuoto») come device loop (vedere Sezione 10.2.3, «Montare un file con un'immagine di disco»). Il reale uso del disco cresce mano a mano che vengono archiviati i dati. |
Se è disponibile una directory vuota (ad esempio
"/percorso/della/dir-vuota
") in un'altra partizione con
spazio disponibile, si può, usando mount(8) con l'opzione
"--bind
", montarla in una directory (ad esempio
"dir-di-lavoro
") dove è necessario più spazio.
$ sudo mount --bind /percorso/della/dir-vuota dir-di-lavoro
![]() |
Suggerimento |
---|---|
Questo è un metodo deprecato. Usare invece Sezione 9.3.14, «Espandere lo spazio di archiviazione utilizzabile montando un collegamento ad un'altra directory», se possibile. |
Se è disponibile una directory vuota (ad esempio
"/percorso/della/dir-vuota
" in un'altra partizione con
spazio disponibile, si può creare un collegamento simbolico alla directory
con
ln(8).
$ sudo mv dir-da-usare vecchia-dir $ sudo mkdir -p /percorso/della/dir-vuota $ sudo ln -sf /percorso/della/dir-vuota dir-da-usare $ sudo cp -a vecchia-dir/* dir-da-usare $ sudo rm -rf vecchia-dir
![]() |
Avvertimento |
---|---|
Non usare un "collegamento simbolico ad una directory" per le directory
gestite dal sistema, come " |
![]() |
Attenzione |
---|---|
Certo software può non funzionare bene con un "collegamento simbolico ad una directory". |
Se è disponibile dello spazio utilizzabile in un'altra partizione (ad
esempio "/percorso/della/
"), si può creare in essa una
directory e impilarla nella directory in cui si ha bisogno di spazio usando
aufs.
$ sudo mv dir-da-usare vecchia-dir $ sudo mkdir dir-da-usare $ sudo mkdir -p /percorso/della/dir-vuota $ sudo mount -t aufs -o br:/percorso/della/dir-vuota:vecchia-dir none dir-da-usare
![]() |
Attenzione |
---|---|
Non è una buona idea usare aufs per archiviazione di dati a lungo termine, dato che è uno strumento in fase di sviluppo e cambiamenti nella sua struttura potrebbero causare problemi. |
Avendo l'accesso fisico alla macchina, chiunque può facilmente ottenere privilegi di root e accedere a tutti i file nel PC (vedere Sezione 4.7.4, «Rendere sicura la password di root»). Ciò significa che il sistema delle password di login non può mettere al sicuro i dati privati e sensibili contro un possibile furto del PC. Per farlo deve essere usata una tecnologia di cifratura dei dati. Sebbene GNU Privacy Guard (vedere Sezione 10.4, «Infrastruttura di sicurezza dei dati») possa cifrare file, richiede un po' di lavoro da parte dell'utente.
dm-crypt e eCryptfs facilitano la cifratura automatica dei dati in modo nativo attraverso moduli del kernel Linux con un minimo lavoro da parte dell'utente.
Tabella 9.9. Elenco di utilità per la cifratura dei dati
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
cryptsetup |
V:46, I:63 | 295 | utilità per device a blocchi cifrati (dm-crypt / LUKS) |
cryptmount |
V:3, I:5 | 342 | utilità per device a blocchi cifrati (dm-crypt / LUKS) con particolare attenzione al montaggio/smontaggio da parte di utenti normali |
ecryptfs-utils |
V:4, I:6 | 308 | utilità per file system stack cifrati (eCryptfs) |
Dm-crypt è un file system crittografico che usa device-mapper. Device mapper mappa un blocco di un device ad un altro.
eCryptfs è un altro file system crittografico che usa un file system stack; quest'ultimo si sovrappone ad una directory esistente in un file system montato.
![]() |
Attenzione |
---|---|
La cifratura dei dati consuma tempo CPU, ecc. Valutare bene i suoi costi e i benefici. |
![]() |
Nota |
---|---|
È possibile installare un intero file system Debian in un disco cifrato con l'Installatore Debian (lenny o successivo) usando dm-crypt/LUKS e initramfs. |
![]() |
Suggerimento |
---|---|
Per lo strumento di cifratura in spazio utente GNU Privacy Guard vedere Sezione 10.4, «Infrastruttura di sicurezza dei dati». |
Si può cifrare il contenuto di device di memorizzazione di massa removibili,
ad esempio una chiavetta USB in "/dev/sdx
", usando dm-crypt/LUKS. Formattarla semplicemente nel modo seguente.
# badblocks -c 1024 -s -w -t random -v /dev/sdx # fdisk /dev/sdx ... "n" "p" "1" "return" "return" "w" # cryptsetup luksFormat /dev/sdx1 ... # cryptsetup luksOpen /dev/sdx1 sdx1 ... # ls -l /dev/mapper/ total 0 crw-rw---- 1 root root 10, 60 2008-10-04 18:44 control brw-rw---- 1 root disk 254, 0 2008-10-04 23:55 sdx1 # mkfs.vfat /dev/mapper/sdx1 ... # cryptsetup luksClose sdx1
Si può poi montarla come una chiavetta qualunque in
"/media/<etichetta_disco>
", tranne per il fatto che
verrà chiesta la password (vedere Sezione 10.1.10, «Supporti di archiviazione removibili») nei moderni ambienti desktop, come
GNOME che usa
gnome-mount(1).
La differenza è che ogni dato scritto in essa è cifrato. In alternativa è
possibile formattare il supporto in un formato diverso, ad esempio ext3
usando "mkfs.ext3 /dev/sdx1
".
![]() |
Nota |
---|---|
Se si è veramente paranoici per ciò che riguarda la sicurezza dei propri dati, potrebbe essere necessario sovrascrivere diverse volte nell'esempio precedente. Questa operazione richiede però parecchio tempo. |
In questo esempio si suppone che il file "/etc/fstab
"
originale contenga quanto segue.
/dev/sda7 swap sw 0 0
Si può abilitare la cifratura della partizione di swap usando dm-crypt nel modo seguente.
# aptitude install cryptsetup # swapoff -a # echo "cswap /dev/sda7 /dev/urandom swap" >> /etc/crypttab # perl -i -p -e "s/\/dev\/sda7/\/dev\/mapper\/cswap/" /etc/fstab # /etc/init.d/cryptdisks restart ... # swapon -a
È possibile cifrare automaticamente i file scritti in
"~/Private/
" usando eCryptfs e il pacchetto
ecryptfs-utils
.
Eseguire
ecryptfs-setup-private(1)
e impostare "~/Private/
" nei prompt mostrati.
Attivare "~/Private/
" eseguendo
ecryptfs-mount-private(1).
Spostare i file con dati sensibili in "~/Private/
" e
creare i collegamenti simbolici necessari.
File candidati sono:"~/.fetchmailrc
",
"~/.ssh/identity
", "~/.ssh/id_rsa
",
"~/.ssh/id_dsa
" e altri file con permessi
"go-rwx
"
Spostare le directory con dati sensibili in una sottodirectory in
"~/Private/
" e creare i collegamenti simbolici necessari.
Directory candidate sono: "~/.gnupg
" e altre directory
con permessi "go-rwx
"
Creare un collegamento simbolico da "~/Desktop/Private/
"
a "~/Private/
" per facilitare le operazioni dal desktop.
Disattivare "~/Private/
" eseguendo
ecryptfs-umount-private(1).
Attivare "~/Private/
" eseguendo
ecryptfs-mount-private(1)
quando sono necessari dati cifrati..
![]() |
Suggerimento |
---|---|
Dato che eCryptfs cifra selettivamente solo
i file sensibili, il suo costo in termini di risorse di sistema è molto
minore dell'uso di dm-crypt sull'intero
device root o " |
Se si usa la propria password di login come wrapper per le chiavi di cifratura, si può automatizzare il montaggio di eCryptfs tramite PAM (Pluggable Authentication Modules).
Inserire la riga seguente immediatamente prima di
"pam_permit.so
" in
"/etc/pam.d/common-auth
".
auth required pam_ecryptfs.so unwrap
Inserire la riga seguente come ultima riga in
"/etc/pam.d/common-session
".
session optional pam_ecryptfs.so unwrap
Insrire la riga seguente come prima riga attiva in
"/etc/pam.d/common-password
".
password required pam_ecryptfs.so
Ciò risulta molto comodo.
![]() |
Avvertimento |
---|---|
Errori di configurazione di PAM possono lasciare l'utente chiuso fuori dal proprio sistema. Vedere Capitolo 4, Autenticazione. |
![]() |
Attenzione |
---|---|
Se si usa la propria password di login per fare da wrapper alle chiavi di cifratura, i dati cifrati sono sicuri tanto quanto la password di login dell'utente (vedere Sezione 4.3, «Password buone»). A meno che non si scelga prudentemente una password forte, i propri dati saranno a rischio se qualcuno esegue software di forzatura della password dopo aver rubato il portatile (vedere Sezione 4.7.4, «Rendere sicura la password di root»). |
Le attività dei programmi possono essere monitorare e controllate usando strumenti specializzati.
Tabella 9.10. Elenco di strumenti per monitorare e controllare l'attività dei programmi.
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
coreutils |
V:901, I:999 | 14184 | nice(1): esegue un programma con priorità di schedulazione modificata |
bsdutils |
V:826, I:999 | 189 | renice(1): modifica la priorità di schedulazione di un processo in esecuzione |
procps |
V:855, I:999 | 612 |
utilità per il file system "/proc ":
ps(1),
top(1),
kill(1),
watch(1),
…
|
psmisc |
V:672, I:947 | 721 |
utilità per il file system "/proc ":
killall(1),
fuser(1),
peekfd(1),
pstree(1)
|
time
|
V:74, I:876 | 78 | time(1): esegue un programma per riportare l'uso delle risorse di sistema in funzione del tempo |
sysstat |
V:74, I:99 | 1311 | sar(1), iostat(1), mpstat(1), …: strumenti per le prestazioni di sistema per Linux |
isag
|
V:0, I:9 | 126 | Interactive System Activity Grapher (tracciamento interattivo dell'attivita) per sysstat |
lsof
|
V:155, I:924 | 420 |
lsof(8):
elenca, usando l'opzione "-p ", i file aperti da un
processo in esecuzione
|
strace |
V:41, I:252 | 404 | strace(1): traccia le chiamate e i segnali di sistema |
ltrace |
V:3, I:24 | 188 | ltrace(1): traccia le chiamate di libreria |
xtrace |
V:0, I:1 | 336 | xtrace(1): traccia la comunicazione tra client e server X11 |
powertop |
V:8, I:186 | 473 | powertop(1): informazioni sull'uso dell'alimentazione in portatili basati su Intel |
cron
|
V:894, I:998 | 300 | esegue processi dal demone cron(8) sullo sfondo in base ad una pianificazione |
anacron |
V:432, I:492 | 163 | pianificatore di comandi in stile cron, per i sistemi che non sono in esecuzione 24 ore al giorno |
at
|
V:508, I:874 | 101 | at(1) o batch(1): esegue un compito ad un orario specificato o quando il carico di sistema scende sotto un certo livello |
![]() |
Suggerimento |
---|---|
Il pacchetto |
Mostrare il tempo usato dal processo invocato da un comando.
# time un_qualche_comando >/dev/null real 0m0.035s # tempo di orologio (tempo reale trascorso) user 0m0.000s # tempo in modalità utente sys 0m0.020s # tempo in modalità kernel
Per controllare la priorità di schedulazione di un processo è usato il valore di nice.
Tabella 9.11. Elenco di valori di nice per la priorità di schedulazione
valore di nice | priorità di schedulazione |
---|---|
19 | processo dalla priorità più bassa possibile (nice - gentile) |
0 | processo a priorità molto alta per l'utente |
-20 | processo a priorità molto alta per root (not-nice - non gentile) |
# nice -19 top # molto gentile # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # molto veloce
A volte un valore molto alto di nice fa più male che bene al sistema; usare quindi questo comando con molta cautela.
Il comando ps(1) in Debian supporta sia le funzionalità BSD sia quelle SystemV ed aiuta ad identificare l'attività dei processi in modo statico.
Tabella 9.12. Elenco degli stili per il comando ps
stile | comando tipico | funzione |
---|---|---|
BSD |
ps aux
|
mostra %CPU %MEM |
System V |
ps -efH
|
mostra PPID |
È possibile uccidere i processi figli zombie (defunti) tramite l'ID di
processo del genitore identificato dal campo "PPID
".
Il comando pstree(1) mostra un albero dei processi.
top(1) in Debian ha molte funzionalità e aiuta ad indentificare in modo dinamico i processi che si stanno comportando in modo strano.
Tabella 9.13. Elenco dei comandi per top
tasto del comando | descrizione della risposta |
---|---|
h o ?
|
mostra l'aiuto |
f
|
imposta/reimposta i campi mostrati |
o
|
riordina i campi mostrati |
F
|
imposta il campo da usare come chiave di ordinamento |
k
|
uccide un processo |
r
|
modifica il valore di nice di un processo |
q
|
esce dal comando top
|
È possibile elencare tutti i file aperti da un processo attraverso il suo PID (Identificativo di processo), ad esempio 1, con il comando seguente.
$ sudo lsof -p 1
Di solito il processo con PID=1 è il programma init
.
Si può tenere traccia dell'attività di un programma con strace(1), ltrace(1) o xtrace(1) rispettivamente per quello che riguarda chiamate e segnali di sistema, chiamate di libreria o comunicazioni tra client e server X11.
Si può tenere traccia delle chiamate di sistema del comando
ls
nel modo seguente.
$ sudo strace ls
Usando
fuser(1)
è anche possibile identificare i processi in base ai file usando, ad esempio
per "/var/log/mail.log
" con il comando seguente.
$ sudo fuser -v /var/log/mail.log USER PID ACCESS COMMAND /var/log/mail.log: root 2946 F.... rsyslogd
Come si vede il file "/var/log/mail.log
" è aperto in
scrittura dal comando
rsyslogd(8).
Usando
fuser(1)
si può anche identificare i processi in base ai socket, ad esempio per
"smtp/tcp
" con il comando seguente.
$ sudo fuser -v smtp/tcp USER PID ACCESS COMMAND smtp/tcp: Debian-exim 3379 F.... exim4
Ora si può vedere che sul sistema è in esecuzione exim4(8) per gestire le connessioni TCP alla porta SMTP (25).
watch(1) esegue un programma in modo ripetitivo ad intervalli regolari mostrando il suo output sullo schermo.
$ watch w
Questo comando mostra chi è attualmente connesso al sistema in modo aggiornato ogni 2 secondi.
Ci sono svariati modi di ripetere uno stesso comando su diversi file che
rispondono ad una qualche condizione, ad esempio che corrispondono al
modello glob "*.ext
".
Metodo del ciclo for nella shell (vedere Sezione 12.1.4, «Cicli di shell»):
for x in *.ext; do if [ -f "$x"]; then comando "$x" ; fi; done
Combinazione di find(1) e xargs(1):
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 comando
find(1)
con l'opzione "-exec
" con un comando:
find . -type f -maxdepth 1 -name '*.ext' -exec comando '{}' \;
find(1)
con l'opzione "-exec
" con un breve script di shell:
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "comando '{}' && echo 'esecuzione con successo'" \;
Gli esempi precedenti sono stati scritti per assicurare la gestione appropriata di nomi di file particolari come quelli contenenti spazi. Per usi più avanzati di find(1), vedere Sezione 10.1.5, «Esempi di invocazione per la selezione di file».
È possibile avviare un processo dalla interfaccia utente grafica (GUI).
Nell'ambiente desktop GNOME, un programma può essere avviato con le opzioni appropriate facendo doppio clic sulla icona del lanciatore, trascinando e rilasciando un'icona di file sull'icona del lanciatore o usando la voce di menu"Apri con …" che si ottiene cliccando con il pulsante destro sull'icona di un file. Anche in KDE si possono fare le azioni equivalenti.
Quello che segue è un esempio per GNOME di creazione di un'icona di lanciatore per mc(1) avviato in gnome-terminal(1).
Creare un programma "mc-term
" eseguibile nel modo
seguente.
# cat >/usr/local/bin/mc-term <<EOF #!/bin/sh gnome-terminal -e "mc \$1" EOF # chmod 755 /usr/local/bin/mc-term
Creare un lanciatore sul desktop nel modo seguente.
Cliccare col pulsante destro in uno spazio libero sul desktop e selezionare
"Crea lanciatore…
".
Impostare "Tipo" ad "Applicazione
".
Impostare "Nome" a "mc
".
Impostare "Comando" a "mc-term %f
".
Fare clic su "OK".
Creare un'associazione Apri-con nel modo seguente.
Fare clic con il tasto destro su una cartella per selezionare "Apri
con altra applicazione…
".
Cliccare ed aprire il dialogo "Usare un comando personalizzato" e inserire
"mc-term %f
".
Fare clic su "Apri".
![]() |
Suggerimento |
---|---|
Un lanciatore è un file in " |
Alcuni programmi avviano automaticamente altri programmi. Quelli che seguono sono alcuni punti fondamentali per la personalizzazione di questo processo.
Menu di configurazione delle applicazioni:
Desktop GNOME: "Sistema" → "Preferenze" → "Applicazioni preferite"
Desktop KDE: "K" → "Centro di controllo" → "Componenti di KDE" → "Scelta componenti"
Browser Iceweasel: "Modifica" → "Preferenze" → "Applicazioni"
mc(1):
"/etc/mc/mc.ext
"
Variabili d'ambiente quali "$BROWSER
",
"$EDITOR
", "$VISUAL
" e
"$PAGER
" (vedere
eviron(7))
Il sistema
update-alternatives(8)
per i programmi come "editor
", "view
",
"x-www-browser
", "gnome-www-browser
" e
"www-browser
" (vedere Sezione 1.4.7, «Impostare un editor di testi predefinito»)
Il contenuto dei file "~/.mailcap
" e
"/etc/mailcap
" che associano i tipi MIME con programmi (vedere
mailcap(5))
Il contenuto dei file "~/.mime.types
" e
"/etc/mime.types
" che associano le estensioni dei nomi di
file con tipi MIME (vedere
run-mailcap(1))
![]() |
Suggerimento |
---|---|
update-mime(8)
aggiorna il file " |
![]() |
Suggerimento |
---|---|
Il pacchetto |
![]() |
Suggerimento |
---|---|
Per eseguire un'applicazione per console, come |
# cat /usr/local/bin/mutt-term <<EOF #!/bin/sh gnome-terminal -e "mutt \$@" EOF chmod 755 /usr/local/bin/mutt-term
Per uccidere un processo (o inviare ad esso un segnale) in base al suo ID (identificativo) usare kill(1).
Per fare la stessa cosa ma in base al nome del comando del processo o ad altri attributi, usare killall(1) o pkill(1).
Tabella 9.14. Elenco dei segnali usati comunemente con il comando kill
valore del segnale | nome del segnale | funzione |
---|---|---|
1 | HUP | riavvia il demone |
15 | TERM | normale uccisione |
9 | KILL | uccisione forzata |
Per pianificare un compito da eseguire una volta soltanto eseguire il comando at(1) nel modo seguente.
$ echo 'comando -argomenti'| at 3:40 monday
Per pianificare compiti in modo regolare usare cron(8). Vedere crontab(1) e crontab(5).
Si può pianificare l'esecuzione di processi come utente normale, ad esempio
l'utente pippo
, creando un file
crontab(5)
come "/var/spool/cron/crontabs/pippo
" con il comando
"crontab -e
".
Quello seguente è un esempio di file crontab(5).
# usare /bin/sh per eseguire i comandi, qualsiasi cosa dica /etc/passwd SHELL=/bin/sh # inviare per posta l'output a paolo, chiunque sia il proprietario di questo crontab MAILTO=paolo # Min Ora GiornoMese Mese GiornoSett comando (Giorni... sono combinati con OR) # eseguito alle 00:05, ogni giorno 5 0 * * * $HOME/bin/compito.quotidiano >> $HOME/tmp/output 2>&1 # eseguito alle 14:15 il primo giorno di ogni mese -- output inviato a paolo 15 14 1 * * $HOME/bin/mensile # eseguito alle 22:00 nei giorni infrasettimanali(1-5), disturbare Gianni. % per a capo, ultimo % per cc: 0 22 * * 1-5 mail -s "Sono le 10pm" giannie%Gianni,%%dove sono i tuoi ragazzi?%.%% 23 */2 2 * echo "eseguito 23 minuti dopo le 0am, 2am, 4am ..., il giorno 1 Feb " 5 4 * * sun echo "eseguito alle 04:05 ogni domenica" # eseguito alle 03:40 il primo lunedi' di ogni mese 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && comando -opzioni
![]() |
Suggerimento |
---|---|
Per i sistemi non in esecuzione in maniera continuata, installare il
pacchetto |
![]() |
Suggerimento |
---|---|
Gli script con compiti pianificati di amministrazione del sistema possono
essere eseguiti periodicamente dall'account di root, ponendoli in
" |
L'opzione "Magic SysRq key" (tasto R Sist), di compilazione del kernel, che è ora lo standard per i kernel Debian, fornisce una garanzia contro i malfunzionamenti del sistema. Premendo Alt-R Sist seguito da uno dei tasti seguenti, si ottiene magicamente di recuperare il controllo del sistema.
Tabella 9.15. Elenco di tasti per il comando SAK
tasto premuto dopo Alt-R_Sist | descrizione dell'azione |
---|---|
r
|
ripristina la tastiera dalla modalità raw dopo un crash di X |
0
|
cambia il livello di visualizzazione del registro sulla console a 0 per ridurre i messaggi di errore |
k
|
uccide (kill) tutti i processi nella console virtuale attuale |
e
|
invia un segnale SIGTERM a tutti i processi, tranne init(8) |
i
|
invia un segnale SIGKILL a tutti i processi, tranne init(8) |
s
|
sincronizza tutti i file system montati |
u
|
monta nuovamente tutti i file system in sola letturra (umount) |
b
|
riavvia (reboot) il sistema senza sincronizzare o smontare i file system |
La combinazione di "Alt-R_Sist s", "Alt-R_Sist u" e "Alt-R_Sist r" è buona per uscire da situazioni veramente brutte.
Vedere
"/usr/share/doc/linux-doc-2.6.*/Documentation/sysrq.txt.gz
".
![]() |
Attenzione |
---|---|
La funzione Alt-R_Sist può essere considerata un rischio per la sicurezza
dato che permette agli utenti l'accesso a funzioni con privilegi di
root. Per disabilitale la funzione Alt-R_Sist mettere " |
![]() |
Suggerimento |
---|---|
Si può usare la funzione Alt-R_Sist da un terminale SSH, ecc. scrivendo su
" |
Si può controllare chi è connesso al sistema nei modi seguenti.
who(1) mostra chi ha fatto il login ed è connesso.
w(1) mostra l'elenco di chi ha fatto il login ed è connesso e cosa sta facendo.
last(1) mostra l'elenco degli utenti che hanno fatto il login più recentemente.
lastb(1) mostra l'elenco degli utenti che hanno tentato il login non riuscendovi più recentemente.
![]() |
Suggerimento |
---|---|
Queste informazioni sugli utenti sono contenute in
" |
Si può mandare un messaggio a tutti gli utenti che sono connessi al sistema con wall(1) nel modo seguente.
$ echo "Arresto pianificato del sistema tra 1 ora" | wall
Per i dispositivi di tipo simile PCI (AGP, PCI-Express,
CardBus, ExpressCard, ecc.),
lspci(8)
(probabilmente con l'opzione "-nn
") è un buon punto di
partenza per l'identificazione dell'hardware.
In alternativa, si può identificare l'hardware leggendo il contenuto di
"/proc/bus/pci/devices
" o sfogliando l'albero di
directory in "/sys/bus/pci
" (vedere Sezione 1.2.12, «procfs e sysfs»).
Tabella 9.16. Elenco di strumenti per l'identificazione dell'hardware
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
pciutils |
V:173, I:974 | 889 | utilità PCI Linux: lspci(8) |
usbutils |
V:277, I:916 | 630 | utilità Linux USB: lsusb(8) |
pcmciautils |
V:54, I:175 | 121 | utilità PCMCIA per Linux 2.6: pccardctl(8) |
scsitools |
V:1, I:8 | 316 | raccosta di strumenti per la gestione dell'hardware SCSI:lsscsi(8) |
procinfo |
V:2, I:25 | 164 |
informazioni sul sistema ottenute da "/proc ":
lsdev(8)
|
lshw
|
V:12, I:87 | 653 | informazioni sulla configurazione hardware: lshw(1) |
discover |
V:53, I:690 | 66 | sistema di identificazione dell'hardware: discover(8) |
Sebbene nei moderni sistemi desktop con interfaccia grafica, come GNOME e KDE, la maggior parte della configurazione dell'hardware possa essere gestita attraverso strumenti di configurazione con interfaccia grafica da essi forniti, è bene conoscere alcuni metodi di base di configurazione.
Tabella 9.17. Elenco di strumenti di configurazione dell'hardware
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
hal
|
V:182, I:245 | 1495 | HAL (Hardware Abstraction Layer): lshal(1) |
console-tools |
V:156, I:328 | 956 | utilità Linux per i tipi di carattere e la mappa di tastiera in console |
x11-xserver-utils |
V:368, I:563 | 485 | utilità del server X: xset(1), xmodmap(1) |
acpid
|
V:530, I:938 | 188 | demone per gestire eventi inviati dall'ACPI (Advanced Configuration and Power Interface, interfaccia avanzata per configurazione ed energia) |
acpi
|
V:57, I:730 | 70 | utilità per mostrare informazioni sui device ACPI |
apmd
|
V:10, I:122 | 252 | demone per gestire eventi inviati dall'APM (Advanced Power Management, gestione avanzata dell'energia) |
noflushd |
V:0, I:0 | 248 | demone per permettere di fermare la rotazione dei dischi fissi inattivi |
sleepd |
V:0, I:1 | 148 | demone per sospendere un portatile durante l'inattività |
hdparm |
V:218, I:568 | 284 | ottimizzazione degli accessi al disco fisso (vedere Sezione 9.3.8, «Ottimizzare il disco rigido») |
smartmontools |
V:71, I:243 | 1156 | controllo e monitoraggio dei sistemi di archiviazione usando S.M.A.R.T. |
setserial |
V:10, I:23 | 141 | raccolta di strumenti per la gestione delle porte seriali |
memtest86+ |
V:4, I:71 | 2342 | raccolta di strumenti per la gestione di hardware di memoria |
scsitools |
V:1, I:8 | 316 | raccolta di strumenti per la gestione di hardware SCSI |
tpconfig |
V:2, I:5 | 164 | utilità per configurare i dispositivi touchpad |
setcd
|
V:0, I:2 | 28 | ottimizzazione dell'accesso alle unità CD |
big-cursor |
I:1 | 68 | puntatori del mouse più grandi per X |
ACPI è un'infrastruttura per il sistema di gestione dell'energia più nuovo di APM
![]() |
Suggerimento |
---|---|
La modifica della frequenza della CPU nei sistemi moderni è controllata da
moduli del kernel come |
I comandi seguenti impostano l'ora di sistema e hardware a MM/GG hh:mm, AAAA.
# date MMGGhhmmAAAA # hwclock --utc --systohc # hwclock --show
Nei sistemi Debian, gli orari sono mostrati normalmente come ora locale, ma l'ora di sistema e quella hardware usano di solito l'ora UT(GMT).
Se l'ora hardware (BIOS) è impostata ad UT, modificare l'impostazione nel
file "/etc/default/rcS
" ad "UTC=yes
".
Se si desidera tenere aggiornata l'ora di sistema attraverso la rete, si
consideri l'uso del servizion NTP con pacchetti
come ntp
, ntpdate
e
chrony
.
Vedere la documentazione seguente.
Il pacchetto ntp-doc
![]() |
Suggerimento |
---|---|
ntptrace(8),
nel pacchetto |
Ci sono diversi componenti per configurare le funzionalità della console a caratteri e il sistema ncurses(3).
Il file "/etc/terminfo/*/*
"
(terminfo(5))
La variabile d'ambiente "$TERM
"
(term(7))
setterm(1), stty(1), tic(1) e toe(1)
:(Se, con un xterm
non Debian, la voce
terminfo
per xterm
non funziona,
cambiare il tipo di terminale "$TERM
" da
"xterm
" ad una delle versioni con funzionalità limitate
come "xterm-r6
" quando si fa il login ad un sistema
Debian da remoto. Per ulteriori iedere
"/usr/share/doc/libncurses5/FAQ
" .
I driver di dispositivo per le schede audio per l'attuale Linux 2.6 sono forniti da ALSA (Advanced Linux Sound Architecture). ALSA fornisce una modalità di emulazione per la compatibilità con il precedente sistema OSS (Open Sound System).
Eseguire "dpkg-reconfigure linux-sound-base
" per
selezionare l'uso di ALSA per il sistema audio attraverso l'inserimento in
una lista nera di moduli del kernel. A meno di avere hardware audio
estremamente recente, l'infrastruttura udev dovrebbe configurare il sistema
audio.
![]() |
Suggerimento |
---|---|
Per testare l'altoparlante usare " |
![]() |
Suggerimento |
---|---|
Se non si ottiene l'audio, è possibile che l'altroparlante sia connesso ad
un output impostato come muto. I moderni sistemi sonori hanno svariati
output.
alsamixer(1)
nel pacchetto |
I software applicativi possono essere configurati non solo per accedere direttamente a device audio, ma anche per accedervi attraverso un qualche sistema server sonoro standardizzato.
Tabella 9.18. Elenco di pacchetti relativi all'audio
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
linux-sound-base |
V:265, I:365 | 128 | pacchetto base per i sistemi audio ALSA e OSS |
alsa-base |
V:18, I:510 | 130 504 | file di configurazione del driver ALSA |
alsa-utils |
V:368, I:512 | 1998 | utilità per configurare ed usare ALSA |
oss-compat |
V:96, I:184 | 53 |
compatibilità OSS in ALSA per prevenire errori "/dev/dsp not
found "
|
jackd
|
V:6, I:32 | 32 | server JACK (JACK Audio Connection Kit) (bassa latenza) |
libjack0 |
I:104 | 137 | libreria JACK (JACK Audio Connection Kit) (bassa latenza) |
nas
|
V:1, I:1 | 267 | server NAS (Network Audio System) |
libaudio2 |
V:177, I:481 | 179 | libreria NAS (Network Audio System) |
pulseaudio |
V:151, I:193 | 4722 | server PulseAudio, sostituto per ESD |
libpulse0 |
V:280, I:562 | 802 | libreria client PulseAudio, sostituto per ESD |
libgstreamer0.10-0 |
V:370, I:549 | 3919 | GStreamer: motore audio di GNOME |
libxine1 |
I:184 | 1 | xine: vecchio motore audio di KDE |
libphonon4 |
I:263 | 574 | Phonon: motore audio di KDE |
Normalmente esiste un motore audio comune per ciascun ambiente desktop. Ciascun motore audio usato dalle applicazioni può scegliere di connettersi a diversi server audio.
Per disabilitare il salvaschermo usare i comandi seguenti.
Tabella 9.19. Elenco di comandi per disabilitare il salvaschermo
ambiente | comando |
---|---|
Console Linux |
setterm -powersave off
|
X Window (disabilitare il salvaschermo) |
xset s off
|
X Window (disabilitare DPMS) |
xset -dpms
|
X Window (configurazione tramite GUI del salvaschermo) |
xscreensaver-command -prefs
|
Per disabilitare i bip sonori è sempre possibile disconnettere
l'altoparlante del PC; la rimozione del modulo pcspkr
del
kernel fa stessa cosa per conto dell'utente.
Il comando seguente evita che il programma
readline(3)
usato da
bash(1)
emetta suoni bip quando incontra "\a
" (ASCII=7).
$ echo "set bell-style none">> ~/.inputrc
I messaggi di avvio del kernel nel file "/var/log/dmesg
"
contengono la dimensione esatta della memoria disponibile.
free(1) e top(1) mostrano informazioni sulle risorse di memoria nel sistema mentre è in funzione.
# grep '\] Memory' /var/log/dmesg [ 0.004000] Memory: 990528k/1016784k available (1975k kernel code, 25868k reserved, 931k data, 296k init) $ free -k total used free shared buffers cached Mem: 997184 976928 20256 0 129592 171932 -/+ buffers/cache: 675404 321780 Swap: 4545576 4 4545572
![]() |
Suggerimento |
---|---|
Non ci si deve preoccupare della grande dimensione del valore
" |
Per il mio MacBook con 1GB=1048576k DRAM (il sistema video ne ruba un po'), vedo le informazioni seguenti.
Tabella 9.20. Elenco di dimensioni della memoria riportate
fonte | dimensione |
---|---|
Dimensione totale in dmesg | 1016784k = 1GB - 31792k |
Libera in dmesg | 990528k |
Dimensione totale nella shell | 997184k |
Libera nella shell | 20256k (ma in effetti 321780k) |
Una cattiva manutenzione del sistema può esporlo ad attacchi esterni.
Per verificare la sicurezza e l'integrità del sistema, si dovrebbe iniziare dai punti seguenti.
Il pacchetto debsums
. Vedere
debsums(1)
e Sezione 2.5.2, «File "Release" nella directory principale ed autenticità».
Il pacchetto chkrootkit
. Vedere
chkrootkit(1).
La famiglia di pacchetti clamav
. Vedere
clamscan(1)
e
freahclam(1).
Tabella 9.21. Elenco di strumenti per verificare la sicurezza e l'integrità del sistema
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
logcheck |
V:22, I:30 | 218 | demone per inviare via posta anomalie nei file di registro di sistema all'amministratore |
debsums |
V:21, I:41 | 199 | utilità per controllare i file dei pacchetti installati con le somme di controllo MD5 |
chkrootkit |
V:16, I:55 | 920 | rilevatore di rootkit |
clamav |
V:22, I:91 | 593 | utilità anti-virus per Unix - interfaccia a riga di comando |
tiger
|
V:7, I:9 | 2374 | riporta vulnerabilità nella sicurezza di sistema |
tripwire |
V:6, I:7 | 9049 | strumento di controllo dell'integrità di file e directory |
john
|
V:6, I:22 | 472 | strumento di violazione delle password attive |
aide
|
V:2, I:3 | 1351 | AIDE - ambiente avanzato di rilevamento delle intrusioni - binario statico |
bastille |
V:0, I:1 | 1960 | strumento di rafforzamento della sicurezza |
integrit |
V:0, I:1 | 440 | programma di controllo dell'integrità di file |
crack
|
V:0, I:1 | 160 | programma per indovinare password |
Con il piccolo script seguente è possibile controllare la presenza di tipici errori con permessi di scrittura per tutti per i file sbagliati.
# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
![]() |
Attenzione |
---|---|
Data che il pacchetto |
Debian distribuisce, per le architetture supportate, kernel Linux modulari contenuti in pacchetti.
Nel kernel Linux 2.6 ci sono alcune funzionalità degne di nota rispetto alla versione 2.4.
I device vengono creati dal sistema udev (vedere Sezione 3.5.11, «Il sistema udev»).
L'accesso in lettura/scrittura ai dispositivi CD/DVD IDE non usa il modulo
ide-scsi
.
Le funzioni di filtraggio dei pacchetti di rete usando i moduli
iptable
del kernel.
Molte caratteristiche di Linux possono essere configurate tramite parametri del kernel, nei modi seguenti.
Parametri del kernel inizializzati dal bootloader (vedere Sezione 3.3, «Stadio 2: il bootloader»)
Se accessibili attraverso sysfs (vedere Sezione 1.2.12, «procfs e sysfs»), parametri del kernel modificati da sysctl(8) durante l'esecuzione del sistema.
Parametri di moduli impostati dagli argomenti di modprobe(8) al momento dell'attivazione di un modulo (vedere Sezione 10.2.3, «Montare un file con un'immagine di disco»)
Vedere "kernel-parameters.txt(.gz)
" e altri documenti
correlati nella documentazione del kernel Linux
("/usr/share/doc/linux-doc-2.6.*/Documentation/filesystems/*
")
fornita dai pacchetti linux-doc-2.6.*
.
La maggior parte dei normali programmi
non ha bisogno degli header del kernel per essere compilata, anzi di fatto
può corrompersi se si usano direttamente gli header. Questi programmi
dovrebbero essere compilati nel sistema Debian usando gli header in
"/usr/include/linux
" e
"/usr/include/asm
" forniti dal pacchetto
libc6-dev
(creato dal pacchetto sorgente
glibc
).
![]() |
Nota |
---|---|
Per compilare alcuni programmi specifici per il kernel, come moduli per il
kernel da fonti esterne e il demone automounter ( |
Debian ha un proprio metodo di compilazione del kernel e dei moduli relativi.
Tabella 9.22. Elenco di pacchetti chiave da installare per la ricompilazione del kernel in un sistema Debian
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
build-essential |
I:477 | 48 |
pacchetti essenziali per compilare pacchetti Debian:
make , gcc , …
|
bzip2
|
V:491, I:812 | 91 | utilità di compressione e decompressione per file bz2 |
libncurses5-dev |
V:25, I:216 | 1008 | librerie di sviluppo e documentazione per ncurses |
git
|
V:130, I:414 | 13134 | git: sistema distribuito di controllo delle revisioni usato dal kernel Linux |
fakeroot |
V:56, I:494 | 317 | fornisce un ambiente fakeroot per compilare pacchetti da utente non root |
initramfs-tools |
V:408, I:985 | 323 | strumento per compilare un initramfs (specifico di Debian) |
dkms
|
V:79, I:209 | 191 | DKMS (Dynamic Kernel Module Support, supporto dinamico per i noduli del kernel) (generico) |
devscripts |
V:16, I:91 | 1526 | script di aiuto per i manutentori di pacchetti Debian (specifico di Debian) |
Se si usa initrd
nello Sezione 3.3, «Stadio 2: il bootloader», ci si assicuri di leggere le
informazioni relative in
initramfs-tools(8),
update-initramfs(8),
mkinitramfs(8)
e
initramfs.conf(5).
![]() |
Avvertimento |
---|---|
Quando si compilano i sorgenti del kernel Linux, non mettere collegamenti
simbolici alle directory nell'albero dei sorgenti (ad esempio,
" |
![]() |
Nota |
---|---|
Quando si compila il kernel Linux più recente nel sistema Debian
|
![]() |
Nota |
---|---|
Il DKMS (Dynamic Kernel Module
Support, supporto dinamico per i moduli del kernel) è un nuova
infrastruttura indipendente dalla distribuzione progettata per permettere
l'aggiornamento di singoli moduli del kernel senza cambiare tutto il
kernel. Verrà utilizzata per |
Per compilare pacchetti binari del kernel personalizzati a partire dai
sorgenti originali del kernel, si deve usare il target
"deb-pkg
fornito.
$ sudo apt-get build-dep linux-2.6 $ cd /usr/src $ wget http://www.kernel.org/pub/linux/kernel/v3.2/linux-<versione>.tar.bz2 $ tar -xjvf linux-<versione>.tar.bz2 $ cd linux-<versione> $ cp /boot/config-<versione> .config $ make menuconfig ... $ make deb-pkg
![]() |
Suggerimento |
---|---|
Il pacchetto linux-source-<versione> fornisce i sorgenti del kernel
Linux con le patch Debian come
" |
Per compilare pacchetti binari specifici a partire dal pacchetto Debian dei
sorgenti del kernel, si devono usare i target
"binary-arch_<architettura>_<featureset>_<flavour>
"
in "debian/rules.gen
".
$ sudo apt-get build-dep linux-2.6 $ apt-get source linux-2.6 $ cd linux-2.6-* $ fakeroot make -f debian/rules.gen binary-arch_i386_none_686
Ulteriori informazioni:
Wiki Debian: FAQ del Kernel
Wiki Debian: Kernel Debian
Debian Linux Kernel Handbook: http://kernel-handbook.alioth.debian.org
Un driver hardware è il codice eseguito nel sistema target. La maggior parte
dei driver hardware sono ora disponibili come software libero e sono inclusi
nei normali pacchetti Debian dei kernel nell'area main
.
Il firmware è il codice o i dati caricati sul dispositivo (ad esempio microcodice della CPU, codice di rendering eseguito nella GPU oppure dati FPGA/CPLD, …). Alcuni pacchetti firmware sono disponibili come software libero, ma molti pacchetti firmware non lo sono dato che contengono dati binari senza sorgenti.
firmware-linux-free (main
)
firmware-linux-nonfree (non-free
)
firmware-linux-* (non-free
)
*-firmware (non-free
)
intel-microcode (non-free
)
amd64-microcode (non-free
)
Notare che i pacchetti non-free
e
contrib
non fanno parte del sistema Debian. La
configurazione per abilitare e disabilitare le aree
non-free
e contrib
è descritta in
Sezione 2.1.4, «Nozioni di base sugli archivi Debian». Si dovrebbe essere consapevoli
degli aspetti negativi legati all'uso dei pacchetti
non-free
e contrib
come descritto in
Sezione 2.1.5, «Debian è al 100% software libero».
L'uso di sistemi virtualizzati permette di eseguire più istanze di un sistema simultaneamente su un singolo hardware.
![]() |
Suggerimento |
---|---|
Ci sono diversi pacchetti in Debian relativi alla virtualizzazione ed emulazione di sistema che vanno oltre il semplice chroot. Alcuni pacchetti aiutano anche nell'impostazione di tali sistemi.
Tabella 9.23. Elenco di strumenti di virtualizzazione
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
schroot |
V:9, I:13 | 2648 | strumento specializzato per eseguire pacchetti Debian binari in chroot |
sbuild |
V:0, I:3 | 456 | strumento per compilare pacchetti Debian binari da sorgenti Debian |
pbuilder |
V:3, I:25 | 993 | creatore di pacchetti personali per pacchetti Debian |
debootstrap |
V:12, I:93 | 226 | avviare un sistema Debian base (scritto in sh) |
cdebootstrap |
V:1, I:13 | 66 | avviare un sistema Debian (scritto in C) |
rootstrap |
V:0, I:1 | 97 | strumento per creare immagini complete di un file system Linux |
virt-manager |
V:8, I:25 | 6132 | Virtual Machine Manager: applicazione desktop per gestire macchine virtuali |
libvirt-bin |
V:54, I:86 | 4467 | programmi per la libreria libvirt |
user-mode-linux |
V:0, I:3 | 24015 | Linux User-mode (kernel) |
bochs
|
V:0, I:2 | 3018 | Bochs: emulatore PC IA-32 |
qemu
|
I:60 | 370 | QEMU: veloce emulatore generico di processore |
qemu-system |
V:35, I:62 | 80774 | QEMU: binari per emulazione completa del sistema |
qemu-user |
V:5, I:58 | 47014 | QEMU: binari per emulazione in spazio utente |
qemu-utils |
V:12, I:115 | 1496 | QEMU: utilità |
qemu-kvm |
V:51, I:92 | 5040 | KVM: virtualizzazione completa su hardware x86 convirtualizzazione assistita da hardware |
virtualbox-ose |
V:8, I:30 | 118 | VirtualBox: soluzione per virtualizzazione i dx86 su i386 e amd64 |
xen-tools |
V:1, I:15 | 604 | strumenti per gestire server virtuali XEN Debian |
wine
|
I:112 | 80 | Wine: implementazione della API Windows (suite standard) |
dosbox |
V:5, I:26 | 2526 | DOSBox: emulatore x86 con grafica Tandy/Herc/CGA/EGA/VGA/SVGA, suono e DOS |
dosemu |
V:2, I:9 | 4820 | DOSEMU: emulatore DOS di Linux |
vzctl
|
V:6, I:9 | 657 | OpenVZ, soluzione per virtualizzazione server - strumenti di controllo |
vzquota |
V:6, I:9 | 204 | OpenVZ, soluzione per virtualizzazione server - strumenti per quote |
lxc
|
V:2, I:7 | 707 | strumenti in spazio utente per contenitori Linux containers |
Vedere l'articolo di Wikipedia Comparison of platform virtual machines per una comparazione dettagliata di diverse soluzioni per la virtualizzazione di piattaforme.
![]() |
Nota |
---|---|
Alcune funzionalità descritte in seguito sono disponibili solamente in
|
![]() |
Nota |
---|---|
I kernel Debian predefiniti hanno il supporto per KVM a partire da |
Il tipico processo di virtualizzazione comporta diverse fasi.
Creare un file system vuoto (un albero di file o un'immagine di disco).
L'albero di file può essere creato con "mkdir -p
/percorso/di/chroot
".
Il file immagine raw del disco può essere creato con dd(1) (vedere Sezione 10.2.1, «Creare un file con un'immagine di disco» e Sezione 10.2.5, «Creare un file con immagine di disco vuoto»).
Si può usare qemu-img(1) per creare e convertire file immagine di dischi supportati da QEMU.
I formati di file raw e VMDK possono essere usati come formati comuni tra i vari strumenti di virtualizzazione.
Montare l'immagine del disco con mount(8) nel file system (opzionale).
Per il file immagine raw sel disco, montarlo come device loop o device mapper (vedere Sezione 10.2.3, «Montare un file con un'immagine di disco»).
Per le immagini disco supportate da QEMU, montarle come device a blocchi di rete (vedere Sezione 9.8.3, «Montare il file immagine di disco virtuale»).
Popolare il file system obiettivo con i dati di sistema necessari.
L'uso di programmi come debootstrap
e
cdebootstrap
aiuta questo processo (vedere Sezione 9.8.4, «Sistema chroot»).
Usare gli installatori di sistemi operativi nell'emulazione di sistemi completi.
Eseguire un programma in un ambiente virtualizzato.
chroot fornisce un ambiente di virtualizzazione base sufficiente a compilare programmi, eseguire applicazioni in console ed eseguire demoni al suo interno.
QEMU fornisce emulazione di CPU inter-piattaforma.
QEMU con KVM fornisce una completa emulazione di sistema con virtualizzazione assistita da hardware.
VirtualBox fornisce una completa emulazione del sistema in i386 e amd64 con o senza virtualizzazione assistita da hardware.
Per i file immagine raw di disco, vedere Sezione 10.2, «Immagine del disco».
Per altri file immagine di dischi virtuali, si può usare
qemu-nbd(8)
per esportarli usando il protocollo per device a blocchi di rete e montarli
usando il modulo nbd
del kernel.
qemu-nbd(8) supporta i formati di disco supportati da QEMU; QEMU supporta i seguenti formati di dischi: raw, qcow2, qcow, vmdk, vdi, bochs, cow (copy-on-write di user-mode Linux), parallels, dmg, cloop, vpc, vvfat (VFAT virtuale) e host_device.
I device a blocchi di rete possono
supportare partizioni nello stesso modo dei device loop (vedere Sezione 10.2.3, «Montare un file con un'immagine di disco»). Si può montare la prima
partizione di "disk.img
" nel modo seguente.
# modprobe nbd max_part=16 # qemu-nbd -v -c /dev/nbd0 disk.img ... # mkdir /mnt/part1 # mount /dev/nbd0p1 /mnt/part1
![]() |
Suggerimento |
---|---|
È possibile esportare solamente la prima partizione di
" |
chroot(8) offre il metodo più basilare per eseguire diverse istanze dell'ambiente GNU/Linux simultaneamente in un singolo sistema senza riavviare.
![]() |
Attenzione |
---|---|
Gli esempi seguenti presuppongono che entrambi i sistemi, quello genitore e quello chroot, condividano la stessa architettura. |
Si può imparare a impostare ed usare chroot(8) eseguendo il programma pbuilder(8) in script(1) nel modo seguente.
$ sudo mkdir /sid-root $ sudo pbuilder --create --no-targz --debug --buildplace /sid-root
Si può vedere come
debootstrap(8)
o
cdebootstrap(1)
popoli i dati di sistema per l'ambiente sid
in
"/sid-root
".
![]() |
Suggerimento |
---|---|
L'installatore Debian usa debootstrap(8) o cdebootstrap(1) per l'installazione Debian. Possono anche essere usati per installare Debian in un sistema senza usare un disco di installazione Debian, ma invece uno di un'altra distribuzione GNU/Linux. |
$ sudo pbuilder --login --no-targz --debug --buildplace /sid-root
Si può vedere come venga creata una shell di sistema in esecuzione
nell'ambiente sid
, nel modo seguente.
Copiare la configurazione locale ("/etc/hosts
",
"/etc/hostname
", "/etc/resolv.conf
")
Montare il file system "/proc
"
Montare il file system "/dev/pts
"
Creare "/usr/sbin/policy-rc.d
" che restituisca sempre il
codice 101
Esegiore "chroot /sid-root bin/bash -c 'exec -a -bash
bin/bash'
"
![]() |
Nota |
---|---|
Alcuni programmi in chroot per funzionare possono aver bisogno dell'accesso
ad più file nel sistema genitore di quanti ne fornisca
|
![]() |
Nota |
---|---|
Il file " |
![]() |
Suggerimento |
---|---|
Lo scopo originale del pacchetto specializzato chroot,
|
![]() |
Suggerimento |
---|---|
Il pacchetto simile |
Io raccomando l'uso di QEMU o VirtualBox per eseguire, in un sistema Debian
stable
, sistemi desktop multipli in maniera sicura usando
la virtualizzazione. Permettono di
eseguire applicazioni desktop di Debian unstable
e
testing
senza i comuni rischi ad essi associati.
Dato che QEMU puro è molto lento, è raccomandata la sua velocizzazione con KVM quando il sistema host lo permette.
L'immagine disco virtuale "virtdisk.qcow2
" contenente il
sistema Debian per QEMU si può creare con
ipiccoli CD dell'installatore
Debian nel modo seguente.
$ wget http://cdimage.debian.org/debian-cd/5.0.3/amd64/iso-cd/debian-503-amd64-netinst.iso $ qemu-img create -f qcow2 virtdisk.qcow2 5G $ qemu -hda virtdisk.qcow2 -cdrom debian-503-amd64-netinst.iso -boot d -m 256 ...
Vedere altri suggerimenti su Debian Wiki: QEMU.
VirtualBox è fornito con strumenti con interfaccia utente grafica Qt piuttosto intuitivi. I suoi strumenti grafici e a riga di comando sono spiegati nel Manuale utente di VirtualBox e Manuale utente di VirtualBox (PDF).
![]() |
Suggerimento |
---|---|
Eseguire altre distribuzioni GNU/Linux come Ubuntu e Fedora in una virtualizzazione è un ottimo metodo per imparare trucchetti di configurazione. Anche altri sistemi operativi proprietari possono essere eseguiti tranquillamente in queste virtualizzazioni GNU/Linux. |