| Current Path : /usr/share/debian-reference/ |
| Current File : //usr/share/debian-reference/ch09.it.html |
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Capitolo 9. Suggerimenti per il sistema</title>
<link rel="stylesheet" type="text/css" href="debian-reference.css"/>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="home" href="index.it.html" title="Debian Reference"/>
<link rel="up" href="index.it.html" title="Debian Reference"/>
<link rel="prev" href="ch08.it.html" title="Capitolo 8. I18N e L10N"/>
<link rel="next" href="ch10.it.html" title="Capitolo 10. Gestione dei dati"/>
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Capitolo 9. Suggerimenti per il sistema</th>
</tr>
<tr>
<td align="left"><a accesskey="p" href="ch08.it.html"><img src="images/prev.png" alt="Indietro"/></a> </td>
<th width="60%" align="center"> </th>
<td align="right"> <a accesskey="n" href="ch10.it.html"><img src="images/next.png" alt="Avanti"/></a></td>
</tr>
</table>
<hr/>
</div>
<div class="chapter">
<div class="titlepage">
<div>
<div>
<h1 class="title"><a id="_system_tips"/>Capitolo 9. Suggerimenti per il sistema</h1>
</div>
</div>
</div>
<div class="toc">
<p>
<strong>Indice</strong>
</p>
<dl class="toc">
<dt>
<span class="section">
<a href="ch09.it.html#_the_console_tips">9.1. Suggerimenti per la console</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_recording_the_shell_activities_cleanly">9.1.1. Registrare le attività della shell in modo pulito</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_the_screen_program">9.1.2. Il programma screen</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_navigating_around_directories">9.1.3. Navigare nelle directory</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_readline_wrapper">9.1.4. Wrapper per readline</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_scanning_the_source_code_tree">9.1.5. Strumenti per la fusione di codice sorgente</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch09.it.html#_customizing_vim">9.2. Personalizzare vim</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_customizing_vim_with internal_features">9.2.1. Personalizzare vim con le funzionalità interne</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_customizing_vim_with_external_packages">9.2.2. Personalizzare vim con pacchetti esterni</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch09.it.html#_data_recording_and_presentation">9.3. Registrazione e presentazione di dati</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_the_log_daemon">9.3.1. Demoni di registro</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_log_analyzer">9.3.2. Analizzatori di registro</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_customized_display_of_text_data">9.3.3. Visualizzazione personalizzata di dati di testo</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_customized_display_of_time_and_date">9.3.4. Visualizzazione personalizzata di date e orari</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_colorized_shell_echo">9.3.5. Output colorato per la shell</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_colorized_commands">9.3.6. Comandi colorati</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_recording_the_editor_activities_for_complex_repeats">9.3.7. Registrare le attività dell'editor per ripetizioni complesse</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_recording_the_graphic_image_of_an_x_application">9.3.8. Registrare l'immagine grafica di un'applicazione X</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_recording_changes_in_configuration_files">9.3.9. Registrare i cambiamenti a file di configurazione</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch09.it.html#_monitoring_controlling_and_starting_program_activities">9.4. Monitorare, controllare ed avviare l'attività dei programmi</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_timing_a_process">9.4.1. Cronometrare un processo</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_the_scheduling_priority">9.4.2. Priorità di schedulazione</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_the_ps_command">9.4.3. Il comando ps</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_the_top_command">9.4.4. Il comando top</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_listing_files_opened_by_a_process">9.4.5. Elencare i file aperti da un processo</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_tracing_program_activities">9.4.6. Tenere traccia delle attività di un programma</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_identification_of_processes_using_files_or_sockets">9.4.7. Identificazione di processi in base a file o socket</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_repeating_a_command_with_a_constant_interval">9.4.8. Ripetere un comando ad intervalli costanti</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_repeating_a_command_looping_over_files">9.4.9. Ripetere un comando su diversi file</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_starting_a_program_from_gui">9.4.10. Avviare un programma dalla GUI</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_customizing_program_to_be_started">9.4.11. Personalizzare i programmi da avviare</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_killing_a_process">9.4.12. Uccidere un processo</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_scheduling_tasks_once">9.4.13. Pianificare compiti da eseguire una volta sola</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_scheduling_tasks_regularly">9.4.14. Pianificare compiti in modo regolare</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_alt_sysrq_key">9.4.15. Tasto Alt-SysRq</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch09.it.html#_system_maintenance_tips">9.5. Suggerimenti per l'amministrazione del sistema</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_who_is_on_the_system">9.5.1. Chi è nel sistema?</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_warning_everyone">9.5.2. Avvertire tutti gli utenti</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_hardware_identification">9.5.3. Identificazione dell'hardware</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_hardware_configuration">9.5.4. Configurazione dell'hardware</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_system_and_hardware_time">9.5.5. Orario di sistema e hardware</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_the_terminal_configuration">9.5.6. Configurazione del terminale</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_the_sound_infrastructure">9.5.7. L'infrastruttura audio</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_disabling_the_screen_saver">9.5.8. Disabilitare il salvaschermo</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_disabling_beep_sounds">9.5.9. Disabilitare i bip sonori</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_memory_usage">9.5.10. Uso della memoria</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_system_security_and_integrity_check">9.5.11. Verifica della sicurezza e dell'integrità del sistema</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch09.it.html#_data_storage_tips">9.6. Suggerimenti per l'archiviazione dei dati</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_disk_space_usage">9.6.1. Uso dello spazio su disco</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_disk_partition_configuration">9.6.2. Configurazione del partizionamento dei dischi</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_accessing_partition_using_uuid">9.6.3. Accedere alle partizioni usando UUID</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_lvm2">9.6.4. LVM2</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_filesystem_configuration">9.6.5. Configurazione del file system</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_filesystem_creation_and_integrity_check">9.6.6. Creare file system e verificarne l'integrità </a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_optimization_of_filesystem_by_mount_options">9.6.7. Ottimizzare il file system con opzioni di mount</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_optimization_of_filesystem_via_superblock">9.6.8. Ottimizzare il file system tramite il superblocco</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_optimization_of_hard_disk">9.6.9. Ottimizzare il disco rigido</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_optimization_of_solid_state_drive">9.6.10. Ottimizzare le unità a stato solido</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_using_smart_to_predict_hard_disk_failure">9.6.11. Usare SMART per prevedere danni ai dischi fissi</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_specify_temporary_storage_directory_via_tmpdir">9.6.12. Specificare una directory per l'archiviazione di dati temporanei usando
$TMPDIR</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_expansion_of_usable_storage_space_via_lvm">9.6.13. Espandere lo spazio di archiviazione utilizzabile con LVM</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_expansion_of_usable_storage_space_by_mounting_another_partition">9.6.14. Espandere lo spazio di archiviazione utilizzabile montando un'altra
partizione</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_expansion_of_usable_storage_space_by_bind_mounting_another_directory">9.6.15. Espandere lo spazio di archiviazione utilizzabile montando un collegamento
ad un'altra directory</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_expansion_of_usable_storage_space_by_overlay_mounting_another_directory">9.6.16. Espandere lo spazio di archiviazione utilizzabile montando un'altra
directory da sovrapporre</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_expansion_of_usable_storage_space_using_symlink">9.6.17. Espandere lo spazio di archiviazione utilizzabile usando collegamenti
simbolici</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch09.it.html#_the_disk_image">9.7. Immagine del disco</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_making_the_disk_image_file">9.7.1. Creare un file con un'immagine di disco</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_writing_directly_to_the_disk">9.7.2. Scrivere direttamente sul disco</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_mounting_the_disk_image_file">9.7.3. Montare un file con un'immagine di disco</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_cleaning_a_disk_image_file">9.7.4. Pulire un file con un'immagine di disco</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_making_the_empty_disk_image_file">9.7.5. Creare un file con immagine di disco vuoto</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_making_the_iso9660_image_file">9.7.6. Creare un file con un'immagine ISO9660</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_writing_directly_to_the_cd_dvd_r_rw">9.7.7. Scrivere direttamente sul CD/DVD-R/RW</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_mounting_the_iso9660_image_file">9.7.8. Montare un file con un'immagine ISO9660</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch09.it.html#_the_binary_data">9.8. I dati binari</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_viewing_and_editing_binary_data">9.8.1. Visualizzare e modificare dati binari</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_manipulating_files_without_mounting_disk">9.8.2. Manipolare file senza montare i dischi</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_data_redundancy">9.8.3. Dati ridondanti</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_data_file_recovery_and_forensic_analysis">9.8.4. recupero di file dati ed analisi forensi</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_splitting_a_large_file_into_small_files">9.8.5. Suddividere un file grande in file più piccoli</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_clearing_file_contents">9.8.6. Pulire il contenuto di file</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_dummy_files">9.8.7. File fittizi</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_erasing_an_entire_hard_disk">9.8.8. Cancellare un intero disco fisso</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_erasing_unused_area_of_an_hard_disk">9.8.9. Cancellare area inutilizzate di un disco fisso</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_undeleting_deleted_but_still_open_files">9.8.10. De-cancellare file cancellati ma ancora aperti</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_searching_all_hardlinks">9.8.11. Cercare tutti i collegamenti fisici</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_invisible_disk_space_consumption">9.8.12. Consumo invisibile dello spazio su disco</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch09.it.html#_data_encryption_tips">9.9. Suggerimenti per la cifratura dei dati</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_removable_disk_encryption_with_dm_crypt_luks">9.9.1. Cifratura di dischi removibili con dm-crypt/LUKS</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_mounting_encrypted_disk_with_dm_crypt_luks">9.9.2. Montare dischi removibili con dm-crypt/LUKS</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch09.it.html#_the_kernel">9.10. Il kernel</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_kernel_parameters">9.10.1. Parametri del kernel</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_kernel_headers">9.10.2. Header del kernel</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_compiling_the_kernel_and_related_modules">9.10.3. Compilare il kernel ed i moduli relativi</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_compiling_the_kernel_source_debian_kernel_team_recommendation">9.10.4. Compilare i sorgenti del kernel: il metodo raccomandato dal Team del Kernel
di Debian</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_hardware_drivers_and_firmware">9.10.5. Driver per hardware e firmware</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch09.it.html#_virtualized_system">9.11. Sistema virtualizzato</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch09.it.html#_virtualization_tools">9.11.1. Strumenti per virtualizzazione ed emulazione</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_virtualization_work_flow">9.11.2. Fasi del processo di virtualizzazione</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_mounting_the_virtual_disk_image_file">9.11.3. Montare il file immagine di disco virtuale</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_chroot_system">9.11.4. Sistema chroot</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch09.it.html#_multiple_desktop_systems">9.11.5. Sistemi desktop multipli</a>
</span>
</dt>
</dl>
</dd>
</dl>
</div>
<p>In questa sezione vengono descritti suggerimenti base per configurare e
gestire il sistema, per lo più dalla console.</p>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_the_console_tips"/>9.1. Suggerimenti per la console</h2>
</div>
</div>
</div>
<p>Esistono alcuni programmi di utilità per aiutare nelle attività in console.</p>
<div class="table">
<a id="listofprogramstoonsoleactivities"/>
<p class="title">
<strong>Tabella 9.1. Elenco di programmi che supportano le attività in console</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di programmi che supportano le attività in console" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/mc"> <code class="literal">mc</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=mc">V:54, I:226</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/m/mc.html">1482</a>
</td>
<td style="text-align: left"> Vedere <a class="xref" href="ch01.it.html#_midnight_commander_mc" title="1.3. Midnight Commander (MC)">Sezione 1.3, «Midnight Commander (MC)»</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/bsdutils">
<code class="literal">bsdutils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=bsdutils">V:610, I:999</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/b/bsdutils.html">355</a>
</td>
<td style="text-align: left"> Il comando <code class="literal">script</code> per creare trascrizioni della sessione
in terminale </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/screen">
<code class="literal">screen</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=screen">V:91, I:263</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/screen.html">997</a>
</td>
<td style="text-align: left"> multiplexer per terminale con emulazione di terminale VT100/ANSI </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/tmux"> <code class="literal">tmux</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=tmux">V:39, I:147</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/t/tmux.html">1106</a>
</td>
<td style="text-align: left"> alternativa per multiplexer per terminale (usare invece "Control-B") </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/fzf"> <code class="literal">fzf</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=fzf">V:3, I:11</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/f/fzf.html">3323</a>
</td>
<td style="text-align: left"> strumento per ricerca di testo fuzzy </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/fzy"> <code class="literal">fzy</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=fzy">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/f/fzy.html">54</a>
</td>
<td style="text-align: left"> strumento per ricerca di testo fuzzy </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/rlwrap">
<code class="literal">rlwrap</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=rlwrap">V:1, I:17</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/r/rlwrap.html">330</a>
</td>
<td style="text-align: left"> wrapper a riga di comando per la funzionalità readline </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/ledit"> <code class="literal">ledit</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=ledit">V:0, I:13</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/l/ledit.html">315</a>
</td>
<td style="text-align: left"> wrapper a riga di comando per la funzionalità readline </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/rlfe"> <code class="literal">rlfe</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=rlfe">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/r/rlfe.html">42</a>
</td>
<td style="text-align: left"> wrapper a riga di comando per la funzionalità readline </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/ripgrep">
<code class="literal">ripgrep</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=ripgrep">V:3, I:14</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/r/ripgrep.html">4557</a>
</td>
<td style="text-align: left"> ricerca veloce e ricorsiva di stringhe nell'albero del codice sorgente con
filtraggio automatico </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_recording_the_shell_activities_cleanly"/>9.1.1. Registrare le attività della shell in modo pulito</h3>
</div>
</div>
</div>
<p>Il semplice uso di <code class="literal">script</code>(1) (vedere <a class="xref" href="ch01.it.html#_recording_the_shell_activities" title="1.4.9. Registrare le attività della shell">Sezione 1.4.9, «Registrare le attività della shell»</a>) per registrare l'attività della
shell produce un file con caratteri di controllo. Ciò può essere evitato
usando <code class="literal">col</code>(1) nel modo seguente.</p>
<pre class="screen">$ script
Script started, file is typescript</pre>
<p>Fare tutto quello che si vuole … e poi premere <code class="literal">Ctrl-D</code> per
uscire da <code class="literal">script</code>.</p>
<pre class="screen">$ col -bx < typescript > cleanedfile
$ vim cleanedfile</pre>
<p>Ci sono metodi alternativi per registrare le attività nella shell:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Usare <code class="literal">tee</code> (utilizzabile durante il processo di avvio
nell'initramfs): </p>
<pre class="screen">$ sh -i 2>&1 | tee typescript</pre>
</li>
<li class="listitem">
<p> Usare <code class="literal">gnome-terminal</code> con il buffer delle righe esteso per
scorrere all'indietro. </p>
</li>
<li class="listitem">
<p>Usare <code class="literal">screen</code> con "<code class="literal">^A H</code>" (vedere <a class="xref" href="ch09.it.html#_the_screen_program" title="9.1.2. Il programma screen">Sezione 9.1.2, «Il programma screen»</a>) per effettuare la registrazione della
console.</p>
</li>
<li class="listitem">
<p>Usare <code class="literal">vim</code> con "<code class="literal">:terminal</code>" per entrare
nella modalità terminale. Usare "<code class="literal">Ctrl-W N</code>" per uscire
dalla modalità terminale nella modalità normale. Usare "<code class="literal">:w
typescript</code>" per scrivere il buffer in un file.</p>
</li>
<li class="listitem">
<p>Usare <code class="literal">emacs</code> con "<code class="literal">M-x shell</code>",
"<code class="literal">M-x eshell</code>" o "<code class="literal">M-x term</code>" per entrare
nella console di registrazione. Usare "<code class="literal">C-x C-w</code>" per
scrivere il buffer in un file.</p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_screen_program"/>9.1.2. Il programma screen</h3>
</div>
</div>
</div>
<p><code class="literal">screen</code>(1) non permette solamente il funzionamento di una
finestra di terminale con processi multipli, ma permette anche ai <span class="strong"><strong>processi in shell remote di sopravvivere a connessioni
interrotte</strong></span>. Quello che segue è un tipico scenario di uso di
<code class="literal">screen</code>(1).</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p> Si fa il login in una macchina remota. </p>
</li>
<li class="listitem">
<p> Si avvia <code class="literal">screen</code> in una console singola. </p>
</li>
<li class="listitem">
<p> Si eseguono svariati programmi in finestre <code class="literal">screen</code> create
con <code class="literal">^A c</code> ("Control-A" seguito da "c"). </p>
</li>
<li class="listitem">
<p> Ci si sposta tra le svariate finestre <code class="literal">screen</code> create con
<code class="literal">^A n</code> ("Control-A" seguito da "n"). </p>
</li>
<li class="listitem">
<p> All'improvviso si ha la necessità di lasciare il terminale, ma non si vuole
perdere il lavoro attivo e si vuole mantenere la connessione. </p>
</li>
<li class="listitem">
<p> Si può <span class="strong"><strong>scollegare</strong></span> la sessione
<code class="literal">screen</code> in uno qualsiasi dei metodi seguenti. </p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Scollegare brutalmente la connessione di rete </p>
</li>
<li class="listitem">
<p> Digitare <code class="literal">^A d</code> ("Control-A" seguito da "d") e fare
manualmente il log out dalla connessione remota. </p>
</li>
<li class="listitem">
<p> Digitare <code class="literal">^A DD</code> ("Control-A" seguito da "DD") per far si
che <code class="literal">screen</code> si scolleghi e faccia il log out. </p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p> Ci si ricollega alla stessa macchina remota (anche da un terminale diverso). </p>
</li>
<li class="listitem">
<p> Si avvia <code class="literal">screen</code> con "<code class="literal">screen -r</code>". </p>
</li>
<li class="listitem">
<p><code class="literal">screen</code> magicamente <span class="strong"><strong>ricollega</strong></span> tutte le finestre
<code class="literal">screen</code> precedente con tutti i programmi in esecuzione
attivi. </p>
</li>
</ol>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Con <code class="literal">screen</code> si può risparmiare sui costi di connessione
per connessioni a tempo, come dial-up o conteggiate a pacchetti, perché si
può lasciare un processo attivo mentre si è disconnessi e poi ricollegarvisi
successivamente quando è possibile connettersi di nuovo.</p>
</td>
</tr>
</table>
</div>
<p>In una sessione <code class="literal">screen</code> 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
<code class="literal">screen</code> vengono inserite digitando <code class="literal">^A</code>
("Control-A") più un singolo tasto [più eventuali parametri]. Ecco alcune
combinazioni di tasti importanti da ricordare. </p>
<div class="table">
<a id="listofkeybindingsforscreen"/>
<p class="title">
<strong>Tabella 9.2. Elenco di associazioni di tasti per screen</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di associazioni di tasti per screen" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> azione associata </th>
<th style="text-align: left"> significato </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"> <code class="literal">^A ?</code> </td>
<td style="text-align: left"> mostra una schermata di aiuto (visualizza le associazioni di tasti) </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A c</code> </td>
<td style="text-align: left"> crea una nuova finestra e si sposta in essa </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A n</code> </td>
<td style="text-align: left"> va alla finestra successiva </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A p</code> </td>
<td style="text-align: left"> va alla finestra precedente </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A 0</code> </td>
<td style="text-align: left"> va alla finestra numero 0 </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A 1</code> </td>
<td style="text-align: left"> va alla finestra numero 1 </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A w</code> </td>
<td style="text-align: left"> mostra l'elenco delle finestre </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A a</code> </td>
<td style="text-align: left"> invia Ctrl-A alla finestra attuale come input da tastiera </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A h</code> </td>
<td style="text-align: left"> scrive una copia della schermata della finestra attuale in un file </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A H</code> </td>
<td style="text-align: left"> inizia/termina la registrazione dell'attività della finestra attuale in un
file </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A ^X</code> </td>
<td style="text-align: left"> blocca il terminale (protetto da password) </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A d</code> </td>
<td style="text-align: left"> scollega la sessione screen dal terminale </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">^A DD</code> </td>
<td style="text-align: left"> scollega la sessione di screen e fa il log out </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>Vedere <code class="literal">screen</code>(1) per i dettagli.</p>
<p>Vedere <code class="literal">tmux</code>(1) per le funzionalità del comando
alternativo.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_navigating_around_directories"/>9.1.3. Navigare nelle directory</h3>
</div>
</div>
</div>
<p>In <a class="xref" href="ch01.it.html#_customizing_bash" title="1.4.2. Personalizzare bash">Sezione 1.4.2, «Personalizzare bash»</a> sono descritti 2 suggerimenti per
permettere una navigazione veloce nelle directory:
<code class="literal">$CDPATH</code> e <code class="literal">mc</code>. </p>
<p>Se si usa un programma per filtro di testo fuzzy, si può evitare di digitare
il percorso esatto. Per <code class="literal">fzf</code>, includere quanto segue in
<code class="literal">~/.bashrc</code>. </p>
<pre class="screen">FZF_KEYBINDINGS_PATH=/usr/share/doc/fzf/examples/key-bindings.bash
if [ -f $FZF_KEYBINDINGS_PATH ]; then
. $FZF_KEYBINDINGS_PATH
fi
FZF_COMPLETION_PATH=/usr/share/doc/fzf/examples/completion.bash
if [ -f $FZF_COMPLETION_PATH ]; then
. $FZF_COMPLETION_PATH
fi</pre>
<p>Per esempio:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>Ci si può spostare in una sottodirectory molto in profondità con uno sforzo
minimo. Prima si digita "<code class="literal">cd **</code>" e si preme il tasto
<code class="literal">Tab</code>. Poi verrano mostrati i percorsi candidati. Digitando
stringhe parziali del percorso, ad esempio <code class="literal">s/d/b foo</code>, si
possono restringere i percorsi candidati. Si seleziona il percorso che deve
usare <code class="literal">cd</code> con i tasti per spostare il cursore e il tasto
Invio.</p>
</li>
<li class="listitem">
<p>Si può selezionare un comando dalla cronologia dei comandi in modo più
efficiente con sforzo minimo. Si preme <code class="literal">Ctrl-R</code> al prompt
dei comandi. Poi verranno mostrati comandi candidati. Digitando stringhe di
comando parziali, es. <code class="literal">vim d</code>, si restringono i
candidati. Si seleziona quello da utilizzare con i tasti per il cursore e il
tasto Invio.</p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_readline_wrapper"/>9.1.4. Wrapper per readline</h3>
</div>
</div>
</div>
<p>Alcuni comandi come <code class="literal">/usr/bin/dash</code> che mancano della
funzionalità di modifica della cronologia della riga di comando possono
aggiungere tale funzionalità in modo trasparente venendo eseguito sotto
<code class="literal">rlwrap</code> o un suo equivalente.</p>
<pre class="screen"> $ rlwrap dash -i</pre>
<p>Questo fornisce una comoda piattaforma per testare dettagli per
<code class="literal">dash</code> con un ambiente amichevole in stile
<code class="literal">bash</code>. </p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_scanning_the_source_code_tree"/>9.1.5. Strumenti per la fusione di codice sorgente</h3>
</div>
</div>
</div>
<p>Il comando <code class="literal">rg</code>(1) nel pacchetto <code class="literal">ripgrep</code>
offre un'alternativa più veloce al comando <code class="literal">grep</code>(1) per
scansionare l'albero del codice sorgente nelle situazioni tipiche. Sfrutta
le moderne CPU multi-core e applica automaticamente filtri ragionevoli per
saltare alcuni file. </p>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_customizing_vim"/>9.2. Personalizzare vim</h2>
</div>
</div>
</div>
<p> Dopo aver imparato le basi di <code class="literal">vim</code>(1) attraverso <a class="xref" href="ch01.it.html#_using_vim" title="1.4.8. Usare vim">Sezione 1.4.8, «Usare vim»</a>, leggere"<a class="ulink" href="https://www.moolenaar.net/habits.html">Seven habits of effective text
editing (2000)</a>" di Bram Moolenaar per capire come
<code class="literal">vim</code> dovrebbe essere usato. </p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Attenzione]" src="images/caution.png"/>
</td>
<th align="left">Attenzione</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Non cercare di cambiare le associazioni dei tasti predefinite senza ottime
ragioni.</p>
</td>
</tr>
</table>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_customizing_vim_with internal_features"/>9.2.1. Personalizzare vim con le funzionalità interne</h3>
</div>
</div>
</div>
<p>Il comportamento di <code class="literal">vim</code> può essere modificato in modo
significativo abilitando le sue funzionalità interne attraverso i comandi
della modalità <code class="literal">Ex</code> come "<code class="literal">set ...</code>" per
impostare le opzioni di vim.</p>
<p>Questo comandi per la modalità <code class="literal">Ex</code> possono essere inclusi
nel file vimrc dell'utente, tradizionalmente "<code class="literal">~/.vimrc</code>" o
quello adatto a git "<code class="literal">~/.vim/vimrc</code>". Ecco un esempio molto
semplice <a href="#ftn.idm13994" class="footnote" id="idm13994"><sup class="footnote">[2]</sup></a>:
</p>
<pre class="screen">colorscheme murphy " from /usr/share/vim/vim??/colors/*.vim
filetype plugin indent on " filetype aware behavior
syntax enable " Syntax highlight
"set spelllang=en_us " Spell check language as en_us
"set spell " Enable spell check
set autoindent " Copy indent from current line
set smartindent " More than autoindent (Drop/Pop after {/})
set nosmarttab " <Tab>-key always inserts blanks
set backspace=indent,eol,start " Back space through everything
set laststatus=2 " Always show status line
set statusline=%<%f%m%r%h%w%=%y[U+%04B]%2l/%2L=%P,%2c%V</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_customizing_vim_with_external_packages"/>9.2.2. Personalizzare vim con pacchetti esterni</h3>
</div>
</div>
</div>
<p>Semplice personalizzazioni per abilitare secure-modelines e un IDE classico
possono essere abilitate installando il pacchetto <a class="ulink" href="https://packages.debian.org/unstable/vim-scripts">vim-scripts</a> e aggiungendo quanto segue in fondo
al file vimrc dell'utente.</p>
<pre class="screen">packadd! secure-modelines
packadd! winmanager
let mapleader = ' '
" Toggle paste mode with <SPACE>p
set pastetoggle=<leader>p
" IDE-like UI for files and buffers with <space>w
nnoremap <leader>w :WMToggle<CR>
" Use safer keys <C-?> for moving to another window
nnoremap <C-H> <C-W>h
nnoremap <C-J> <C-W>j
nnoremap <C-K> <C-W>k
nnoremap <C-L> <C-W>l</pre>
<p>Per far sì che le associazioni di tasti precedenti funzionino correttamente,
il programma di terminale deve essere configurato per generare "ASCII DEL"
per il tasto <code class="literal">Backspace</code> e "sequenza Escape" per il tasto
<code class="literal">Canc</code>.</p>
<p>Il nuovo sistema di pacchetti nativo di Vim funziona bene con
"<code class="literal">git</code>" e "<code class="literal">git submodule</code>". Una
configurazione d'esempio di questo tipo può essere trovata in<a class="ulink" href="https://github.com/osamuaoki/dot-vim">my git repository:
dot-vim</a>. Essenzialmente fa:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>Usando "<code class="literal">git</code>" e "<code class="literal">git submodule</code>", i
pacchetti esterni più recenti, come
"<code class="literal"><span class="emphasis"><em>nome</em></span></code>", sono messi in
<code class="literal">~/.vim/pack/*/opt/<span class="emphasis"><em>nome</em></span></code> e simili.</p>
</li>
<li class="listitem">
<p>Aggiungendo la riga <code class="literal">:packadd! <span class="emphasis"><em>nome</em></span></code>
al file vimrc dell'utente, questi pacchetti vengono messi nel
<code class="literal">runtimepath</code>.</p>
</li>
<li class="listitem">
<p>Vim carica questi pacchetti in <code class="literal">runtimepath</code> durante la sua
inizializzazione.</p>
</li>
<li class="listitem">
<p>Al termine della sua inizializzazione, i tag per i documenti installati sono
aggiornati con "<code class="literal">helptags ALL</code>".</p>
</li>
</ul>
</div>
<p>Per altro ancora, avviare <code class="literal">vim</code> con "<code class="literal">vim
--startuptime vimstart.log</code>" per controllare l'effettiva sequenza
di esecuzione e il tempo speso in ogni passo.</p>
<p>Pacchetti per plugin esterni interessanti possono essere trovati in:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> <a class="ulink" href="https://www.vim.org/"> Vim - the ubiquitous text editor
</a> -- Il sito originale a monte ufficiale di Vim e degli script vim </p>
</li>
<li class="listitem">
<p> <a class="ulink" href="https://vimawesome.com/"> VimAwsome </a> -- Elenco di plugin per Vim </p>
</li>
<li class="listitem">
<p> <a class="ulink" href="https://packages.debian.org/unstable/vim-scripts">vim-scripts</a> -- pacchetto Debian: una
raccolta di script per vim </p>
</li>
</ul>
</div>
<p>Può essere fonte di confusione vedere troppi modi<a href="#ftn.idm14047" class="footnote" id="idm14047"><sup class="footnote">[3]</sup></a> per gestire e caricare questi pacchetti esterni in
<code class="literal">vim</code>. Controllare le informazioni originali è la soluzione
migliore.</p>
<div class="table">
<a id="informationonthetializationofvim"/>
<p class="title">
<strong>Tabella 9.3. Informazioni sull'inizializzazione di <code class="literal">vim</code></strong>
</p>
<div class="table-contents">
<table class="table" summary="Informazioni sull'inizializzazione di vim" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> Combinazione di tasti </th>
<th style="text-align: left"> informazioni </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"> <code class="literal">:help pacchetto</code> </td>
<td style="text-align: left"> spiegazione sul meccanismo dei pacchetti di vim </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">:help runtimepath</code> </td>
<td style="text-align: left"> spiegazione del meccanismo <code class="literal">runtimepath</code> </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">:version</code> </td>
<td style="text-align: left"> stati interni inclusi i candidati per il file vimrc </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">:echo $VIM</code> </td>
<td style="text-align: left"> la variabile d'ambiente "<code class="literal">$VIM</code>" usata per localizzare il
file vimrc</td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">:set runtimepath?</code> </td>
<td style="text-align: left"> elenco di directory in cui verranno cercati tutti i file di supporto a
runtime </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">:echo $VIMRUNTIME</code> </td>
<td style="text-align: left"> la variabile d'ambiente "<code class="literal">$VIMRUNTIME</code>" usata per
localizzare vari file di supporto a runtime forniti dal sistema </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_data_recording_and_presentation"/>9.3. Registrazione e presentazione di dati</h2>
</div>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_log_daemon"/>9.3.1. Demoni di registro</h3>
</div>
</div>
</div>
<p>Molti programmi registrano le proprie attività in formato di file testuale
nella directory "<code class="literal">/var/log/</code>".</p>
<p><code class="literal">logrotate</code>(8) viene usato per semplificare
l'amministrazione dei file di log in un sistema che genera molti file di
log.</p>
<p>Molti nuovi programmi registrano le loro attività nel formato di file
binario, usando il servizio Journal <code class="literal">systemd-journald</code>(8),
nella directory "<code class="literal">/var/log/journal</code>".</p>
<p>Si può fare il registro di dati nel Journal
<code class="literal">systemd-journald</code>(8) da uno script di shell usando il
comando <code class="literal">systemd-cat</code>(1).</p>
<p>Vedere <a class="xref" href="ch03.it.html#_the_system_message" title="3.4. I messaggi di sistema">Sezione 3.4, «I messaggi di sistema»</a> e <a class="xref" href="ch03.it.html#_the_kernel_message" title="3.3. I messaggi del kernel">Sezione 3.3, «I messaggi del kernel»</a>.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_log_analyzer"/>9.3.2. Analizzatori di registro</h3>
</div>
</div>
</div>
<p>Quelli che seguono sono alcuni analizzatori di registro degni di nota
("<code class="literal">~Gsecurity::log-analyzer</code>" in
<code class="literal">aptitude</code>(8)).</p>
<div class="table">
<a id="listofsystemloganalyzers"/>
<p class="title">
<strong>Tabella 9.4. Elenco di analizzatori del registro di sistema</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di analizzatori del registro di sistema" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/logwatch">
<code class="literal">logwatch</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=logwatch">V:14, I:16</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/l/logwatch.html">2328</a>
</td>
<td style="text-align: left"> analizzatore di registro scritto in Perl con un bell'output </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/fail2ban">
<code class="literal">fail2ban</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=fail2ban">V:111, I:125</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/f/fail2ban.html">2127</a>
</td>
<td style="text-align: left"> strumento per interdire IP che causano errori di autenticazione multipli </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/analog">
<code class="literal">analog</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=analog">V:3, I:100</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/analog.html">3739</a>
</td>
<td style="text-align: left"> analizzatore del registro di server web </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/awstats">
<code class="literal">awstats</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=awstats">V:8, I:13</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/awstats.html">6895</a>
</td>
<td style="text-align: left"> analizzatore potente e ricco di funzionalità per registro di server web </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/sarg"> <code class="literal">sarg</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=sarg">V:1, I:2</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/sarg.html">845</a>
</td>
<td style="text-align: left"> generatore di rapporti sull'analisi di squid </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/pflogsumm">
<code class="literal">pflogsumm</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=pflogsumm">V:2, I:4</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/pflogsumm.html">109</a>
</td>
<td style="text-align: left"> strumento per riassunti delle voci di registro di Postfix </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/syslog-summary">
<code class="literal">syslog-summary</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=syslog-summary">V:0, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/syslog-summary.html">30</a>
</td>
<td style="text-align: left"> riassume i contenuti di un file di registro di sistema </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/fwlogwatch">
<code class="literal">fwlogwatch</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=fwlogwatch">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/f/fwlogwatch.html">477</a>
</td>
<td style="text-align: left"> analizzatore del registro del firewall </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/squidview">
<code class="literal">squidview</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=squidview">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/squidview.html">189</a>
</td>
<td style="text-align: left"> monitora e analizza i file access.log di squid </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/swatch">
<code class="literal">swatch</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=swatch">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/swatch.html">99</a>
</td>
<td style="text-align: left"> visualizzatore di file di registro con corrispondenze con espressioni
regolari, evidenziazione ed eventi </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/crm114">
<code class="literal">crm114</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=crm114">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/crm114.html">1119</a>
</td>
<td style="text-align: left"> Controllable Regex Mutilator e filtro per spam (CRM114) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/icmpinfo">
<code class="literal">icmpinfo</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=icmpinfo">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/i/icmpinfo.html">44</a>
</td>
<td style="text-align: left"> interpreta i messaggi ICMP </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Nota]" src="images/note.png"/>
</td>
<th align="left">Nota</th>
</tr>
<tr>
<td align="left" valign="top">
<p><a class="ulink" href="http://crm114.sourceforge.net/">CRM114</a> fornisce un'infrastruttura basata su un
linguaggio per scrivere filtri <span class="strong"><strong>fuzzy</strong></span> con
la <a class="ulink" href="http://www.laurikari.net/tre/">libreria per espressioni regolari
TRE</a>. Il suo utilizzo più comune è come filtro per la posta
spazzatura, ma può anche essere usato come analizzatore di registro.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_customized_display_of_text_data"/>9.3.3. Visualizzazione personalizzata di dati di testo</h3>
</div>
</div>
</div>
<p>Sebbene gli strumenti di paginazione, come <code class="literal">more</code>(1) e
<code class="literal">less</code>(1) (vedere <a class="xref" href="ch01.it.html#_the_pager" title="1.4.5. Il paginatore">Sezione 1.4.5, «Il paginatore»</a>) e gli
strumenti personalizzati per l'evidenziazione e la formattazione (vedere
<a class="xref" href="ch11.it.html#_highlighting_and_formatting_plain_text_data" title="11.1.8. Evidenziare e formattare dati in puro testo">Sezione 11.1.8, «Evidenziare e formattare dati in puro testo»</a>) possano
mostrare il testo in un modo piacevole, gli editor generici (vedere <a class="xref" href="ch01.it.html#_the_text_editor" title="1.4.6. L'editor di testo">Sezione 1.4.6, «L'editor di testo»</a>) sono più versatili e personalizzabili.</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Per <code class="literal">vim</code>(1) e la sua modalità per paginatore, ossia
<code class="literal">view</code>(1), "<code class="literal">:set hls</code>" abilita la ricerca
con evidenziazione.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_customized_display_of_time_and_date"/>9.3.4. Visualizzazione personalizzata di date e orari</h3>
</div>
</div>
</div>
<p>Il formato predefinito per la visualizzazione delle date e degli orari per
il comando "<code class="literal">ls -l</code>" dipende dalla <span class="strong"><strong>localizzazione</strong></span> (vedere <a class="xref" href="ch01.it.html#_timestamps" title="1.2.6. Orari">Sezione 1.2.6, «Orari»</a> per il valore). Si fa dapprima riferimento alla
variabile "<code class="literal">$LANG</code>" che può essere scavalcata dalle
variabili d'ambiente "<code class="literal">$LC_TIME</code>" o
"<code class="literal">$LC_ALL</code>".</p>
<p>Il formato effettivo di visualizzazione predefinito per ciascuna
localizzazione dipende dalla versione della libreria C standard (il
pacchetto <code class="literal">libc6</code>) usata. Differenti rilasci di Debian
hanno cioè valori predefiniti diversi. Per i formati ISO, vedere <a class="ulink" href="https://it.wikipedia.org/wiki/ISO_8601">ISO 8601</a>.</p>
<p>Se si desidera veramente personalizzare questo formato di visualizzazione
delle date e degli orari, oltre a ciò che è fatto con la <span class="strong"><strong>localizzazione</strong></span>, si deve impostare il <span class="strong"><strong>valore dello stile degli orari</strong></span> con l'opzione
"<code class="literal">--time-style</code>" o con il valore di
"<code class="literal">$TIME_STYLE</code>" (vedere <code class="literal">ls</code>(1),
<code class="literal">date</code>(1), "<code class="literal">info coreutils 'ls
invocation'</code>").</p>
<div class="table">
<a id="displayexamplesohetimestylevalue"/>
<p class="title">
<strong>Tabella 9.5. Esempi di visualizzazione di date e orari per il comando "<code class="literal">ls
-l</code>" con il <span class="strong">valore dello stile per gli
orari</span></strong>
</p>
<div class="table-contents">
<table class="table" summary="Esempi di visualizzazione di date e orari per il comando "ls -l" con il valore dello stile per gli orari" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> valore dello stile per gli orari </th>
<th style="text-align: left"> localizzazione </th>
<th style="text-align: left"> visualizzazione di data e ora </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"> <code class="literal">iso</code> </td>
<td style="text-align: left"> qualsiasi </td>
<td style="text-align: left"> <code class="literal">01-19 00:15</code> </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">long-iso</code> </td>
<td style="text-align: left"> qualsiasi </td>
<td style="text-align: left"> <code class="literal">2009-01-19 00:15</code> </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">full-iso</code> </td>
<td style="text-align: left"> qualsiasi </td>
<td style="text-align: left"> <code class="literal">2009-01-19 00:15:16.000000000 +0900</code> </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">locale</code> </td>
<td style="text-align: left"> <code class="literal">C</code> </td>
<td style="text-align: left"> <code class="literal">Jan 19 00:15</code> </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">locale</code> </td>
<td style="text-align: left"> <code class="literal">en_US.UTF-8</code> </td>
<td style="text-align: left"> <code class="literal">Jan 19 00:15</code> </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">locale</code> </td>
<td style="text-align: left"> <code class="literal">es_ES.UTF-8</code> </td>
<td style="text-align: left"> <code class="literal">ene 19 00:15</code> </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">+%d.%m.%y %H:%M</code> </td>
<td style="text-align: left"> qualsiasi </td>
<td style="text-align: left"> <code class="literal">19.01.09 00:15</code> </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">+%d.%b.%y %H:%M</code> </td>
<td style="text-align: left"> <code class="literal">C</code> o <code class="literal">en_US.UTF-8</code> </td>
<td style="text-align: left"> <code class="literal">19.Jan.09 00:15</code> </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">+%d.%b.%y %H:%M</code> </td>
<td style="text-align: left"> <code class="literal">es_ES.UTF-8</code> </td>
<td style="text-align: left"> <code class="literal">19.ene.09 00:15</code> </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Si può evitare di digitare lunghe opzioni nella riga di comando usando alias
per i comandi (vedere <a class="xref" href="ch01.it.html#_command_alias" title="1.5.9. Alias di comandi">Sezione 1.5.9, «Alias di comandi»</a>):</p>
<pre class="screen">alias ls='ls --time-style=+%d.%m.%y %H:%M'</pre>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_colorized_shell_echo"/>9.3.5. Output colorato per la shell</h3>
</div>
</div>
</div>
<p>L'output inviato a schermo dalla shell nella maggior parte dei terminali
moderni può essere colorato usando <a class="ulink" href="https://en.wikipedia.org/wiki/ANSI_escape_code">codici di
escape ANSI</a> (vedere
"<code class="literal">/usr/share/doc/xterm/ctlseqs.txt.gz</code>").</p>
<p>Per esempio, provare a fare quanto segue.</p>
<pre class="screen">$ RED=$(printf "\x1b[31m")
$ NORMAL=$(printf "\x1b[0m")
$ REVERSE=$(printf "\x1b[7m")
$ echo "${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}"</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_colorized_commands"/>9.3.6. Comandi colorati</h3>
</div>
</div>
</div>
<p>I comandi colorati sono comodi per ispezionare il loro output in modo
interattivo. Nel mio file "<code class="literal">~/.bashrc</code>" io includo quanto
segue.</p>
<pre class="screen">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</pre>
<p>Questo uso degli alias limita gli effetti colorati all'uso interattivo dei
comandi. Ha il vantaggio, rispetto all'esportazione della variabile
d'ambiente "<code class="literal">export GREP_OPTIONS='--color=auto'</code>", che i
colori possono essere visti in programmi di paginazione come
<code class="literal">less</code>(1). Se si desidera eliminare i colori quando si
invia l'output con una pipe ad altri comandi, usare nell'esempio precedente
per "<code class="literal">~/.bashrc</code>" "<code class="literal">--color=auto</code>".</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Questi alias di colorazione possono essere disattivati nell'ambiente
interattivo invocando la shell con il comando "<code class="literal">TERM=dumb
bash</code>".</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_recording_the_editor_activities_for_complex_repeats"/>9.3.7. Registrare le attività dell'editor per ripetizioni complesse</h3>
</div>
</div>
</div>
<p>È possibile registrare le attività dell'editor per ripetere azioni
complesse.</p>
<p>Per <a class="ulink" href="https://it.wikipedia.org/wiki/Vim_(editor_di_testo)">vim</a> fare nel modo seguente.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> "<code class="literal">qa</code>": avviare la registrazione dei caratteri digitati in
un registro chiamato "<code class="literal">a</code>". </p>
</li>
<li class="listitem">
<p> … attività nell'editor </p>
</li>
<li class="listitem">
<p> "<code class="literal">q</code>": terminare la registrazione dei caratteri digitati. </p>
</li>
<li class="listitem">
<p> "<code class="literal">@a</code>": eseguire il contenuto del registro
"<code class="literal">a</code>". </p>
</li>
</ul>
</div>
<p>Per <a class="ulink" href="https://it.wikipedia.org/wiki/Emacs">Emacs</a> fare nel modo seguente.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> "<code class="literal">C-x (</code>": iniziare la definizione di una macro da
tastiera. </p>
</li>
<li class="listitem">
<p> … attività nell'editor </p>
</li>
<li class="listitem">
<p> "<code class="literal">C-x )</code>": terminare la definizione di una macro da
tastiera. </p>
</li>
<li class="listitem">
<p> "<code class="literal">C-x e</code>": eseguire la definizione di una macro da
tastiera. </p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_recording_the_graphic_image_of_an_x_application"/>9.3.8. Registrare l'immagine grafica di un'applicazione X</h3>
</div>
</div>
</div>
<p>Ci sono alcuni modi per registrare l'immagine grafica di un'applicazione X,
incluso il display di un <code class="literal">xterm</code>.</p>
<div class="table">
<a id="listofgraphicimaanipulationtools"/>
<p class="title">
<strong>Tabella 9.6. Elenco di strumenti di manipolazione di immagini grafiche</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di strumenti di manipolazione di immagini grafiche" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> Schermata </th>
<th> comando </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/gnome-screenshot">
<code class="literal">gnome-screenshot</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=gnome-screenshot">V:25, I:259</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/g/gnome-screenshot.html">1134</a>
</td>
<td style="text-align: left"> Wayland </td>
<td> applicazione per istantanee dello schermo per GNOME </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/flameshot">
<code class="literal">flameshot</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=flameshot">V:6, I:12</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/f/flameshot.html">3361</a>
</td>
<td style="text-align: left"> Wayland </td>
<td> applicazione per istantanee dello schermo sotto anabolizzanti </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/gimp"> <code class="literal">gimp</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=gimp">V:53, I:272</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/g/gimp.html">19767</a>
</td>
<td style="text-align: left"> Wayland + X </td>
<td> istantanee nel menu GUI </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/x11-apps">
<code class="literal">x11-apps</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=x11-apps">V:26, I:440</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/x/x11-apps.html">2476</a>
</td>
<td style="text-align: left"> per X </td>
<td> <code class="literal">xwd</code>(1) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/imagemagick">
<code class="literal">imagemagick</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=imagemagick">I:326</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/i/imagemagick.html">176</a>
</td>
<td style="text-align: left"> per X </td>
<td> <code class="literal">import</code>(1) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/scrot"> <code class="literal">scrot</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=scrot">V:5, I:69</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/scrot.html">129</a>
</td>
<td style="text-align: left"> per X </td>
<td> <code class="literal">scrot</code>(1) </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_recording_changes_in_configuration_files"/>9.3.9. Registrare i cambiamenti a file di configurazione</h3>
</div>
</div>
</div>
<p>Esistono strumenti specializzati per registrare i cambiamenti nei file di
configurazione con l'aiuto del sistema DVCS e per creare istantanee del
sistema in <a class="ulink" href="https://it.wikipedia.org/wiki/Btrfs">Btrfs</a>.</p>
<div class="table">
<a id="listofpackageswhigurationhistory"/>
<p class="title">
<strong>Tabella 9.7. Elenco di pacchetti che possono registrare la cronologia della
configurazione</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di pacchetti che possono registrare la cronologia della configurazione" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/etckeeper">
<code class="literal">etckeeper</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=etckeeper">V:27, I:31</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/e/etckeeper.html">164</a>
</td>
<td style="text-align: left"> archivia i file di configurazione ed i loro metadati con <a class="ulink" href="https://it.wikipedia.org/wiki/Git_(software)">Git</a> (predefinito), <a class="ulink" href="https://en.wikipedia.org/wiki/Mercurial_(software)">Mercurial</a> o <a class="ulink" href="https://en.wikipedia.org/wiki/Bazaar_(software)">Bazaar</a>
(nuovo) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/timeshift">
<code class="literal">timeshift</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=timeshift">V:3, I:6</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/t/timeshift.html">3155</a>
</td>
<td style="text-align: left"> utilità di ripristino del sistema che usa rsync o istantanee BTRFS </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/snapper">
<code class="literal">snapper</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=snapper">V:4, I:5</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/snapper.html">2233</a>
</td>
<td style="text-align: left"> strumento di gestione di istantanee del file system Linux </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>Si può anche pensare ad un approccio basato su script di <a class="xref" href="ch10.it.html#_personal_backup" title="10.2.3. Backup personale">Sezione 10.2.3, «Backup personale»</a> locale.</p>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_monitoring_controlling_and_starting_program_activities"/>9.4. Monitorare, controllare ed avviare l'attività dei programmi</h2>
</div>
</div>
</div>
<p>Le attività dei programmi possono essere monitorare e controllate usando
strumenti specializzati.</p>
<div class="table">
<a id="listoftoolsformorogramactivities"/>
<p class="title">
<strong>Tabella 9.8. Elenco di strumenti per monitorare e controllare l'attività dei programmi.</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di strumenti per monitorare e controllare l'attività dei programmi." border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/coreutils">
<code class="literal">coreutils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=coreutils">V:908, I:999</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/coreutils.html">18062</a>
</td>
<td style="text-align: left"><code class="literal">nice</code>(1): esegue un programma con priorità di
schedulazione modificata </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/bsdutils">
<code class="literal">bsdutils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=bsdutils">V:610, I:999</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/b/bsdutils.html">355</a>
</td>
<td style="text-align: left"><code class="literal">renice</code>(1): modifica la priorità di schedulazione di un
processo in esecuzione </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/procps">
<code class="literal">procps</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=procps">V:753, I:999</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/procps.html">2091</a>
</td>
<td style="text-align: left"> utilità per il file system "<code class="literal">/proc</code>":
<code class="literal">ps</code>(1), <code class="literal">top</code>(1),
<code class="literal">kill</code>(1), <code class="literal">watch</code>(1), … </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/psmisc">
<code class="literal">psmisc</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=psmisc">V:426, I:798</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/psmisc.html">909</a>
</td>
<td style="text-align: left"> utilità per il file system "<code class="literal">/proc</code>":
<code class="literal">killall</code>(1), <code class="literal">fuser</code>(1),
<code class="literal">peekfd</code>(1), <code class="literal">pstree</code>(1) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/time"> <code class="literal">time</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=time">V:10, I:181</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/t/time.html">129</a>
</td>
<td style="text-align: left"> <code class="literal">time</code>(1): esegue un programma per riportare l'uso delle
risorse di sistema in funzione del tempo </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/sysstat">
<code class="literal">sysstat</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=sysstat">V:162, I:185</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/sysstat.html">1785</a>
</td>
<td style="text-align: left"> <code class="literal">sar</code>(1), <code class="literal">iostat</code>(1),
<code class="literal">mpstat</code>(1), …: strumenti per le prestazioni di sistema per
Linux </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/isag"> <code class="literal">isag</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=isag">V:0, I:3</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/i/isag.html">106</a>
</td>
<td style="text-align: left"> Interactive System Activity Grapher (tracciamento interattivo dell'attivita)
per sysstat </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/lsof"> <code class="literal">lsof</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=lsof">V:393, I:942</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/l/lsof.html">482</a>
</td>
<td style="text-align: left"> <code class="literal">lsof</code>(8): elenca, usando l'opzione
"<code class="literal">-p</code>", i file aperti da un processo in esecuzione </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/strace">
<code class="literal">strace</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=strace">V:14, I:135</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/strace.html">2839</a>
</td>
<td style="text-align: left"> <code class="literal">strace</code>(1): traccia le chiamate e i segnali di sistema </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/ltrace">
<code class="literal">ltrace</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=ltrace">V:0, I:18</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/l/ltrace.html">338</a>
</td>
<td style="text-align: left"> <code class="literal">ltrace</code>(1): traccia le chiamate di libreria </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/xtrace">
<code class="literal">xtrace</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=xtrace">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/x/xtrace.html">353</a>
</td>
<td style="text-align: left"> <code class="literal">xtrace</code>(1): traccia la comunicazione tra client e server
X11 </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/powertop">
<code class="literal">powertop</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=powertop">V:10, I:197</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/powertop.html">650</a>
</td>
<td style="text-align: left"> <code class="literal">powertop</code>(1): informazioni sull'uso dell'alimentazione da
parte del sistema </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/cron"> <code class="literal">cron</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=cron">V:853, I:996</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/cron.html">220</a>
</td>
<td style="text-align: left"> esegue processi dal demone <code class="literal">cron</code>(8) sullo sfondo in base
ad una pianificazione </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/anacron">
<code class="literal">anacron</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=anacron">V:374, I:455</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/anacron.html">91</a>
</td>
<td style="text-align: left"> pianificatore di comandi in stile cron, per i sistemi che non sono in
esecuzione 24 ore al giorno </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/at"> <code class="literal">at</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=at">V:126, I:205</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/at.html">159</a>
</td>
<td style="text-align: left"> <code class="literal">at</code>(1) o <code class="literal">batch</code>(1): esegue un compito ad
un orario specificato o quando il carico di sistema scende sotto un certo
livello </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Il pacchetto <code class="literal">procps</code> fornisce strumenti estremamente di
base per monitorare, controllare ed avviare le attività dei programmi. È
consigliabile imparare ad usarli tutti.</p>
</td>
</tr>
</table>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_timing_a_process"/>9.4.1. Cronometrare un processo</h3>
</div>
</div>
</div>
<p>Mostrare il tempo usato dal processo invocato da un comando.</p>
<pre class="screen"># time some_command >/dev/null
real 0m0.035s # time on wall clock (elapsed real time)
user 0m0.000s # time in user mode
sys 0m0.020s # time in kernel mode</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_scheduling_priority"/>9.4.2. Priorità di schedulazione</h3>
</div>
</div>
</div>
<p>Per controllare la priorità di schedulazione di un processo è usato il
valore di nice.</p>
<div class="table">
<a id="listofnicevalueshedulingpriority"/>
<p class="title">
<strong>Tabella 9.9. Elenco di valori di nice per la priorità di schedulazione</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di valori di nice per la priorità di schedulazione" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> valore di nice </th>
<th style="text-align: left"> priorità di schedulazione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"> 19 </td>
<td style="text-align: left"> processo dalla priorità più bassa possibile (nice - gentile) </td>
</tr>
<tr>
<td style="text-align: left"> 0 </td>
<td style="text-align: left"> processo a priorità molto alta per l'utente </td>
</tr>
<tr>
<td style="text-align: left"> -20 </td>
<td style="text-align: left"> processo a priorità molto alta per root (not-nice - non gentile) </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<pre class="screen"># nice -19 top # very nice
# nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # very fast</pre>
<p>A volte un valore molto alto di nice fa più male che bene al sistema; usare
quindi questo comando con molta cautela.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_ps_command"/>9.4.3. Il comando ps</h3>
</div>
</div>
</div>
<p>Il comando <code class="literal">ps</code>(1) in un sistema Debian supporta sia le
funzionalità BSD sia quelle SystemV ed aiuta ad identificare l'attività dei
processi in modo statico.</p>
<div class="table">
<a id="listofpscommandstyles"/>
<p class="title">
<strong>Tabella 9.10. Elenco degli stili per il comando ps</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco degli stili per il comando ps" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> stile </th>
<th style="text-align: left"> comando tipico </th>
<th style="text-align: left"> funzione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"> BSD </td>
<td style="text-align: left"> <code class="literal">ps aux</code> </td>
<td style="text-align: left"> mostra %CPU %MEM </td>
</tr>
<tr>
<td style="text-align: left"> System V </td>
<td style="text-align: left"> <code class="literal">ps -efH</code> </td>
<td style="text-align: left"> mostra PPID </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>È possibile uccidere i processi figli zombie (defunti) tramite l'ID di
processo del genitore identificato dal campo "<code class="literal">PPID</code>".</p>
<p>Il comando <code class="literal">pstree</code>(1) mostra un albero dei processi.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_top_command"/>9.4.4. Il comando top</h3>
</div>
</div>
</div>
<p><code class="literal">top</code>(1) in sistemi Debian ha molte funzionalità e aiuta ad
identificare in modo dinamico i processi che si stanno comportando in modo
strano.</p>
<p>È un programma interattivo a tutto schermo. Si possono ottenere le
informazioni di aiuto sul suo uso premendo il tasto «h» e uscire premendo il
tasto «q».</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_listing_files_opened_by_a_process"/>9.4.5. Elencare i file aperti da un processo</h3>
</div>
</div>
</div>
<p>È possibile elencare tutti i file aperti da un processo attraverso il suo
PID (Identificativo di processo), ad esempio 1, con il comando seguente.</p>
<pre class="screen">$ sudo lsof -p 1</pre>
<p>Di solito il processo con PID=1 è il programma <code class="literal">init</code>.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_tracing_program_activities"/>9.4.6. Tenere traccia delle attività di un programma</h3>
</div>
</div>
</div>
<p>Si può tenere traccia dell'attività di un programma con
<code class="literal">strace</code>(1), <code class="literal">ltrace</code>(1) o
<code class="literal">xtrace</code>(1) rispettivamente per quello che riguarda
chiamate e segnali di sistema, chiamate di libreria o comunicazioni tra
client e server X11.</p>
<p>Si può tenere traccia delle chiamate di sistema del comando
<code class="literal">ls</code> nel modo seguente.</p>
<pre class="screen">$ sudo strace ls</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p> Usare lo script <span class="strong"><strong>strace-graph</strong></span> che si trova
in <span class="strong"><strong>/usr/share/doc/strace/examples/</strong></span> per
creare una bella vista ad albero. </p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_identification_of_processes_using_files_or_sockets"/>9.4.7. Identificazione di processi in base a file o socket</h3>
</div>
</div>
</div>
<p>Usando <code class="literal">fuser</code>(1) è anche possibile identificare i processi
in base ai file usando, ad esempio per
"<code class="literal">/var/log/mail.log</code>" con il comando seguente.</p>
<pre class="screen">$ sudo fuser -v /var/log/mail.log
USER PID ACCESS COMMAND
/var/log/mail.log: root 2946 F.... rsyslogd</pre>
<p>Come si vede il file "<code class="literal">/var/log/mail.log</code>" è aperto in
scrittura dal comando <code class="literal">rsyslogd</code>(8).</p>
<p>Usando <code class="literal">fuser</code>(1) si può anche identificare i processi in
base ai socket, ad esempio per "<code class="literal">smtp/tcp</code>" con il comando
seguente.</p>
<pre class="screen">$ sudo fuser -v smtp/tcp
USER PID ACCESS COMMAND
smtp/tcp: Debian-exim 3379 F.... exim4</pre>
<p>Ora si può vedere che sul sistema è in esecuzione
<code class="literal">exim4</code>(8) per gestire le connessioni <a class="ulink" href="https://it.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a> alla porta <a class="ulink" href="https://it.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol">SMTP</a> (25).</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_repeating_a_command_with_a_constant_interval"/>9.4.8. Ripetere un comando ad intervalli costanti</h3>
</div>
</div>
</div>
<p><code class="literal">watch</code>(1) esegue un programma in modo ripetitivo ad
intervalli regolari mostrando il suo output sullo schermo.</p>
<pre class="screen">$ watch w</pre>
<p>Questo comando mostra chi è attualmente connesso al sistema in modo
aggiornato ogni 2 secondi.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_repeating_a_command_looping_over_files"/>9.4.9. Ripetere un comando su diversi file</h3>
</div>
</div>
</div>
<p>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 "<code class="literal">*.ext</code>".</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Metodo del ciclo for nella shell (vedere <a class="xref" href="ch12.it.html#_shell_loops" title="12.1.4. Cicli di shell">Sezione 12.1.4, «Cicli di shell»</a>): </p>
</li>
</ul>
</div>
<pre class="screen">for x in *.ext; do if [ -f "$x"]; then command "$x" ; fi; done</pre>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>Combinazione di <code class="literal">find</code>(1) e <code class="literal">xargs</code>(1): </p>
</li>
</ul>
</div>
<pre class="screen">find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command</pre>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">find</code>(1) con l'opzione "<code class="literal">-exec</code>" con un
comando: </p>
</li>
</ul>
</div>
<pre class="screen">find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;</pre>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">find</code>(1) con l'opzione "<code class="literal">-exec</code>" con un
breve script di shell: </p>
</li>
</ul>
</div>
<pre class="screen">find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'successful'" \;</pre>
<p>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 <code class="literal">find</code>(1), vedere <a class="xref" href="ch10.it.html#_idioms_for_the_selection_of_files" title="10.1.5. Esempi di invocazione per la selezione di file">Sezione 10.1.5, «Esempi di invocazione per la selezione di file»</a>.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_starting_a_program_from_gui"/>9.4.10. Avviare un programma dalla GUI</h3>
</div>
</div>
</div>
<p>Perl l'<a class="ulink" href="https://it.wikipedia.org/wiki/Interfaccia_a_riga_di_comando">interfaccia a riga di comando
(CLI)</a>, viene eseguito il primo programma con un nome corrispondente
trovato nelle directory specificate nella variabile d'ambiente
<code class="literal">$PATH</code>. Vedere <a class="xref" href="ch01.it.html#_the_literal_path_literal_variable" title="1.5.3. La variabile "$PATH"">Sezione 1.5.3, «La variabile "<code class="literal">$PATH</code>"»</a>.</p>
<p>Per l'<a class="ulink" href="https://it.wikipedia.org/wiki/Interfaccia_grafica">interfaccia utente grafica
(GUI)</a> conforme agli standard di <a class="ulink" href="http://www.freedesktop.org/">freedesktop.org</a> i file
<code class="literal">*.desktop</code> nella directory
<code class="literal">/usr/share/applications/</code> forniscono gli attributi
necessari per la visualizzazione di ogni programma nel menu della GUI. Ogni
pacchetto che è conforme al sistema di menu xdg di Freedesktop.org installa
i propri dati di menu forniti da "*.desktop" in
"/usr/share/applications/". Gli ambienti desktop moderni che sono conformi
allo standard Freedesktop.org usano questi dati per generare i loro menu
usando il pacchetto xdg-utils. Vedere "/usr/share/doc/xdg-utils/README". </p>
<p>Per esempio, il file <code class="literal">chromium.desktop</code> definisce gli
attributi per il «Browser Web Chromium» come «Name» per il nome di
programma, «Exec» per il percorso e gli argomenti di esecuzione del
programma, «Icon» per l'icona usata, ecc. (vedere la<a class="ulink" href="http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html">Specifica per le voci per
desktop</a>), nel modo seguente:</p>
<pre class="screen">[Desktop Entry]
Version=1.0
Name=Chromium Web Browser
GenericName=Web Browser
Comment=Access the Internet
Comment[fr]=Explorer le Web
Exec=/usr/bin/chromium %U
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=chromium
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=Chromium
StartupNotify=true</pre>
<p>Questa è una descrizione molto semplificata. I file
<code class="literal">*.desktop</code> vengono analizzati nel modo seguente.</p>
<p>L'ambiente desktop imposta le variabili d'ambiente
<code class="literal">$XDG_DATA_HOME</code> e <code class="literal">$XDG_DATA_DIR</code>. Per
esempio, in GNOME 3:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">$XDG_DATA_HOME</code> non è impostata. (Viene usato il valore
predefinito: <code class="literal">$HOME/.local/share</code>.) </p>
</li>
<li class="listitem">
<p><code class="literal">$XDG_DATA_DIRS</code> è impostata a
<code class="literal">/usr/share/gnome:/usr/local/share/:/usr/share/</code>. </p>
</li>
</ul>
</div>
<p>Perciò le directory base (vedere la <a class="ulink" href="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG Base Directory
Specification</a>) e le directory <code class="literal">applications</code> sono
le seguenti.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">$HOME/.local/share/</code> →
<code class="literal">$HOME/.local/share/applications/</code> </p>
</li>
<li class="listitem">
<p><code class="literal">/usr/share/gnome/</code> →
<code class="literal">/usr/share/gnome/applications/</code> </p>
</li>
<li class="listitem">
<p><code class="literal">/usr/local/share/</code> →
<code class="literal">/usr/local/share/applications/</code> </p>
</li>
<li class="listitem">
<p><code class="literal">/usr/share/</code> → <code class="literal">/usr/share/applications/</code> </p>
</li>
</ul>
</div>
<p>I file <code class="literal">*.desktop</code> vengono analizzati all'interno di queste
directory <code class="literal">applications</code> in tale ordine.</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Una voce del menu GUI personalizzata dell'utente può essere creata
aggiungendo un file <code class="literal">*.desktop</code> nella directory
<code class="literal">$HOME/.local/share/applications/</code>.</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>In modo analogo, se viene creato un file <code class="literal">*.desktop</code> nella
directory <code class="literal">autostart</code> all'interno di queste directory di
base, il programma specificato nel file <code class="literal">*.desktop</code> viene
eseguito automaticamente all'avvio dell'ambiente desktop. Vedere la
specifica <a class="ulink" href="http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html">Desktop
Application Autostart Specification</a>.</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>In modo simile, se viene creato un file <code class="literal">*.desktop</code> nella
directory <code class="literal">$HOME/Desktop</code> e l'ambiente desktop è
configurato per supportare la funzionalità di avviatore delle icone, il
programma specificato in tale file viene eseguito quando si fa clic
sull'icona. Notare che il nome effettivo della directory
<code class="literal">$HOME/Desktop</code> dipende dalla localizzazione. Vedere
<code class="literal">xdg-user-dirs-update</code>(1).</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_customizing_program_to_be_started"/>9.4.11. Personalizzare i programmi da avviare</h3>
</div>
</div>
</div>
<p>Alcuni programmi avviano automaticamente altri programmi. Quelli che seguono
sono alcuni punti fondamentali per la personalizzazione di questo processo.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Menu di configurazione delle applicazioni: </p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Desktop GNOME3: "Impostazioni di sistema" → "System" → "Dettagli" →
"Applicazioni predefinite" </p>
</li>
<li class="listitem">
<p> Desktop KDE: "K" → "Centro di controllo" → "Componenti di KDE" → "Scelta
componenti" </p>
</li>
<li class="listitem">
<p> Browser Iceweasel: "Modifica" → "Preferenze" → "Applicazioni" </p>
</li>
<li class="listitem">
<p><code class="literal">mc</code>(1): "<code class="literal">/etc/mc/mc.ext</code>" </p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p> Variabili d'ambiente quali "<code class="literal">$BROWSER</code>",
"<code class="literal">$EDITOR</code>", "<code class="literal">$VISUAL</code>" e
"<code class="literal">$PAGER</code>" (vedere <code class="literal">environ</code>(7)) </p>
</li>
<li class="listitem">
<p> Il sistema <code class="literal">update-alternatives</code>(1) per i programmi come
"<code class="literal">editor</code>", "<code class="literal">view</code>",
"<code class="literal">x-www-browser</code>", "<code class="literal">gnome-www-browser</code>" e
"<code class="literal">www-browser</code>" (vedere <a class="xref" href="ch01.it.html#_setting_a_default_text_editor" title="1.4.7. Impostare un editor di testi predefinito">Sezione 1.4.7, «Impostare un editor di testi predefinito»</a>) </p>
</li>
<li class="listitem">
<p> Il contenuto dei file "<code class="literal">~/.mailcap</code>" e
"<code class="literal">/etc/mailcap</code>" che associano i tipi <a class="ulink" href="https://it.wikipedia.org/wiki/MIME">MIME</a> con programmi (vedere
<code class="literal">mailcap</code>(5)) </p>
</li>
<li class="listitem">
<p> Il contenuto dei file "<code class="literal">~/.mime.types</code>" e
"<code class="literal">/etc/mime.types</code>" che associano le estensioni dei nomi di
file con tipi <a class="ulink" href="https://it.wikipedia.org/wiki/MIME">MIME</a> (vedere
<code class="literal">run-mailcap</code>(1)) </p>
</li>
</ul>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p><code class="literal">update-mime</code>(8) aggiorna il file
"<code class="literal">/etc/mailcap</code>" usando il file
"<code class="literal">/etc/mailcap.order</code>" (vedere
<code class="literal">mailcap.order</code>(5)).</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Il pacchetto <code class="literal">debianutils</code> fornisce
<code class="literal">sensible-browser</code>(1),
<code class="literal">sensible-editor</code>(1) e <code class="literal">sensible-pager</code>(1)
che prendono decisioni sensate riguardo, rispettivamente, a quale browser
web, editor e paginatore invocare. La lettura di questi script di shell è
raccomandata.</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Per eseguire un'applicazione per console, come <code class="literal">mutt</code>, come
applicazione preferita in X si dovrebbe creare un'applicazione X nel modo
seguente ed impostare "<code class="literal">/usr/local/bin/mutt-term</code>" come
applicazione preferite da avviare come descritto in precedenza.</p>
<pre class="screen"># cat /usr/local/bin/mutt-term <<EOF
#!/bin/sh
gnome-terminal -e "mutt \$@"
EOF
# chmod 755 /usr/local/bin/mutt-term</pre>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Le applicazioni GUI possono essere facilmente eseguite sotto specifiche
variabili d'ambiente se il programma per "Exec" nel suo file
<code class="literal">*.desktop</code> corrispondente non specifica il percorso di
esecuzione completo. Si può abilitare l'input non inglese da tastiera in
<code class="literal">kitty</code> usando un'infrastruttura per metodo di input
<code class="literal">ibus</code> o <code class="literal">fcitx5</code> installando i pacchetti
per metodo di input richiesti e creando uno script di shell
"<code class="literal">/usr/local/bin/kitty</code>" come nell'esempio seguente.</p>
<pre class="screen"># cat /usr/local/bin/kitty <<EOF
#!/bin/sh
GLFW_IM_MODULE=ibus exec /usr/bin/kitty "\$@"
EOF
# chmod 755 /usr/local/bin/kitty</pre>
<p>Questo script <code class="literal">kitty</code> può essere messo alternativamente
nella directory "<code class="literal">~/bin/</code>" o
"<code class="literal">~/.local/bin/</code>" purché esse siano definite prima di
"<code class="literal">/usr/bin/</code>" in "<code class="literal">$PATH</code>". </p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_killing_a_process"/>9.4.12. Uccidere un processo</h3>
</div>
</div>
</div>
<p>Per uccidere un processo (o inviare ad esso un segnale) in base al suo ID
(identificativo) usare <code class="literal">kill</code>(1).</p>
<p>Per fare la stessa cosa ma in base al nome del comando del processo o ad
altri attributi, usare <code class="literal">killall</code>(1) o
<code class="literal">pkill</code>(1).</p>
<div class="table">
<a id="listoffrequentlylsforkillcommand"/>
<p class="title">
<strong>Tabella 9.11. Elenco dei segnali usati comunemente con il comando kill</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco dei segnali usati comunemente con il comando kill" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> valore del segnale </th>
<th style="text-align: left"> nome del segnale </th>
<th style="text-align: left"> azione </th>
<th style="text-align: left"> nota </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"> 0 </td>
<td style="text-align: left"> --- </td>
<td style="text-align: left"> nessun segnale viene inviato (vedere <code class="literal">kill</code>(2)) </td>
<td style="text-align: left"> controlla se il processo è in esecuzione </td>
</tr>
<tr>
<td style="text-align: left"> 1 </td>
<td style="text-align: left"> <a class="ulink" href="https://en.wikipedia.org/wiki/SIGHUP">SIGHUP</a> </td>
<td style="text-align: left"> termina il processo </td>
<td style="text-align: left"> terminale disconnesso (segnale hang up) </td>
</tr>
<tr>
<td style="text-align: left"> 2 </td>
<td style="text-align: left"> <a class="ulink" href="https://en.wikipedia.org/wiki/Signals_intelligence">SIGINT</a> </td>
<td style="text-align: left"> termina il processo </td>
<td style="text-align: left"> interrupt dalla tastiera (<code class="literal">CTRL-C</code>) </td>
</tr>
<tr>
<td style="text-align: left"> 3 </td>
<td style="text-align: left"> <a class="ulink" href="https://en.wikipedia.org/wiki/Signal_(IPC)#SIGQUIT">SIGQUIT</a> </td>
<td style="text-align: left"> termina il processo e fa un <a class="ulink" href="https://en.wikipedia.org/wiki/Core_dump">core dump</a> </td>
<td style="text-align: left"> esce dalla tastiera (<code class="literal">CTRL-\</code>) </td>
</tr>
<tr>
<td style="text-align: left"> 9 </td>
<td style="text-align: left"> <a class="ulink" href="https://en.wikipedia.org/wiki/Signal_(IPC)#SIGKILL">SIGKILL</a> </td>
<td style="text-align: left"> termina il processo </td>
<td style="text-align: left"> segnale di terminazione non bloccabile </td>
</tr>
<tr>
<td style="text-align: left"> 15 </td>
<td style="text-align: left"> <a class="ulink" href="https://en.wikipedia.org/wiki/Signal_(IPC)#SIGTERM">SIGTERM</a> </td>
<td style="text-align: left"> termina il processo </td>
<td style="text-align: left"> segnale di terminazione bloccabile </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_scheduling_tasks_once"/>9.4.13. Pianificare compiti da eseguire una volta sola</h3>
</div>
</div>
</div>
<p>Per pianificare un compito da eseguire una volta soltanto eseguire il
comando <code class="literal">at</code>(1) nel modo seguente.</p>
<pre class="screen">$ echo 'command -args'| at 3:40 monday</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_scheduling_tasks_regularly"/>9.4.14. Pianificare compiti in modo regolare</h3>
</div>
</div>
</div>
<p>Per pianificare compiti in modo regolare usare
<code class="literal">cron</code>(8). Vedere <code class="literal">crontab</code>(1) e
<code class="literal">crontab</code>(5).</p>
<p>Si può pianificare l'esecuzione di processi come utente normale, ad esempio
l'utente <code class="literal">pippo</code>, creando un file
<code class="literal">crontab</code>(5) come
"<code class="literal">/var/spool/cron/crontabs/pippo</code>" con il comando
"<code class="literal">crontab -e</code>".</p>
<p>Quello seguente è un esempio di file <code class="literal">crontab</code>(5).</p>
<pre class="screen"># use /bin/sh to run commands, no matter what /etc/passwd says
SHELL=/bin/sh
# mail any output to paul, no matter whose crontab this is
MAILTO=paul
# Min Hour DayOfMonth Month DayOfWeek command (Day... are OR'ed)
# run at 00:05, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# run at 14:15 on the first of every month -- output mailed to paul
15 14 1 * * $HOME/bin/monthly
# run at 22:00 on weekdays(1-5), annoy Joe. % for newline, last % for cc:
0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%.%%
23 */2 1 2 * echo "run 23 minutes after 0am, 2am, 4am ..., on Feb 1"
5 4 * * sun echo "run at 04:05 every Sunday"
# run at 03:40 on the first Monday of each month
40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && command -args</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Per i sistemi non in esecuzione in maniera continuata, installare il
pacchetto <code class="literal">anacron</code> per pianificare l'esecuzione di comandi
periodici, in maniera il più possibile vicina agli intervalli specificati,
in base a quanto permesso dal tempo di attività della macchina. Vedere
<code class="literal">anacron</code>(8) e <code class="literal">anacrontab</code>(5).</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Gli script con compiti pianificati di amministrazione del sistema possono
essere eseguiti periodicamente dall'account di root, ponendoli in
"<code class="literal">/etc/cron.hourly/</code>",
"<code class="literal">/etc/cron.daily/</code>",
"<code class="literal">/etc/cron.weekly/</code>" o
"<code class="literal">/etc/cron.monthly/</code>". L'orario di esecuzione di questi
script può essere personalizzato con "<code class="literal">/etc/crontab</code>" e
"<code class="literal">/etc/anacrontab</code>".</p>
</td>
</tr>
</table>
</div>
<p> <a class="ulink" href="https://en.wikipedia.org/wiki/Systemd">Systemd</a> ha una funzionalità a basso livello
per pianificare l'esecuzione di programmi senza il demone
<code class="literal">cron</code>. Per esempio,
<code class="literal">/lib/systemd/system/apt-daily.timer</code> e
<code class="literal">/lib/systemd/system/apt-daily.service</code> impostano le
attività giornaliere di scaricamento di apt. Vedere
<code class="literal">systemd.timer</code>(5) .</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_alt_sysrq_key"/>9.4.15. Tasto Alt-SysRq</h3>
</div>
</div>
</div>
<p>Premendo Alt-RSist (Stamp) seguito da un tasto fa la magia di ripristinare
il controllo del sistema.</p>
<div class="table">
<a id="listofnotablesakcommandkeys"/>
<p class="title">
<strong>Tabella 9.12. Elenco di tasti per il comando SAK degni di nota</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di tasti per il comando SAK degni di nota" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> tasto premuto dopo Alt-R_Sist </th>
<th style="text-align: left"> descrizione dell'azione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"> <code class="literal">k</code> </td>
<td style="text-align: left">uccide (<span class="strong"><strong>k</strong></span>ill) tutti i processi nella
<span class="strong"><strong>console virtuale attuale</strong></span> (<a class="ulink" href="https://en.wikipedia.org/wiki/Secure_attention_key">SAK</a>) </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">s</code> </td>
<td style="text-align: left"><span class="strong"><strong>s</strong></span>incronizza tutti i file system montati
per evitare corruzione di dati </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">u</code> </td>
<td style="text-align: left"> monta nuovamente tutti i file system in sola letturra (<span class="strong"><strong>u</strong></span>mount) </td>
</tr>
<tr>
<td style="text-align: left"> <code class="literal">r</code> </td>
<td style="text-align: left"> ripristina la tastiera dalla modalità <span class="strong"><strong>r</strong></span>aw
dopo un crash di X </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>Vedere ulteriori informazioni in <a class="ulink" href="https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html">"Linux kernel user’s and
administrator’s guide" » "Linux Magic System Request Key Hacks"</a></p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Si può usare la funzione Alt-R_Sist da un terminale SSH, ecc. scrivendo su
"<code class="literal">/proc/sysrq-trigger</code>". Per esempio, "<code class="literal">echo s >
/proc/sysrq-trigger; echo u > /proc/sysrq-trigger</code>" dal prompt
di shell di root <span class="strong"><strong>s</strong></span>incronizza ed esegue
<span class="strong"><strong>u</strong></span>mount per tutti i file system montati.</p>
</td>
</tr>
</table>
</div>
<p>L'attuale (2021) kernel Linux amd64 di Debian ha
<code class="literal">/proc/sys/kernel/sysrq=438=0b110110110</code>:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>2 = 0x2 - abilitare il controllo del livello di log della console (ON)</p>
</li>
<li class="listitem">
<p>4 = 0x4 - abilitare il controllo della tastiera (SAK, unraw) (ON)</p>
</li>
<li class="listitem">
<p>8 = 0x8 - abilitare dump di debug dei processi, ecc. (OFF)</p>
</li>
<li class="listitem">
<p>16 = 0x10 - abilitare commando sync (ON)</p>
</li>
<li class="listitem">
<p>32 = 0x20 - abiitare il ri-montaggio in sola lettura (ON)</p>
</li>
<li class="listitem">
<p>64 = 0x40 - abilitare il segnali per i processi (term, kill, oom-kill) (OFF)</p>
</li>
<li class="listitem">
<p>128 = 0x80 - permettere riavvio/spegnimento (ON)</p>
</li>
<li class="listitem">
<p>256 = 0x100 - permettere l'impostazione valore di nice di tutte le attività
RT (ON)</p>
</li>
</ul>
</div>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_system_maintenance_tips"/>9.5. Suggerimenti per l'amministrazione del sistema</h2>
</div>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_who_is_on_the_system"/>9.5.1. Chi è nel sistema?</h3>
</div>
</div>
</div>
<p>Si può controllare chi è connesso al sistema nei modi seguenti.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">who</code>(1) mostra chi ha fatto il login ed è connesso. </p>
</li>
<li class="listitem">
<p><code class="literal">w</code>(1) mostra l'elenco di chi ha fatto il login ed è
connesso e cosa sta facendo. </p>
</li>
<li class="listitem">
<p><code class="literal">last</code>(1) mostra l'elenco degli utenti che hanno fatto il
login più recentemente. </p>
</li>
<li class="listitem">
<p><code class="literal">lastb</code>(1) mostra l'elenco degli utenti che hanno tentato
il login non riuscendovi più recentemente. </p>
</li>
</ul>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Queste informazioni sugli utenti sono contenute in
"<code class="literal">/var/run/utmp</code>" e
"<code class="literal">/var/log/wtmp</code>". Vedere <code class="literal">login</code>(1) e
<code class="literal">utmp</code>(5).</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_warning_everyone"/>9.5.2. Avvertire tutti gli utenti</h3>
</div>
</div>
</div>
<p>Si può mandare un messaggio a tutti gli utenti che sono connessi al sistema
con <code class="literal">wall</code>(1) nel modo seguente.</p>
<pre class="screen">$ echo "We are shutting down in 1 hour" | wall</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_hardware_identification"/>9.5.3. Identificazione dell'hardware</h3>
</div>
</div>
</div>
<p>Per i dispositivi di tipo simil-<a class="ulink" href="https://it.wikipedia.org/wiki/Peripheral_Component_Interconnect">PCI</a> (<a class="ulink" href="https://it.wikipedia.org/wiki/Accelerated_Graphics_Port">AGP</a>, <a class="ulink" href="https://it.wikipedia.org/wiki/PCI_Express">PCI-Express</a>,
<a class="ulink" href="https://it.wikipedia.org/wiki/PC_Card#CardBus">CardBus</a>, <a class="ulink" href="https://en.wikipedia.org/wiki/ExpressCard">ExpressCard</a>, ecc.), <code class="literal">lspci</code>(8)
(probabilmente con l'opzione "<code class="literal">-nn</code>") è un buon punto di
partenza per l'identificazione dell'hardware.</p>
<p>In alternativa, si può identificare l'hardware leggendo il contenuto di
"<code class="literal">/proc/bus/pci/devices</code>" o sfogliando l'albero di
directory in "<code class="literal">/sys/bus/pci</code>" (vedere <a class="xref" href="ch01.it.html#_procfs_and_sysfs" title="1.2.12. procfs e sysfs">Sezione 1.2.12, «procfs e sysfs»</a>).</p>
<div class="table">
<a id="listofhardwareidntificationtools"/>
<p class="title">
<strong>Tabella 9.13. Elenco di strumenti per l'identificazione dell'hardware</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di strumenti per l'identificazione dell'hardware" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/pciutils">
<code class="literal">pciutils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=pciutils">V:225, I:990</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/pciutils.html">210</a>
</td>
<td style="text-align: left"> utilità PCI Linux: <code class="literal">lspci</code>(8) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/usbutils">
<code class="literal">usbutils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=usbutils">V:71, I:855</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/u/usbutils.html">325</a>
</td>
<td style="text-align: left"> utilità Linux USB: <code class="literal">lsusb</code>(8) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/nvme-cli">
<code class="literal">nvme-cli</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=nvme-cli">V:8, I:15</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/n/nvme-cli.html">1346</a>
</td>
<td style="text-align: left"> utilità NVMe per Linux: <code class="literal">nvme</code>(1) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/pcmciautils">
<code class="literal">pcmciautils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=pcmciautils">V:8, I:13</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/pcmciautils.html">91</a>
</td>
<td style="text-align: left"> utilità PCMCIA per Linux: <code class="literal">pccardctl</code>(8) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/scsitools">
<code class="literal">scsitools</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=scsitools">V:0, I:3</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/scsitools.html">375</a>
</td>
<td style="text-align: left"> raccosta di strumenti per la gestione dell'hardware
SCSI:<code class="literal">lsscsi</code>(8) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/procinfo">
<code class="literal">procinfo</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=procinfo">V:0, I:11</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/procinfo.html">132</a>
</td>
<td style="text-align: left"> informazioni sul sistema ottenute da "<code class="literal">/proc</code>":
<code class="literal">lsdev</code>(8) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/lshw"> <code class="literal">lshw</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=lshw">V:14, I:96</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/l/lshw.html">919</a>
</td>
<td style="text-align: left"> informazioni sulla configurazione hardware: <code class="literal">lshw</code>(1) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/discover">
<code class="literal">discover</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=discover">V:37, I:951</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/discover.html">98</a>
</td>
<td style="text-align: left"> sistema di identificazione dell'hardware: <code class="literal">discover</code>(8) </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_hardware_configuration"/>9.5.4. Configurazione dell'hardware</h3>
</div>
</div>
</div>
<p>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.</p>
<div class="table">
<a id="listofhardwareconfigurationtools"/>
<p class="title">
<strong>Tabella 9.14. Elenco di strumenti di configurazione dell'hardware</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di strumenti di configurazione dell'hardware" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/console-setup">
<code class="literal">console-setup</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=console-setup">V:95, I:964</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/console-setup.html">425</a>
</td>
<td style="text-align: left"> utilità Linux per i tipi di carattere e la mappa di tastiera in console </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/x11-xserver-utils">
<code class="literal">x11-xserver-utils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=x11-xserver-utils">V:285, I:506</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/x/x11-xserver-utils.html">576</a>
</td>
<td style="text-align: left"> utilità del server X: <code class="literal">xset</code>(1),
<code class="literal">xmodmap</code>(1) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/acpid"> <code class="literal">acpid</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=acpid">V:110, I:205</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/acpid.html">154</a>
</td>
<td style="text-align: left"> demone per gestire eventi inviati dall'ACPI (Advanced Configuration and
Power Interface, interfaccia avanzata per configurazione ed energia) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/acpi"> <code class="literal">acpi</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=acpi">V:12, I:190</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/acpi.html">47</a>
</td>
<td style="text-align: left"> utilità per mostrare informazioni sui device ACPI </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/sleepd">
<code class="literal">sleepd</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=sleepd">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/sleepd.html">86</a>
</td>
<td style="text-align: left"> demone per sospendere un portatile durante l'inattività </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/hdparm">
<code class="literal">hdparm</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=hdparm">V:243, I:461</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/h/hdparm.html">256</a>
</td>
<td style="text-align: left"> ottimizzazione degli accessi al disco fisso (vedere <a class="xref" href="ch09.it.html#_optimization_of_hard_disk" title="9.6.9. Ottimizzare il disco rigido">Sezione 9.6.9, «Ottimizzare il disco rigido»</a>) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/smartmontools">
<code class="literal">smartmontools</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=smartmontools">V:189, I:236</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/smartmontools.html">2199</a>
</td>
<td style="text-align: left"> controllo e monitoraggio dei sistemi di archiviazione usando <a class="ulink" href="https://it.wikipedia.org/wiki/S.M.A.R.T.">S.M.A.R.T.</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/setserial">
<code class="literal">setserial</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=setserial">V:4, I:7</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/setserial.html">103</a>
</td>
<td style="text-align: left"> raccolta di strumenti per la gestione delle porte seriali </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/memtest86+">
<code class="literal">memtest86+</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=memtest86+">V:1, I:24</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/m/memtest86+.html">12681</a>
</td>
<td style="text-align: left"> raccolta di strumenti per la gestione di hardware di memoria </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/scsitools">
<code class="literal">scsitools</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=scsitools">V:0, I:3</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/scsitools.html">375</a>
</td>
<td style="text-align: left"> raccolta di strumenti per la gestione di hardware <a class="ulink" href="https://it.wikipedia.org/wiki/SCSI">SCSI</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/setcd"> <code class="literal">setcd</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=setcd">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/setcd.html">35</a>
</td>
<td style="text-align: left"> ottimizzazione dell'accesso alle unità CD </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/big-cursor">
<code class="literal">big-cursor</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=big-cursor">I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/b/big-cursor.html">26</a>
</td>
<td style="text-align: left"> puntatori del mouse più grandi per X </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p><a class="ulink" href="https://it.wikipedia.org/wiki/ACPI">ACPI</a> è un'infrastruttura per il sistema di
gestione dell'energia più nuovo di <a class="ulink" href="https://it.wikipedia.org/wiki/Advanced_Power_Management">APM</a></p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>La modifica della frequenza della CPU nei sistemi moderni è controllata da
moduli del kernel come <code class="literal">acpi_cpufreq</code>.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_system_and_hardware_time"/>9.5.5. Orario di sistema e hardware</h3>
</div>
</div>
</div>
<p>I comandi seguenti impostano l'ora di sistema e hardware a MM/GG hh:mm,
AAAA.</p>
<pre class="screen"># date MMDDhhmmCCYY
# hwclock --utc --systohc
# hwclock --show</pre>
<p>Nei sistemi Debian, gli orari sono mostrati normalmente come ora locale, ma
l'ora di sistema e quella hardware usano di solito l'ora <a class="ulink" href="https://it.wikipedia.org/wiki/Tempo_coordinato_universale">UTC(GMT)</a>.</p>
<p>Se l'ora hardware è impostata ad UTC, modificare l'impostazione nel file
"<code class="literal">/etc/default/rcS</code>" ad "<code class="literal">UTC=yes</code>".</p>
<p>Il comando seguente riconfigura il fuso orario utilizzato dal sistema
Debian.</p>
<pre class="screen"># dpkg-reconfigure tzdata</pre>
<p>Se si desidera tenere aggiornata l'ora di sistema attraverso la rete, si
consideri l'uso del servizion <a class="ulink" href="https://it.wikipedia.org/wiki/Network_Time_Protocol">NTP</a> con pacchetti
come <code class="literal">ntp</code>, <code class="literal">ntpdate</code> e
<code class="literal">chrony</code>.</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>In <a class="ulink" href="https://en.wikipedia.org/wiki/Systemd">systemd</a>, usare invece
<code class="literal">systemd-timesyncd</code> per l'ora di rete. Vedere
<code class="literal">systemd-timesyncd</code>(8).</p>
</td>
</tr>
</table>
</div>
<p>Vedere la documentazione seguente.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> <a class="ulink" href="http://www.tldp.org/HOWTO/TimePrecision-HOWTO/index.html">Managing Accurate Date and
Time HOWTO</a> </p>
</li>
<li class="listitem">
<p> <a class="ulink" href="http://www.ntp.org/">Progetto servizi NTP
pubblici</a> </p>
</li>
<li class="listitem">
<p> Il pacchetto <code class="literal">ntp-doc</code> </p>
</li>
</ul>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p><code class="literal">ntptrace</code>(8), nel pacchetto <code class="literal">ntp</code> può
tracciare una catena di server NTP all'indietro fino alla fonte originaria.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_terminal_configuration"/>9.5.6. Configurazione del terminale</h3>
</div>
</div>
</div>
<p>Ci sono diversi componenti per configurare le funzionalità della console a
caratteri e il sistema <code class="literal">ncurses</code>(3).</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Il file "<code class="literal">/etc/terminfo/*/*</code>"
(<code class="literal">terminfo</code>(5)) </p>
</li>
<li class="listitem">
<p> La variabile d'ambiente "<code class="literal">$TERM</code>"
(<code class="literal">term</code>(7)) </p>
</li>
<li class="listitem">
<p><code class="literal">setterm</code>(1), <code class="literal">stty</code>(1),
<code class="literal">tic</code>(1) e <code class="literal">toe</code>(1) </p>
</li>
</ul>
</div>
<p>:(Se, con un <code class="literal">xterm</code> non Debian, la voce
<code class="literal">terminfo</code> per <code class="literal">xterm</code> non funziona,
cambiare il tipo di terminale "<code class="literal">$TERM</code>" da
"<code class="literal">xterm</code>" ad una delle versioni con funzionalità limitate
come "<code class="literal">xterm-r6</code>" quando si fa il login ad un sistema
Debian da remoto. Per ulteriori iedere
"<code class="literal">/usr/share/doc/libncurses5/FAQ</code>" .</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_sound_infrastructure"/>9.5.7. L'infrastruttura audio</h3>
</div>
</div>
</div>
<p>I driver di dispositivo per le schede audio per l'attuale Linux sono forniti
da <a class="ulink" href="https://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture">ALSA (Advanced Linux
Sound Architecture)</a>. ALSA fornisce una modalità di emulazione per la
compatibilità con il precedente sistema <a class="ulink" href="https://it.wikipedia.org/wiki/Open_Sound_System">OSS (Open Sound System)</a>.</p>
<p>I software applicativi possono essere configurati non solo per accedere
direttamente a device audio, ma anche per accedervi attraverso un qualche
sistema server audio standardizzato. Attualmente PulseAudio, JACK e PipeWire
vengono usati come sistemi per server audio. Vedere la <a class="ulink" href="https://wiki.debian.org/Sound">pagina del wiki Debian sull'Audio</a> per
la situazione più recente.</p>
<p>Normalmente esiste un motore audio comune per ciascun ambiente
desktop. Ciascun motore audio usato dalle applicazioni può scegliere di
connettersi a diversi server audio.</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Per testare l'altoparlante usare "<code class="literal">cat /dev/urandom >
/dev/audio</code>" oppure <code class="literal">speaker-test</code>(1) (^C per
interrompere).</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>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. <code class="literal">alsamixer</code>(1) nel pacchetto
<code class="literal">alsa-utils</code> è utile per configurare le impostazioni del
volume e di muto.</p>
</td>
</tr>
</table>
</div>
<div class="table">
<a id="listofsoundpackages"/>
<p class="title">
<strong>Tabella 9.15. Elenco di pacchetti relativi all'audio</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di pacchetti relativi all'audio" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/alsa-utils">
<code class="literal">alsa-utils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=alsa-utils">V:314, I:444</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/alsa-utils.html">2475</a>
</td>
<td style="text-align: left"> utilità per configurare ed usare ALSA </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/oss-compat">
<code class="literal">oss-compat</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=oss-compat">V:1, I:22</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/o/oss-compat.html">20</a>
</td>
<td style="text-align: left"> compatibilità OSS in ALSA per prevenire errori "<code class="literal">/dev/dsp not
found</code>" </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/pipewire">
<code class="literal">pipewire</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=pipewire">V:235, I:298</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/pipewire.html">97</a>
</td>
<td style="text-align: left"><a class="ulink" href="https://en.wikipedia.org/wiki/PipeWire">audio and video processing
engine multimedia server</a> - metapackage </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/pipewire-bin">
<code class="literal">pipewire-bin</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=pipewire-bin">V:251, I:298</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/pipewire-bin.html">1537</a>
</td>
<td style="text-align: left"><a class="ulink" href="https://en.wikipedia.org/wiki/PipeWire">audio and video processing
engine multimedia server</a> - audio server and CLI programs </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/pipewire-alsa">
<code class="literal">pipewire-alsa</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=pipewire-alsa">V:1, I:5</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/pipewire-alsa.html">193</a>
</td>
<td style="text-align: left"><a class="ulink" href="https://en.wikipedia.org/wiki/PipeWire">audio and video processing
engine multimedia server</a> - audio server to replace ALSA </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/pipewire-pulse">
<code class="literal">pipewire-pulse</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=pipewire-pulse">V:17, I:30</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/pipewire-pulse.html">47</a>
</td>
<td style="text-align: left"><a class="ulink" href="https://en.wikipedia.org/wiki/PipeWire">audio and video processing
engine multimedia server</a> - audio server to replace PulseAudio </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/pulseaudio">
<code class="literal">pulseaudio</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=pulseaudio">V:353, I:437</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/pulseaudio.html">6462</a>
</td>
<td style="text-align: left"><a class="ulink" href="https://en.wikipedia.org/wiki/PulseAudio">PulseAudio</a> server </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/libpulse0">
<code class="literal">libpulse0</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=libpulse0">V:384, I:566</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/libp/libpulse0.html">969</a>
</td>
<td style="text-align: left"><a class="ulink" href="https://en.wikipedia.org/wiki/PulseAudio">PulseAudio</a> client library </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/jackd"> <code class="literal">jackd</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=jackd">V:2, I:22</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/j/jackd.html">9</a>
</td>
<td style="text-align: left">server <a class="ulink" href="https://it.wikipedia.org/wiki/JACK_Audio_Connection_Kit">JACK (JACK Audio Connection
Kit)</a> (bassa latenza) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/libjack0">
<code class="literal">libjack0</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=libjack0">V:1, I:10</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/libj/libjack0.html">329</a>
</td>
<td style="text-align: left">libreria <a class="ulink" href="https://it.wikipedia.org/wiki/JACK_Audio_Connection_Kit">JACK (JACK Audio
Connection Kit)</a> (bassa latenza) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/libgstreamer1.0-0">
<code class="literal">libgstreamer1.0-0</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=libgstreamer1.0-0">V:405, I:570</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/libg/libgstreamer1.0-0.html">4413</a>
</td>
<td style="text-align: left"><a class="ulink" href="https://it.wikipedia.org/wiki/GStreamer">GStreamer</a>: motore audio di GNOME </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/libphonon4">
<code class="literal">libphonon4</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=libphonon4">I:34</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/libp/libphonon4.html">680</a>
</td>
<td style="text-align: left"><a class="ulink" href="https://it.wikipedia.org/wiki/Phonon">Phonon</a>: motore audio di KDE </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_disabling_the_screen_saver"/>9.5.8. Disabilitare il salvaschermo</h3>
</div>
</div>
</div>
<p>Per disabilitare il salvaschermo usare i comandi seguenti.</p>
<div class="table">
<a id="listofcommandsfongthescreensaver"/>
<p class="title">
<strong>Tabella 9.16. Elenco di comandi per disabilitare il salvaschermo</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di comandi per disabilitare il salvaschermo" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> ambiente </th>
<th style="text-align: left"> comando </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"> Console Linux </td>
<td style="text-align: left"> <code class="literal">setterm -powersave off</code> </td>
</tr>
<tr>
<td style="text-align: left"> X Window (disabilitare il salvaschermo) </td>
<td style="text-align: left"> <code class="literal">xset s off</code> </td>
</tr>
<tr>
<td style="text-align: left"> X Window (disabilitare DPMS) </td>
<td style="text-align: left"> <code class="literal">xset -dpms</code> </td>
</tr>
<tr>
<td style="text-align: left"> X Window (configurazione tramite GUI del salvaschermo) </td>
<td style="text-align: left"> <code class="literal">xscreensaver-command -prefs</code> </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_disabling_beep_sounds"/>9.5.9. Disabilitare i bip sonori</h3>
</div>
</div>
</div>
<p>Per disabilitare i bip sonori è sempre possibile disconnettere
l'altoparlante del PC; la rimozione del modulo <code class="literal">pcspkr</code> del
kernel fa stessa cosa per conto dell'utente.</p>
<p>Il comando seguente evita che il programma <code class="literal">readline</code>(3)
usato da <code class="literal">bash</code>(1) emetta suoni bip quando incontra un
carattere di allerta (ASCII=7).</p>
<pre class="screen">$ echo "set bell-style none">> ~/.inputrc</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_memory_usage"/>9.5.10. Uso della memoria</h3>
</div>
</div>
</div>
<p>Ci sono 2 risorse disponibile per l'utente per ottenere la situazione
dell'uso della memoria.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> I messaggi di avvio del kernel nel file "<code class="literal">/var/log/dmesg</code>"
contengono la dimensione esatta della memoria disponibile. </p>
</li>
<li class="listitem">
<p><code class="literal">free</code>(1) e <code class="literal">top</code>(1) mostrano informazioni
sulle risorse di memoria nel sistema mentre è in funzione. </p>
</li>
</ul>
</div>
<p>Ecco un esempio.</p>
<pre class="screen"># 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</pre>
<p>Ci si potrebbe chiedere perché dmesg dice che ci sono 990 MB liberi e free
-k dice che sono liberi 320 MB. Ne mancano più di 600 MB.</p>
<p>Non ci si deve preoccupare della grande dimensione del valore
"<code class="literal">used</code>" (usata) e del piccolo valore di
"<code class="literal">free</code>" (libera) nella riga "<code class="literal">Mem:</code>", ma
si può invece leggere la riga sottostante (con 675404 e 321780 nell'esempio
precedente) e rilassarsi.</p>
<p>Per il mio MacBook con 1GB=1048576k DRAM (il sistema video ne ruba un po'),
vedo le informazioni seguenti.</p>
<div class="table">
<a id="listofmemorysizesreported"/>
<p class="title">
<strong>Tabella 9.17. Elenco di dimensioni della memoria riportate</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di dimensioni della memoria riportate" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> fonte </th>
<th style="text-align: left"> dimensione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"> Dimensione totale in dmesg </td>
<td style="text-align: left"> 1016784k = 1GB - 31792k </td>
</tr>
<tr>
<td style="text-align: left"> Libera in dmesg </td>
<td style="text-align: left"> 990528k </td>
</tr>
<tr>
<td style="text-align: left"> Dimensione totale nella shell </td>
<td style="text-align: left"> 997184k </td>
</tr>
<tr>
<td style="text-align: left"> Libera nella shell </td>
<td style="text-align: left"> 20256k (ma in effetti 321780k) </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_system_security_and_integrity_check"/>9.5.11. Verifica della sicurezza e dell'integrità del sistema</h3>
</div>
</div>
</div>
<p>Una cattiva manutenzione del sistema può esporlo ad attacchi esterni.</p>
<p>Per verificare la sicurezza e l'integrità del sistema, si dovrebbe iniziare
dai punti seguenti.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Il pacchetto <code class="literal">debsums</code>; vedere
<code class="literal">debsums</code>(1) e <a class="xref" href="ch02.it.html#_top_level_release_file_and_authenticity" title="2.5.2. File "Release" nella directory principale ed autenticità">Sezione 2.5.2, «File "Release" nella directory principale ed autenticità»</a>. </p>
</li>
<li class="listitem">
<p> Il pacchetto <code class="literal">chkrootkit</code>; vedere
<code class="literal">chkrootkit</code>(1). </p>
</li>
<li class="listitem">
<p> La famiglia di pacchetti <code class="literal">clamav</code>; vedere
<code class="literal">clamscan</code>(1) e <code class="literal">freshclam</code>(1). </p>
</li>
<li class="listitem">
<p><a class="ulink" href="https://www.debian.org/security/faq">FAQ Debian Security</a>. </p>
</li>
<li class="listitem">
<p><a class="ulink" href="https://www.debian.org/doc/manuals/securing-debian-howto/">Manuale Securing Debian</a>. </p>
</li>
</ul>
</div>
<div class="table">
<a id="listoftoolsforsyndintegritycheck"/>
<p class="title">
<strong>Tabella 9.18. Elenco di strumenti per verificare la sicurezza e l'integrità del sistema</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di strumenti per verificare la sicurezza e l'integrità del sistema" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/logcheck">
<code class="literal">logcheck</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=logcheck">V:7, I:9</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/l/logcheck.html">102</a>
</td>
<td style="text-align: left"> demone per inviare via posta anomalie nei file di registro di sistema
all'amministratore </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/debsums">
<code class="literal">debsums</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=debsums">V:5, I:41</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/debsums.html">108</a>
</td>
<td style="text-align: left"> utilità per controllare i file dei pacchetti installati con le somme di
controllo MD5 </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/chkrootkit">
<code class="literal">chkrootkit</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=chkrootkit">V:4, I:20</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/chkrootkit.html">922</a>
</td>
<td style="text-align: left">rilevatore di <a class="ulink" href="https://it.wikipedia.org/wiki/Rootkit">rootkit</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/clamav">
<code class="literal">clamav</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=clamav">V:10, I:51</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/clamav.html">29115</a>
</td>
<td style="text-align: left"> utilità anti-virus per Unix - interfaccia a riga di comando </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/tiger"> <code class="literal">tiger</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=tiger">V:2, I:2</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/t/tiger.html">7800</a>
</td>
<td style="text-align: left"> riporta vulnerabilità nella sicurezza di sistema </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/tripwire">
<code class="literal">tripwire</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=tripwire">V:2, I:3</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/t/tripwire.html">11951</a>
</td>
<td style="text-align: left"> strumento di controllo dell'integrità di file e directory </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/john"> <code class="literal">john</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=john">V:1, I:10</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/j/john.html">471</a>
</td>
<td style="text-align: left"> strumento di violazione delle password attive </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/aide"> <code class="literal">aide</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=aide">V:1, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/aide.html">248</a>
</td>
<td style="text-align: left"> AIDE - ambiente avanzato di rilevamento delle intrusioni - binario statico </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/integrit">
<code class="literal">integrit</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=integrit">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/i/integrit.html">324</a>
</td>
<td style="text-align: left"> programma di controllo dell'integrità di file </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/crack"> <code class="literal">crack</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=crack">V:0, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/crack.html">152</a>
</td>
<td style="text-align: left"> programma per indovinare password </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>Con il piccolo script seguente è possibile controllare la presenza di tipici
errori con permessi di scrittura per tutti per i file sbagliati.</p>
<pre class="screen"># find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)</pre>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Attenzione]" src="images/caution.png"/>
</td>
<th align="left">Attenzione</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Data che il pacchetto <code class="literal">debsums</code> usa le somme di controllo
<a class="ulink" href="https://it.wikipedia.org/wiki/MD5">MD5</a> salvate localmente, non può essere
completamente affidabile come strumento di controllo della sicurezza del
sistema contro attacchi malevoli.</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_data_storage_tips"/>9.6. Suggerimenti per l'archiviazione dei dati</h2>
</div>
</div>
</div>
<p>L'avvio del sistema con un <a class="ulink" href="https://it.wikipedia.org/wiki/Live_CD">CD live</a> Linux o un
<a class="ulink" href="https://www.debian.org/releases/stable/debian-installer/">CD del debian-installer</a> in
modalità ripristino rende semplice la riconfigurazione dell'archiviazione
dei dati sul dispositivo di avvio.</p>
<p>Può essere necessario smontare manualmente dalla riga di comando con
<code class="literal">umount</code>(8) alcuni dispositivi prima di operare su di essi
se sono stati automaticamente montati dal sistema desktop GUI.</p>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_disk_space_usage"/>9.6.1. Uso dello spazio su disco</h3>
</div>
</div>
</div>
<p>L'uso dello spazio su disco può essere valutato con i programmi forniti dai
pacchetti <code class="literal">mount</code>, <code class="literal">coreutils</code> e
<code class="literal">xdu</code>:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">mount</code>(8) mostra tutti i file system (= dischi) montati. </p>
</li>
<li class="listitem">
<p><code class="literal">df</code>(1) mostra l'uso dello spazio su disco da parte dei
file system. </p>
</li>
<li class="listitem">
<p><code class="literal">du</code>(1) mostra l'uso dello spazio su disco da parte
dell'albero di directory. </p>
</li>
</ul>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Si può indirizzare l'output di <code class="literal">du</code>(8) a
<code class="literal">xdu</code>(1x) per far sì che che produca la sua
rappresentazione grafica e interattiva, usando "<code class="literal">du -k
. |xdu</code>", "<code class="literal">sudo du -k -x / |xdu</code>", ecc.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_disk_partition_configuration"/>9.6.2. Configurazione del partizionamento dei dischi</h3>
</div>
</div>
</div>
<p>Per la configurazione del <a class="ulink" href="https://en.wikipedia.org/wiki/Disk_partitioning">partizionamento dei
dischi</a>, benché <code class="literal">fdisk</code>(8) sia considerato lo
strumento standard, <code class="literal">parted</code>(8) merita un po' di
attenzione. "Dati di partizionamento del disco", "tabella delle partizioni",
"mappa delle partizioni" e "etichetta del disco" sono tutti sinonimi.</p>
<p>I PC più vecchi usano il classico schema basato su <a class="ulink" href="https://it.wikipedia.org/wiki/Master_boot_record">MBR (Master Boot Record)</a> per contenere i
dati sul <a class="ulink" href="https://en.wikipedia.org/wiki/Disk_partitioning">partizionamento del disco</a>
nel primo settore, cioè il settore <a class="ulink" href="https://it.wikipedia.org/wiki/Logical_block_addressing">LBA</a> 0 (512
byte).</p>
<p>I PC recenti con <a class="ulink" href="https://it.wikipedia.org/wiki/UEFI">Unified
Extensible Firmware Interface (UEFI)</a>, compresi i Mac basati su
Intel, usano lo schema <a class="ulink" href="https://en.wikipedia.org/wiki/GUID_Partition_Table">GPT (GUID
Partition Table)</a> per contenere i dati sul <a class="ulink" href="https://en.wikipedia.org/wiki/Disk_partitioning">partizionamento del disco</a> non nel primo
settore.</p>
<p>Sebbene <code class="literal">fdisk</code>(8) sia stato lo strumento standard per il
partizionamento dei dischi, <code class="literal">parted</code>(8) lo sta sostituendo.</p>
<div class="table">
<a id="listofdiskpartitnagementpackages"/>
<p class="title">
<strong>Tabella 9.19. Elenco di pacchetti di gestione delle partizioni dei dischi</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di pacchetti di gestione delle partizioni dei dischi" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/util-linux">
<code class="literal">util-linux</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=util-linux">V:895, I:999</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/u/util-linux.html">4974</a>
</td>
<td style="text-align: left"> utilità di sistema varie inclusi <code class="literal">fdisk</code>(8) e
<code class="literal">cfdisk</code>(8) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/parted">
<code class="literal">parted</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=parted">V:385, I:545</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/parted.html">122</a>
</td>
<td style="text-align: left"> programma GNU Parted per il ridimensionamento delle partizioni dei dischi </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/gparted">
<code class="literal">gparted</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=gparted">V:15, I:111</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/g/gparted.html">2109</a>
</td>
<td style="text-align: left"> editor delle partizioni di GNOME basato su <code class="literal">libparted</code> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/gdisk"> <code class="literal">gdisk</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=gdisk">V:358, I:506</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/g/gdisk.html">885</a>
</td>
<td style="text-align: left"> editor delle partizioni per i dischi ibridi GPT/MBR </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/kpartx">
<code class="literal">kpartx</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=kpartx">V:22, I:35</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/k/kpartx.html">74</a>
</td>
<td style="text-align: left"> programma per creare la mappatura a device per le partizioni </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Attenzione]" src="images/caution.png"/>
</td>
<th align="left">Attenzione</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Sebbene <code class="literal">parted</code>(8) sostenga di creare e ridimensionare
anche i file system, è più sicuro fare queste cose usando gli strumenti
specializzati meglio mantenuti, come <code class="literal">mkfs</code>(8)
(<code class="literal">mkfs.msdos</code>(8), <code class="literal">mkfs.ext2</code>(8),
<code class="literal">mkfs.ext3</code>(8), <code class="literal">mkfs.ext4</code>(8), …) e
<code class="literal">resize2fs</code>(8).</p>
</td>
</tr>
</table>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Nota]" src="images/note.png"/>
</td>
<th align="left">Nota</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Per poter commutare tra <a class="ulink" href="https://en.wikipedia.org/wiki/GUID_Partition_Table">GPT</a> e <a class="ulink" href="https://it.wikipedia.org/wiki/Master_boot_record">MBR</a>, è necessario cancellare direttamente i primi pochi
blocchi del contenuto del disco (vedere <a class="xref" href="ch09.it.html#_clearing_file_contents" title="9.8.6. Pulire il contenuto di file">Sezione 9.8.6, «Pulire il contenuto di file»</a>) e usare "<code class="literal">parted /dev/sdx
mklabel gpt</code>" o "<code class="literal">parted /dev/sdx mklabel msdos</code>",
per fare il cambiamento. Notare che in questo contesto è usato
"<code class="literal">msdos</code>" per <a class="ulink" href="https://it.wikipedia.org/wiki/Master_boot_record">MBR</a>.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_accessing_partition_using_uuid"/>9.6.3. Accedere alle partizioni usando UUID</h3>
</div>
</div>
</div>
<p>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, è possibile accedere ad esse in modo coerente. Ciò è utile
anche se si hanno più dischi ed il BIOS/UEFI non assegna loro un nome di
dispositivo costante.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">mount</code>(8) con l'opzione "<code class="literal">-U</code>" può
montare un device a blocchi usando l'<a class="ulink" href="https://en.wikipedia.org/wiki/Universally_Unique_Identifier">UUID</a> invece
di usare il suo nome di file come "<code class="literal">/dev/sda3</code>". </p>
</li>
<li class="listitem">
<p> Il file "<code class="literal">/etc/fstab</code>" (vedere <code class="literal">fstab</code>(5))
può usare gli <a class="ulink" href="https://en.wikipedia.org/wiki/Universally_Unique_Identifier">UUID</a>. </p>
</li>
<li class="listitem">
<p> Anche i bootloader (<a class="xref" href="ch03.it.html#_stage_2_the_boot_loader" title="3.1.2. Stadio 2: il bootloader">Sezione 3.1.2, «Stadio 2: il bootloader»</a>) possono
usare gli <a class="ulink" href="https://en.wikipedia.org/wiki/Universally_Unique_Identifier">UUID</a>. </p>
</li>
</ul>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Si può scoprire l'<a class="ulink" href="https://en.wikipedia.org/wiki/Universally_Unique_Identifier">UUID</a> di un device a blocchi
speciale con <code class="literal">blkid</code>(8).</p>
<p>Si può anche sondarlo insieme ad altre informazioni con "<code class="literal">lsblk
-f</code>".</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_lvm2"/>9.6.4. LVM2</h3>
</div>
</div>
</div>
<p>LVM2 è un <a class="ulink" href="https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)">gestore di volumi
logici</a> per il kernel Linux. Con LVM2 si possono creare partizioni
dei dischi in volumi logici invece che sugli hard disk fisici.</p>
<p>LVM richiede quanto segue.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> la gestione di device-mapper nel kernel Linux (predefinita per i kernel
Debian) </p>
</li>
<li class="listitem">
<p> la libreria per la gestione di device-mapper in spazio utente (pacchetto
<code class="literal">libdevmapper*</code>) </p>
</li>
<li class="listitem">
<p> gli strumenti LVM2 in spazio utente (pacchetto <code class="literal">lvm2</code>) </p>
</li>
</ul>
</div>
<p>Per iniziare a comprendere LVM2 guardare le pagine di manuale seguenti.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">lvm</code>(8): Principi di base del meccanismo LVM2 (elenco di
tutti i comandi di LVM2) </p>
</li>
<li class="listitem">
<p><code class="literal">lvm.conf</code>(5): File di configurazione per LVM2 </p>
</li>
<li class="listitem">
<p><code class="literal">lvs</code>(8): Riporta informazioni sui volumi logici </p>
</li>
<li class="listitem">
<p><code class="literal">vgs</code>(8): Riporta informazioni sui gruppi di volumi </p>
</li>
<li class="listitem">
<p><code class="literal">pvs</code>(8): Riporta informazioni sui volumi fisici </p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_filesystem_configuration"/>9.6.5. Configurazione del file system</h3>
</div>
</div>
</div>
<p>Per il file system <a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">ext4</a>, il pacchetto
<code class="literal">e2fsprogs</code> fornisce gli strumenti seguenti.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">mkfs.ext3</code>(8) per creare nuovi file system <a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">ext4</a> </p>
</li>
<li class="listitem">
<p><code class="literal">fsck.ext4</code>(8) per controllare e riparare file system
<a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">ext4</a> esistenti </p>
</li>
<li class="listitem">
<p><code class="literal">tune2fs</code>(8) per configurare i superblocchi di un file
system <a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">ext4</a> </p>
</li>
<li class="listitem">
<p><code class="literal">debugfs</code>(8) per fare il debug di file system <a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">ext4</a> in modo interattivo. (Ha un comando
<code class="literal">undel</code> per ripristinare file eliminati.) </p>
</li>
</ul>
</div>
<p>I comandi <code class="literal">mkfs</code>(8) e <code class="literal">fsck</code>(8) sono
forniti dal pacchetto <code class="literal">e2fsprogs</code> come front-end per vari
programmi dipendenti dal file syste (<code class="literal">mkfs.tipofs</code> e
<code class="literal">fsck.tipofs</code>). Per il file system <a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">ext4</a> , sono <code class="literal">mkfs.ext4</code>(8) e
<code class="literal">fsck.ext4</code>(8) (sono un collegamento simbolico a
<code class="literal">mke2fs</code>(8) e <code class="literal">e2fsck</code>(8)).</p>
<p>Sono disponibili comandi simili per ciascun file system supportato da Linux.</p>
<div class="table">
<a id="listoffilesystemnagementpackages"/>
<p class="title">
<strong>Tabella 9.20. Elenco di pacchetti di gestione dei file system</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di pacchetti di gestione dei file system" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/e2fsprogs">
<code class="literal">e2fsprogs</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=e2fsprogs">V:703, I:999</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/e/e2fsprogs.html">1480</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://it.wikipedia.org/wiki/Ext2">ext2</a>/<a class="ulink" href="https://it.wikipedia.org/wiki/Ext3">ext3</a>/<a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">ext4</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/btrfs-progs">
<code class="literal">btrfs-progs</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=btrfs-progs">V:43, I:72</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/b/btrfs-progs.html">4281</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://it.wikipedia.org/wiki/Btrfs">Btrfs</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/reiserfsprogs">
<code class="literal">reiserfsprogs</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=reiserfsprogs">V:11, I:27</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/r/reiserfsprogs.html">1132</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://it.wikipedia.org/wiki/ReiserFS">Reiserfs</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/zfsutils-linux">
<code class="literal">zfsutils-linux</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=zfsutils-linux">V:27, I:29</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/z/zfsutils-linux.html">1610</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://en.wikipedia.org/wiki/OpenZFS">OpenZFS</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/dosfstools">
<code class="literal">dosfstools</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=dosfstools">V:149, I:504</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/dosfstools.html">315</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://it.wikipedia.org/wiki/File_Allocation_Table">FAT</a> (Microsoft: MS-DOS,
Windows) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/exfatprogs">
<code class="literal">exfatprogs</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=exfatprogs">V:12, I:214</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/e/exfatprogs.html">281</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://en.wikipedia.org/wiki/ExFAT">exFAT</a> mantenuti
Samsung </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/exfat-fuse">
<code class="literal">exfat-fuse</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=exfat-fuse">V:10, I:233</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/e/exfat-fuse.html">75</a>
</td>
<td style="text-align: left"> driver (Microsoft) in lettura/scrittura per file system <a class="ulink" href="https://en.wikipedia.org/wiki/ExFAT">exFAT</a> per FUSE </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/exfat-utils">
<code class="literal">exfat-utils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=exfat-utils">V:9, I:228</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/e/exfat-utils.html">231</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://en.wikipedia.org/wiki/ExFAT">exFAT</a> mantenute
dall'autore di exfat-fuse </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/xfsprogs">
<code class="literal">xfsprogs</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=xfsprogs">V:23, I:100</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/x/xfsprogs.html">3444</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://it.wikipedia.org/wiki/XFS_(file_system)">XFS</a> (SGI: IRIX) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/ntfs-3g">
<code class="literal">ntfs-3g</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=ntfs-3g">V:151, I:488</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/n/ntfs-3g.html">1469</a>
</td>
<td style="text-align: left"> driver in lettura/scrittura per i file system <a class="ulink" href="https://it.wikipedia.org/wiki/NTFS">NTFS</a> (Microsoft: Windows NT, …) per FUSE </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/jfsutils">
<code class="literal">jfsutils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=jfsutils">V:0, I:10</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/j/jfsutils.html">1577</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://it.wikipedia.org/wiki/Journaled_File_System">JFS</a> (IBM: AIX, OS/2) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/reiser4progs">
<code class="literal">reiser4progs</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=reiser4progs">V:0, I:3</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/r/reiser4progs.html">1367</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://it.wikipedia.org/wiki/Reiser4">Reiser4</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/hfsprogs">
<code class="literal">hfsprogs</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=hfsprogs">V:0, I:6</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/h/hfsprogs.html">394</a>
</td>
<td style="text-align: left"> utilità per i file system <a class="ulink" href="https://it.wikipedia.org/wiki/Hierarchical_File_System">HFS</a> e <a class="ulink" href="https://it.wikipedia.org/wiki/HFS_Plus">HFS Plus</a> (Apple: Mac OS) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/zerofree">
<code class="literal">zerofree</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=zerofree">V:4, I:128</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/z/zerofree.html">25</a>
</td>
<td style="text-align: left"> programma per impostare a 0 i blocchi liberi in file system ext2/3/4 </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Il file system <a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">Ext4</a> è il predefinito per il
sistema Linux e il suo uso è caldamente raccomandato a meno che non sia
abbiano specifiche ragioni per non farlo.</p>
<p>Lo stato di <a class="ulink" href="https://it.wikipedia.org/wiki/Btrfs">Btrfs</a> può essere trovato nelle
pagine del <a class="ulink" href="https://wiki.debian.org/Btrfs">wiki Debian su btrfs</a> e
in quelle del <a class="ulink" href="https://btrfs.wiki.kernel.org/index.php/Status">wiki di kernel.org su
btrfs</a>. Ci si aspetta che sarà il prossimo file system predefinito
dopo il file system ext4.</p>
<p>Alcuni strumenti permettono l'accesso a file system non supportati del
kernel Linux (vedere <a class="xref" href="ch09.it.html#_manipulating_files_without_mounting_disk" title="9.8.2. Manipolare file senza montare i dischi">Sezione 9.8.2, «Manipolare file senza montare i dischi»</a>).</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_filesystem_creation_and_integrity_check"/>9.6.6. Creare file system e verificarne l'integrità </h3>
</div>
</div>
</div>
<p>In un sistema Linux, il comando <code class="literal">mkfs</code>(8) crea i file
system ed il comando <code class="literal">fsck</code>(8) fornisce funzioni di
controllo dell'integrità e di riparazione dei file system.</p>
<p>Debian ora in modo predefinito non fa <code class="literal">fsck</code> periodici dopo
la creazione del file system.</p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Attenzione]" src="images/caution.png"/>
</td>
<th align="left">Attenzione</th>
</tr>
<tr>
<td align="left" valign="top">
<p>In generale l'esecuzione di <code class="literal">fsck</code> su <span class="strong"><strong>file system montati</strong></span> non è sicura.</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Si può eseguire in modo sicuro il comando <code class="literal">fsck</code>(8) su
tutti i file system, incluso il file system radice, al riavvio impostando
"<code class="literal">enable_periodic_fsck</code>" in
"<code class="literal">/etc/mke2fs.conf</code>" e il conteggio massimo di montaggi a 0
usando "<code class="literal">tune2fs -c0
/dev/<span class="emphasis"><em>nome_partizione</em></span></code>". Vedere
<code class="literal">mke2fs.conf</code>(5) e <code class="literal">tune2fs</code>(8).</p>
<p>Per vedere i risultati del comando <code class="literal">fsck</code>(8) avviato dallo
script di avvio, controllare i file in "<code class="literal">/var/log/fsck/</code>".</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_optimization_of_filesystem_by_mount_options"/>9.6.7. Ottimizzare il file system con opzioni di mount</h3>
</div>
</div>
</div>
<p>La configurazione statica di base del file system è fornita da
«<code class="literal">/etc/fstab</code>». Ad esempio,</p>
<pre class="screen">«file system» «mount point» «type» «options» «dump» «pass»
proc /proc proc defaults 0 0
UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 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</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Per identificare un dispositivo a blocchi si può usare il suo <a class="ulink" href="https://en.wikipedia.org/wiki/Universally_Unique_Identifier">UUID</a> (vedere <a class="xref" href="ch09.it.html#_accessing_partition_using_uuid" title="9.6.3. Accedere alle partizioni usando UUID">Sezione 9.6.3, «Accedere alle partizioni usando UUID»</a>) invece del normale nome di
device a blocchi quale «<code class="literal">/dev/sda1</code>»,
«<code class="literal">/dev/sda2</code>», …</p>
</td>
</tr>
</table>
</div>
<p>A partire da Linux 2.6.30 il kernel ha in modo predefinito il comportamento
fornito dalla opzione "<code class="literal">relatime</code>". </p>
<p>Vedere <code class="literal">fstab</code>(5) e <code class="literal">mount</code>(8).</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_optimization_of_filesystem_via_superblock"/>9.6.8. Ottimizzare il file system tramite il superblocco</h3>
</div>
</div>
</div>
<p>Le caratteristiche di un file system possono essere ottimizzate attraverso
il suo superblocco usando il comando <code class="literal">tune2fs</code>(8).</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> L'esecuzione di "<code class="literal">sudo tune2fs -l /dev/hda1</code>" mostra il
contenuto del superblocco del file system in "<code class="literal">/dev/hda1</code>". </p>
</li>
<li class="listitem">
<p> L'esecuzione di "<code class="literal">sudo tune2fs -c 50 /dev/hda1</code>" cambia per
"<code class="literal">/dev/hda1</code>" la frequenza dei controlli dei file system
(l'esecuzione di <code class="literal">fsck</code> all'avvio) a 50 avvii. </p>
</li>
<li class="listitem">
<p> L'esecuzione di "<code class="literal">sudo tune2fs -j /dev/hda1</code>" aggiunge la
funzionalità di journaling al file system in "<code class="literal">/dev/hda1</code>",
cioè converte il file system da <a class="ulink" href="https://it.wikipedia.org/wiki/Ext2">ext2</a> a <a class="ulink" href="https://it.wikipedia.org/wiki/Ext3">ext3</a>. (Eseguire questo comando su file system non
montati.) </p>
</li>
<li class="listitem">
<p> L'esecuzione di "<code class="literal">sudo tune2fs -O extents,uninit_bg,dir_index
/dev/hda1 && fsck -pf /dev/hda1</code>" converte il filesystem in
"<code class="literal">/dev/hda1</code>" da <a class="ulink" href="https://it.wikipedia.org/wiki/Ext3">ext3</a> a <a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">ext4</a>. (Eseguire questo comando su file system non
montati.) </p>
</li>
</ul>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Nonostante il suo nome, <code class="literal">tune2fs</code>(8) non funziona soltanto
sui file system <a class="ulink" href="https://it.wikipedia.org/wiki/Ext2">ext2</a>, ma anche sui file system
<a class="ulink" href="https://it.wikipedia.org/wiki/Ext3">ext3</a> e <a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">ext4</a>.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_optimization_of_hard_disk"/>9.6.9. Ottimizzare il disco rigido</h3>
</div>
</div>
</div>
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Avvertimento]" src="images/warning.png"/>
</td>
<th align="left">Avvertimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Prima di giocare con la configurazione dei dischi controllare il proprio
hardware e leggere la pagina man di <code class="literal">hdparam</code>(8), perché è
una cosa piuttosto pericolosa per l'integrità dei dati.</p>
</td>
</tr>
</table>
</div>
<p>Si può testare la velocità di accesso ai dischi di un disco rigido, ad
esempio "<code class="literal">/dev/hda</code>" con "<code class="literal">hdparm -tT
/dev/hda</code>". È possibile velocizzare alcuni dischi fissi connessi
con (E)IDE con "<code class="literal">hdparm -q -c3 -d1 -u1 -m16 /dev/hda</code>" 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!).</p>
<p>Si possono testare le capacità della cache in scrittura di un disco fisso,
ad esempio "<code class="literal">/dev/sda</code>", con "<code class="literal">hdparm -W
/dev/sda</code>". Si può disabilitare la funzionalità di cache in
scrittura con "<code class="literal">hdparm -W 0 /dev/sda</code>".</p>
<p>Potrebbe essere possibile leggere CDROM masterizzati male in unità CD-ROM
moderne ad alta velocità rallentandole con "<code class="literal">setcd -x 2</code>".</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_optimization_of_solid_state_drive"/>9.6.10. Ottimizzare le unità a stato solido</h3>
</div>
</div>
</div>
<p>Le <a class="ulink" href="https://it.wikipedia.org/wiki/Unità_a_stato_solido">unità SSD (Solid State Drive, a stato
solido)</a> sono ora rilevate automaticamente.</p>
<p>Ridurre accessi non necessari al disco per prevenire l'usura del disco
montando "<code class="literal">tmpfs</code>" in percorsi dei dati volatili in
<code class="literal">/etc/fstab</code>. </p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_using_smart_to_predict_hard_disk_failure"/>9.6.11. Usare SMART per prevedere danni ai dischi fissi</h3>
</div>
</div>
</div>
<p>Con il demone <code class="literal">smartd </code>(8) è possibile monitorare e
registrare i dischi fissi che sono conformi a <a class="ulink" href="https://it.wikipedia.org/wiki/S.M.A.R.T.">SMART</a>.</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p> Abilitare la funzionalità <a class="ulink" href="https://it.wikipedia.org/wiki/S.M.A.R.T.">SMART</a> nel <a class="ulink" href="https://it.wikipedia.org/wiki/Bios">BIOS</a>. </p>
</li>
<li class="listitem">
<p> Installare il pacchetto <code class="literal">smartmontools</code>. </p>
</li>
<li class="listitem">
<p> Identificare i dispositivi dei dischi fissi usando <code class="literal">df</code>(1). </p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Si supponga che uno dei dispositivi dei dischi fissi da monitorare sia
"<code class="literal">/dev/hda</code>". </p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p> Controllare l'output di "<code class="literal">smartctl -a /dev/hda</code>" per vedere
se la funzionalità <a class="ulink" href="https://it.wikipedia.org/wiki/S.M.A.R.T.">SMART</a> è veramente abilitata. </p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Se non la è, abilitarla con "<code class="literal">smartctl -s on -a /dev/hda</code>". </p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p> Abilitare l'esecuzione del demone <code class="literal">smartd</code>(8) nel modo
seguente. </p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Rimuovere il carattere iniziale di commento dalla riga
"<code class="literal">start_smartd=yes</code>" nel file
"<code class="literal">/etc/default/smartmontools</code>". </p>
</li>
<li class="listitem">
<p> Riavviare il demone <code class="literal">smartd</code>(8) con "<code class="literal">sudo
systemctl restart smartmontools</code>". </p>
</li>
</ul>
</div>
</li>
</ol>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Il demone <code class="literal">smartd</code>(8) può essere personalizzato con il file
<code class="literal">/etc/smartd.conf</code>, incluso per ciò che riguarda le
notifiche dei messaggi di avvertimento.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_specify_temporary_storage_directory_via_tmpdir"/>9.6.12. Specificare una directory per l'archiviazione di dati temporanei usando
$TMPDIR</h3>
</div>
</div>
</div>
<p>Le applicazioni creano file temporanei normalmente nella directory di
memorizzazione temporanea «<code class="literal">/tmp</code>». Se
«<code class="literal">/tmp</code>» non contiene abbastanza spazio, si può specificare
una directory di memorizzazione temporanea usando la variabile
<code class="literal">$TMPDIR</code> per i programmi che si comportano in modo
corretto.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_expansion_of_usable_storage_space_via_lvm"/>9.6.13. Espandere lo spazio di archiviazione utilizzabile con LVM</h3>
</div>
</div>
</div>
<p>Le partizioni create al momento dell'installazione su <a class="ulink" href="https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)">LVM (Logical Volume Manager</a>
(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.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_expansion_of_usable_storage_space_by_mounting_another_partition"/>9.6.14. Espandere lo spazio di archiviazione utilizzabile montando un'altra
partizione</h3>
</div>
</div>
</div>
<p>Se è disponibile una nuova partizione vuota (per esempio
"<code class="literal">/dev/sdx</code>"), la si può formattare con
<code class="literal">mkfs.ext4</code>(1) e montarla con <code class="literal">mount</code>(8)
in una directory in cui è necessario avere più spazio. (È necessario copiare
il contenuto originale della directory.)</p>
<pre class="screen">$ sudo mv work-dir old-dir
$ sudo mkfs.ext4 /dev/sdx
$ sudo mount -t ext4 /dev/sdx work-dir
$ sudo cp -a old-dir/* work-dir
$ sudo rm -rf old-dir</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>In alternativa si può montare un file immagine vuoto del disco (vedere <a class="xref" href="ch09.it.html#_making_the_empty_disk_image_file" title="9.7.5. Creare un file con immagine di disco vuoto">Sezione 9.7.5, «Creare un file con immagine di disco vuoto»</a>) come device loop (vedere
<a class="xref" href="ch09.it.html#_mounting_the_disk_image_file" title="9.7.3. Montare un file con un'immagine di disco">Sezione 9.7.3, «Montare un file con un'immagine di disco»</a>). Il reale uso del disco
cresce mano a mano che vengono archiviati i dati.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_expansion_of_usable_storage_space_by_bind_mounting_another_directory"/>9.6.15. Espandere lo spazio di archiviazione utilizzabile montando un collegamento
ad un'altra directory</h3>
</div>
</div>
</div>
<p>Se è disponibile una directory vuota (ad esempio
"<code class="literal">/percorso/della/dir-vuota</code>") in un'altra partizione con
spazio disponibile, si può, usando mount(8) con l'opzione
"<code class="literal">--bind</code>", montarla in una directory (ad esempio
"<code class="literal">dir-di-lavoro</code>") dove è necessario più spazio.</p>
<pre class="screen">$ sudo mount --bind /path/to/emp-dir work-dir</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_expansion_of_usable_storage_space_by_overlay_mounting_another_directory"/>9.6.16. Espandere lo spazio di archiviazione utilizzabile montando un'altra
directory da sovrapporre</h3>
</div>
</div>
</div>
<p>Se è disponibile dello spazio utilizzabile in un'altra partizione (ad
esempio "<code class="literal">/percorso/della/vuota</code>" e
"<code class="literal">/percorso/di/lavoro</code>"), si può creare in essa una
directory e impilarla in una vecchia directory (es.,
"<code class="literal">/percorso/della/vecchia</code>") in cui si ha bisogno di spazio
usando <a class="ulink" href="https://en.wikipedia.org/wiki/OverlayFS">OverlayFS</a> con un kernel Linux 3.18 o
successivo (Debian Stretch 9.0 o successiva).</p>
<pre class="screen">$ sudo mount -t overlay overlay \
-olowerdir=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work</pre>
<p>Qui, "<code class="literal">/percorso/della/vuota</code>" e
"<code class="literal">/percorso/di/lavoro</code>" devono essere nella partizione
abilitata in lettura e scrittura da scrivere in
"<code class="literal">/percorso/della/vecchia</code>".</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_expansion_of_usable_storage_space_using_symlink"/>9.6.17. Espandere lo spazio di archiviazione utilizzabile usando collegamenti
simbolici</h3>
</div>
</div>
</div>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Attenzione]" src="images/caution.png"/>
</td>
<th align="left">Attenzione</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Questo è un metodo deprecato. Certo software può non funzionare bene con i
"collegamenti simbolici ad una directory". Usare invece gli approcci che
usano il "mount" descritti in precedenza.</p>
</td>
</tr>
</table>
</div>
<p>Se è disponibile una directory vuota (ad esempio
"<code class="literal">/percorso/della/dir-vuota</code>" in un'altra partizione con
spazio disponibile, si può creare un collegamento simbolico alla directory
con <code class="literal">ln</code>(8).</p>
<pre class="screen">$ sudo mv work-dir old-dir
$ sudo mkdir -p /path/to/emp-dir
$ sudo ln -sf /path/to/emp-dir work-dir
$ sudo cp -a old-dir/* work-dir
$ sudo rm -rf old-dir</pre>
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Avvertimento]" src="images/warning.png"/>
</td>
<th align="left">Avvertimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Non usare un "collegamento simbolico ad una directory" per le directory
gestite dal sistema, come "<code class="literal">/opt</code>". Un collegamento
simbolico simile potrebbe essere sovrascritto quando il sistema viene
aggiornato.</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_the_disk_image"/>9.7. Immagine del disco</h2>
</div>
</div>
</div>
<p>Questa sezione tratta della manipolazione di immagini di dischi.</p>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_making_the_disk_image_file"/>9.7.1. Creare un file con un'immagine di disco</h3>
</div>
</div>
</div>
<p>Si può creare un file di immagine del disco, "<code class="literal">disco.img</code>",
di un dispositivo non montato, ad esempio la seconda unità SCSI o serial ATA
"<code class="literal">/dev/sdb</code>" usando <code class="literal">cp</code>(1) o
<code class="literal">dd</code>(1) nel modo seguente.</p>
<pre class="screen"># cp /dev/sdb disk.img
# dd if=/dev/sdb of=disk.img</pre>
<p>Si può creare l'immagine del disco del <a class="ulink" href="https://it.wikipedia.org/wiki/Master_boot_record">MBR (master boot record)</a> dei PC
tradizionali (vedere <a class="xref" href="ch09.it.html#_disk_partition_configuration" title="9.6.2. Configurazione del partizionamento dei dischi">Sezione 9.6.2, «Configurazione del partizionamento dei dischi»</a>), che
risiede nel primo settore del disco IDE primario usando
<code class="literal">dd</code>(1) nel modo seguente.</p>
<pre class="screen"># dd if=/dev/hda of=mbr.img bs=512 count=1
# dd if=/dev/hda of=mbr-nopart.img bs=446 count=1
# dd if=/dev/hda of=mbr-part.img skip=446 bs=1 count=66</pre>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> "<code class="literal">mbr.img</code>": MBR con tabella delle partizioni </p>
</li>
<li class="listitem">
<p> "<code class="literal">mbr-nopart.img</code>": MBR senza tabella delle partizioni </p>
</li>
<li class="listitem">
<p> "<code class="literal">mbr-part.img</code>": solamente la tabella delle partizioni
nell'MBR </p>
</li>
</ul>
</div>
<p>Se il disco di avvio è un un dispositivo SCSI o serial ATA, sostituire
"<code class="literal">/dev/hda</code>" con "<code class="literal">/dev/sda</code>".</p>
<p>Se si sta creando l'immagine di una partizione del disco originale,
sostituire "<code class="literal">/dev/hda</code>" con "<code class="literal">/dev/hda1</code>",
ecc.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_writing_directly_to_the_disk"/>9.7.2. Scrivere direttamente sul disco</h3>
</div>
</div>
</div>
<p>Il file immagine del disco, "<code class="literal">disco.img</code>" può essere
scritto in un dispositivo non montato, ad esempio la seconda unità SCSI
"<code class="literal">/dev/sdb</code>" di dimensione corrispondente nel modo
seguente.</p>
<pre class="screen"># dd if=disk.img of=/dev/sdb</pre>
<p>Analogamente il file immagine di una partizione del disco,
"<code class="literal">partizione.img</code>" può essere scritto in una partizione non
montata, ad esempio la prima partizione della seconda unità SCSI
"<code class="literal">/dev/sdb1</code>" di dimensione corrispondente nel modo
seguente.</p>
<pre class="screen"># dd if=partition.img of=/dev/sdb1</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_mounting_the_disk_image_file"/>9.7.3. Montare un file con un'immagine di disco</h3>
</div>
</div>
</div>
<p>Un'immagine di disco "<code class="literal">partizione.img</code>" contenente
l'immagine di un'unica partizione, può essere montata e smontata usando il
<a class="ulink" href="https://en.wikipedia.org/wiki/Loop_device">device loop</a> nel modo seguente.</p>
<pre class="screen"># losetup -v -f partition.img
Loop device is /dev/loop0
# mkdir -p /mnt/loop0
# mount -t auto /dev/loop0 /mnt/loop0
...hack...hack...hack
# umount /dev/loop0
# losetup -d /dev/loop0</pre>
<p>Questo può essere semplificato nel modo seguente.</p>
<pre class="screen"># mkdir -p /mnt/loop0
# mount -t auto -o loop partition.img /mnt/loop0
...hack...hack...hack
# umount partition.img</pre>
<p>Ogni partizione di un'immagine di disco "<code class="literal">disco.img</code>"
contentente più partizioni, può essere montata usando il <a class="ulink" href="https://en.wikipedia.org/wiki/Loop_device">device loop</a>. Dato che quest'ultimo non gestisce
in modo predefinito le partizioni, è necessario riconfigurarlo nel modo
seguente.</p>
<pre class="screen"># modinfo -p loop # verify kernel capability
max_part:Maximum number of partitions per loop device
max_loop:Maximum number of loop devices
# losetup -a # verify nothing using the loop device
# rmmod loop
# modprobe loop max_part=16</pre>
<p>Ora il device loop può gestire fino a 16 partizioni.</p>
<pre class="screen"># losetup -v -f disk.img
Loop device is /dev/loop0
# fdisk -l /dev/loop0
Disk /dev/loop0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x452b6464
Device Boot Start End Blocks Id System
/dev/loop0p1 1 600 4819468+ 83 Linux
/dev/loop0p2 601 652 417690 83 Linux
# mkdir -p /mnt/loop0p1
# mount -t ext4 /dev/loop0p1 /mnt/loop0p1
# mkdir -p /mnt/loop0p2
# mount -t ext4 /dev/loop0p2 /mnt/loop0p2
...hack...hack...hack
# umount /dev/loop0p1
# umount /dev/loop0p2
# losetup -d /dev/loop0</pre>
<p>In alternativa, un risultato simile può essere ottenuto utilizzando i <a class="ulink" href="https://en.wikipedia.org/wiki/Device_mapper">device mapper</a> creati da
<code class="literal">kpartx</code>(8), contenuto nel pacchetto
<code class="literal">kpartx</code>, nel modo seguente.</p>
<pre class="screen"># kpartx -a -v disk.img
...
# mkdir -p /mnt/loop0p2
# mount -t ext4 /dev/mapper/loop0p2 /mnt/loop0p2
...
...hack...hack...hack
# umount /dev/mapper/loop0p2
...
# kpartx -d /mnt/loop0</pre>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Nota]" src="images/note.png"/>
</td>
<th align="left">Nota</th>
</tr>
<tr>
<td align="left" valign="top">
<p>È anche possibile montare una singola partizione di una tale immagine di
disco con un <a class="ulink" href="https://en.wikipedia.org/wiki/Loop_device">device loop</a> indicando un
offset per saltare l'<a class="ulink" href="https://it.wikipedia.org/wiki/Master_boot_record">MBR</a>, ecc., ma questo metodo
è più esposto agli errori.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_cleaning_a_disk_image_file"/>9.7.4. Pulire un file con un'immagine di disco</h3>
</div>
</div>
</div>
<p>Si può pulire un file con immagine di disco "<code class="literal">disco.img</code>"
da tutti i file cancellati creando un'immagine pulita
"<code class="literal">nuova.img</code>" nel modo seguente.</p>
<pre class="screen"># mkdir old; mkdir new
# mount -t auto -o loop disk.img old
# dd bs=1 count=0 if=/dev/zero of=new.img seek=5G
# mount -t auto -o loop new.img new
# cd old
# cp -a --sparse=always ./ ../new/
# cd ..
# umount new.img
# umount disk.img</pre>
<p>Se "<code class="literal">disco.img</code>" è in ext2, ext3 o ext4, si può anche usare
<code class="literal">zerofree</code>(8), contenuto nel pacchetto
<code class="literal">zerofree</code>, nel modo seguente.</p>
<pre class="screen"># losetup -f -v disk.img
Loop device is /dev/loop3
# zerofree /dev/loop3
# cp --sparse=always disk.img new.img</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_making_the_empty_disk_image_file"/>9.7.5. Creare un file con immagine di disco vuoto</h3>
</div>
</div>
</div>
<p>Si può creare un'immagine di disco vuota "<code class="literal">disco.img</code>", che
può crescere fino a 5GiB, usando <code class="literal">dd</code>(1) nel modo seguente.</p>
<pre class="screen">$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G</pre>
<p>Invece di usare <code class="literal">dd</code>(1), qui si può usare lo specializzato
<code class="literal">fallocate</code>(8).</p>
<p>È possibile creare un file system ext4 in questa immagine di disco,
"<code class="literal">disco.img</code>" usando il <a class="ulink" href="https://en.wikipedia.org/wiki/Loop_device">device
loop</a> nel modo seguente.</p>
<pre class="screen"># losetup -f -v disk.img
Loop device is /dev/loop1
# mkfs.ext4 /dev/loop1
...hack...hack...hack
# losetup -d /dev/loop1
$ du --apparent-size -h disk.img
5.0G disk.img
$ du -h disk.img
83M disk.img</pre>
<p>La dimensione del file "<code class="literal">disco.img</code>" è di 5.0GiB e il suo
effettivo uso del disco è di soli 83MiB. Questa discrepanza è resa possibile
dal fatto che il file system <a class="ulink" href="https://it.wikipedia.org/wiki/Ext4">ext4</a> può contentere
<a class="ulink" href="https://it.wikipedia.org/wiki/File_sparso">file sparsi</a>.</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>L'uso effettivo del disco dei <a class="ulink" href="https://it.wikipedia.org/wiki/File_sparso">file sparsi</a>
cresce insieme ai dati che in essi sono scritti.</p>
</td>
</tr>
</table>
</div>
<p>Usando operazioni simili su device creati dal <a class="ulink" href="https://en.wikipedia.org/wiki/Loop_device">device loop</a> o dal <a class="ulink" href="https://en.wikipedia.org/wiki/Device_mapper">device mapper</a>, come in <a class="xref" href="ch09.it.html#_mounting_the_disk_image_file" title="9.7.3. Montare un file con un'immagine di disco">Sezione 9.7.3, «Montare un file con un'immagine di disco»</a>, si può partizionare tale immagine
di disco "<code class="literal">disco.img</code>" usando <code class="literal">parted</code>(8)
o <code class="literal">fdisk</code>(8) e si può creare in essa file system usando
<code class="literal">mkfs.ext4</code>(8), <code class="literal">mkswap</code>(8), ecc.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_making_the_iso9660_image_file"/>9.7.6. Creare un file con un'immagine ISO9660</h3>
</div>
</div>
</div>
<p>Si può creare un file immagine <a class="ulink" href="https://it.wikipedia.org/wiki/ISO_9660">ISO9660</a>
"<code class="literal">cd.iso</code>" dell'albero di directory originale in
"<code class="literal">directory_sorgente</code>" usando
<code class="literal">genisoimage</code>(1) fornito da <a class="ulink" href="https://en.wikipedia.org/wiki/Cdrkit">cdrkit</a> nel modo seguente.</p>
<pre class="screen"># genisoimage -r -J -T -V volume_id -o cd.iso source_directory</pre>
<p>Analogamente, si può creare un file immagine ISO9660 avviabile,
"<code class="literal">cdboot.iso</code>", da un albero di directory simile a quello
del <code class="literal">debian-installer</code> in
"<code class="literal">directory_sorgente</code>" nel modo seguente.</p>
<pre class="screen"># genisoimage -r -o cdboot.iso -V volume_id \
-b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table source_directory</pre>
<p>In questo esempio viene usato per l'avvio il <a class="ulink" href="https://en.wikipedia.org/wiki/SYSLINUX">bootloader Isolinux</a> (vedere <a class="xref" href="ch03.it.html#_stage_2_the_boot_loader" title="3.1.2. Stadio 2: il bootloader">Sezione 3.1.2, «Stadio 2: il bootloader»</a>).</p>
<p>Si può calcolare il valore md5sum e creare l'immagine ISO9660 direttamente
dal device CD-ROM nel modo seguente.</p>
<pre class="screen">$ isoinfo -d -i /dev/cdrom
CD-ROM is in ISO 9660 format
...
Logical block size is: 2048
Volume size is: 23150592
...
# dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror | md5sum
# dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror > cd.iso</pre>
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Avvertimento]" src="images/warning.png"/>
</td>
<th align="left">Avvertimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Per ottenere un risultato corretto, si deve accuratamente evitare il bug di
Linux riguardante il read ahead del file system ISO9660, come nell'esempio
precedente.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_writing_directly_to_the_cd_dvd_r_rw"/>9.7.7. Scrivere direttamente sul CD/DVD-R/RW</h3>
</div>
</div>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Per <code class="literal">wodim</code>(1), fornito da <a class="ulink" href="https://en.wikipedia.org/wiki/Cdrkit">cdrkit</a>, un DVD è semplicemente un grande CD.</p>
</td>
</tr>
</table>
</div>
<p>Si può trovare un device utilizzabile usando il comando seguente.</p>
<pre class="screen"># wodim --devices</pre>
<p>Poi si inserisce un CD-R vergine nell'unità CD e si scrive il file immagine
ISO9660 "<code class="literal">cd.iso</code>" su questo device, ad esempio
"<code class="literal">/dev/hda</code>", usando <code class="literal">wodim</code>(1) nel modo
seguente.</p>
<pre class="screen"># wodim -v -eject dev=/dev/hda cd.iso</pre>
<p>Se viene usato un CD-RW invece di un CD-R, usare quest'altro comando.</p>
<pre class="screen"># wodim -v -eject blank=fast dev=/dev/hda cd.iso</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Se il sistema desktop usato monta automaticamente i CD, prima di usare
<code class="literal">wodim</code>(1) smontarlo usando dalla console "<code class="literal">sudo
umount /dev/hda</code>".</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_mounting_the_iso9660_image_file"/>9.7.8. Montare un file con un'immagine ISO9660</h3>
</div>
</div>
</div>
<p>Se "<code class="literal">cd.iso</code>" contiene un'immagine ISO9660, lo si può
montare manualmente in "<code class="literal">/cdrom</code>" usando il comando
seguente.</p>
<pre class="screen"># mount -t iso9660 -o ro,loop cd.iso /cdrom</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>I sistemi desktop moderni possono montare automaticamente i supporti
removibili come i CD in formato ISO9660 (vedere <a class="xref" href="ch10.it.html#_removable_storage_device" title="10.1.7. Supporti di archiviazione removibili">Sezione 10.1.7, «Supporti di archiviazione removibili»</a>).</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_the_binary_data"/>9.8. I dati binari</h2>
</div>
</div>
</div>
<p>Questa sezione tratta della manipolazione diretta dei dati binari su
supporti di archiviazione.</p>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_viewing_and_editing_binary_data"/>9.8.1. Visualizzare e modificare dati binari</h3>
</div>
</div>
</div>
<p>Il metodo di visualizzazione dei dati binai più basilare è l'uso del comando
"<code class="literal">od -t x1</code>".</p>
<div class="table">
<a id="listofpackageswhndeditbinarydata"/>
<p class="title">
<strong>Tabella 9.21. Elenco di pacchetti che visualizzano e modificano dati binari</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di pacchetti che visualizzano e modificano dati binari" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/coreutils">
<code class="literal">coreutils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=coreutils">V:908, I:999</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/coreutils.html">18062</a>
</td>
<td style="text-align: left"> pacchetto base che contiene <code class="literal">od</code>(1) per fare il dump di
file (HEX, ASCII, OCTAL, …) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/bsdmainutils">
<code class="literal">bsdmainutils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=bsdmainutils">V:19, I:500</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/b/bsdmainutils.html">27</a>
</td>
<td style="text-align: left"> pacchetto di utilità che contiene <code class="literal">hd</code>(1) per fare il dump
di file (HEX, ASCII, OCTAL, …) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/hexedit">
<code class="literal">hexedit</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=hexedit">V:1, I:10</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/h/hexedit.html">73</a>
</td>
<td style="text-align: left"> visualizzatore ed editor binario (HEX, ASCII) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/bless"> <code class="literal">bless</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=bless">V:0, I:3</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/b/bless.html">924</a>
</td>
<td style="text-align: left"> editor esadecimale completo (GNOME) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/okteta">
<code class="literal">okteta</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=okteta">V:1, I:12</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/o/okteta.html">1580</a>
</td>
<td style="text-align: left"> editor esadecimale completo (KDE4) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/ncurses-hexedit">
<code class="literal">ncurses-hexedit</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=ncurses-hexedit">V:0, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/n/ncurses-hexedit.html">132</a>
</td>
<td style="text-align: left"> visualizzatore ed editor binario (HEX, ASCII, EBCDIC) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/beav"> <code class="literal">beav</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=beav">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/b/beav.html">137</a>
</td>
<td style="text-align: left"> visualizzatore ed editor binario (HEX, ASCII, EBCDIC, OCTAL, …) </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>HEX è usato come acronimo per il formato <a class="ulink" href="https://it.wikipedia.org/wiki/Esadecimale">esadecimale</a> con <a class="ulink" href="https://en.wikipedia.org/wiki/Radix">base</a> 16. OCTAL è usato per il formato <a class="ulink" href="https://it.wikipedia.org/wiki/Ottale">ottale</a> con <a class="ulink" href="https://en.wikipedia.org/wiki/Radix">base</a> 8. ASCII
è usato per <a class="ulink" href="https://it.wikipedia.org/wiki/Ascii">American
Standard Code for Information Interchange</a>, cioè la normale codifica
per testi in inglese. EBCDIC è usato per <a class="ulink" href="https://it.wikipedia.org/wiki/EBCDIC">Extended Binary Coded Decimal
Interchange Code</a> usato nei sistemi operativi dei<a class="ulink" href="https://en.wikipedia.org/wiki/IBM_mainframe">mainframe IBM</a>.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_manipulating_files_without_mounting_disk"/>9.8.2. Manipolare file senza montare i dischi</h3>
</div>
</div>
</div>
<p>Esistono strumenti per leggere e scrivere file senza montare i dischi.</p>
<div class="table">
<a id="listofpackagestohoutmountingdisk"/>
<p class="title">
<strong>Tabella 9.22. Elenco di pacchetti per manipolare file senza montare i dischi</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di pacchetti per manipolare file senza montare i dischi" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/mtools">
<code class="literal">mtools</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=mtools">V:9, I:71</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/m/mtools.html">399</a>
</td>
<td style="text-align: left"> utilità per file MSDOS senza montarli </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/hfsutils">
<code class="literal">hfsutils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=hfsutils">V:0, I:5</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/h/hfsutils.html">184</a>
</td>
<td style="text-align: left"> utilità per file HFS e HFS+ senza montarli </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_data_redundancy"/>9.8.3. Dati ridondanti</h3>
</div>
</div>
</div>
<p>I sistemi software <a class="ulink" href="https://it.wikipedia.org/wiki/RAID">RAID</a> offerti dal kernel Linux
forniscono un livello di ridondanza dei dati nel file system a livello del
kernel, allo scopo di ottenere una più alta affidabilità dell'archiviazione.</p>
<p>Esistono strumenti per aggiungere dati ridondanti a file a livello di
programmi applicativi per ottenere anche in questo modo una più alta
affidabilità dell'archiviazione.</p>
<div class="table">
<a id="listoftoolstoaddedundancytofiles"/>
<p class="title">
<strong>Tabella 9.23. Elenco di strumenti per aggiungere dati ridondanti a file</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di strumenti per aggiungere dati ridondanti a file" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/par2"> <code class="literal">par2</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=par2">V:8, I:67</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/par2.html">268</a>
</td>
<td style="text-align: left"> insiemi di volumi di archivi di parità, per controllare e riparare file </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/dvdisaster">
<code class="literal">dvdisaster</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=dvdisaster">V:0, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/dvdisaster.html">1742</a>
</td>
<td style="text-align: left"> protezione contro perdita di dati/graffi/invecchiamento di supporti CD/DVD </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/dvbackup">
<code class="literal">dvbackup</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=dvbackup">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/dvbackup.html">413</a>
</td>
<td style="text-align: left"> strumento di backup che usa camcorder MiniDV (fornisce
<code class="literal">rsbep</code>(1)) </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_data_file_recovery_and_forensic_analysis"/>9.8.4. recupero di file dati ed analisi forensi</h3>
</div>
</div>
</div>
<p>Esistono strumenti per recuperare file dati e fare analisi forensi.</p>
<div class="table">
<a id="listofpackagesfoforensicanalysis"/>
<p class="title">
<strong>Tabella 9.24. Elenco di pacchetti per recupero di file dati ed analisi forensi.</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di pacchetti per recupero di file dati ed analisi forensi." border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/testdisk">
<code class="literal">testdisk</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=testdisk">V:2, I:32</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/t/testdisk.html">1413</a>
</td>
<td style="text-align: left"> utilità per scansione delle partizione e ripristino di dischi </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/magicrescue">
<code class="literal">magicrescue</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=magicrescue">V:0, I:2</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/m/magicrescue.html">255</a>
</td>
<td style="text-align: left"> utilità per ripristinare file cercando byte magici </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/scalpel">
<code class="literal">scalpel</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=scalpel">V:0, I:3</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/scalpel.html">88</a>
</td>
<td style="text-align: left"> strumento di escavazione di file frugale e ad alte prestazioni </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/myrescue">
<code class="literal">myrescue</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=myrescue">V:0, I:3</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/m/myrescue.html">83</a>
</td>
<td style="text-align: left"> recupera dati da dischi fissi danneggiati </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/extundelete">
<code class="literal">extundelete</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=extundelete">V:0, I:9</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/e/extundelete.html">147</a>
</td>
<td style="text-align: left"> utilità per decancellare file da file system ext3/4 </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/ext4magic">
<code class="literal">ext4magic</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=ext4magic">V:0, I:4</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/e/ext4magic.html">233</a>
</td>
<td style="text-align: left"> utilità per decancellare file da file system ext3/4 </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/ext3grep">
<code class="literal">ext3grep</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=ext3grep">V:0, I:2</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/e/ext3grep.html">293</a>
</td>
<td style="text-align: left"> strumento per aiutare a recuperare file cancellati da file system ext3 </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/scrounge-ntfs">
<code class="literal">scrounge-ntfs</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=scrounge-ntfs">V:0, I:2</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/scrounge-ntfs.html">50</a>
</td>
<td style="text-align: left"> programma di recupero di dati da file system NTFS </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/gzrt"> <code class="literal">gzrt</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=gzrt">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/g/gzrt.html">33</a>
</td>
<td style="text-align: left"> insieme di strumenti di recupero di gzip </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/sleuthkit">
<code class="literal">sleuthkit</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=sleuthkit">V:2, I:25</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/sleuthkit.html">1607</a>
</td>
<td style="text-align: left"> strumenti per analisi forensi (Sleuthkit) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/autopsy">
<code class="literal">autopsy</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=autopsy">V:0, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/autopsy.html">1027</a>
</td>
<td style="text-align: left"> interfaccia grafica per SleuthKit </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/foremost">
<code class="literal">foremost</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=foremost">V:0, I:5</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/f/foremost.html">102</a>
</td>
<td style="text-align: left"> applicazione forense per il recupero dei dati </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/guymager">
<code class="literal">guymager</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=guymager">V:0, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/g/guymager.html">1021</a>
</td>
<td style="text-align: left"> strumento forense per immagini basato su Qt </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/dcfldd">
<code class="literal">dcfldd</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=dcfldd">V:0, I:4</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/dcfldd.html">113</a>
</td>
<td style="text-align: left"> versione migliorata di <code class="literal">dd</code> per analisi forensi e sicurezza </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Si possono ripristinare i file sui file system ext2 usando i comandi
<code class="literal">list_deleted_inodes</code> e <code class="literal">undel</code> di
<code class="literal">debugfs</code>(8) nel pacchetto <code class="literal">e2fsprogs</code>.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_splitting_a_large_file_into_small_files"/>9.8.5. Suddividere un file grande in file più piccoli</h3>
</div>
</div>
</div>
<p>Quando dei dati sono troppo grandi affinché ne venga fatto il backup in un
file singolo, si può fare il backup dei suoi contenuti dopo averlo suddiviso
in pezzi di, ad esempio 2000MiB, che saranno successivamente riuniti a
formare il file originale.</p>
<pre class="screen">$ split -b 2000m large_file
$ cat x* >large_file</pre>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Attenzione]" src="images/caution.png"/>
</td>
<th align="left">Attenzione</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Assicurarsi di non avere altri file che iniziano con "<code class="literal">x</code>"
per evitare conflitti nei nomi.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_clearing_file_contents"/>9.8.6. Pulire il contenuto di file</h3>
</div>
</div>
</div>
<p>Per ripulire i contenuti di un file, come un file di registro, non usare
<code class="literal">rm</code>(1) per cancellarlo e poi crearne un altro, perché
nell'intervallo tra i due comandi potrebbe essere ancora possibile accedere
al file. Quello che segue è il metodo sicuro per pulire il contenuto di un
file.</p>
<pre class="screen">$ :>file_to_be_cleared</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_dummy_files"/>9.8.7. File fittizi</h3>
</div>
</div>
</div>
<p>I comandi seguenti creano file fittizi o vuoti.</p>
<pre class="screen">$ dd if=/dev/zero of=5kb.file bs=1k count=5
$ dd if=/dev/urandom of=7mb.file bs=1M count=7
$ touch zero.file
$ : > alwayszero.file</pre>
<p>Dovrebbero essere ora presenti i seguenti file.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> "<code class="literal">5kb.file</code>" è costituito da 5KB di zero. </p>
</li>
<li class="listitem">
<p> "<code class="literal">7mb.file</code>" è costituito da 7MB di dati casuali. </p>
</li>
<li class="listitem">
<p> "<code class="literal">zero.file</code>" potrebbe essere un file di 0 byte. Se fosse
stato preesistente, il suo orario <code class="literal">mtime</code> sarebbe stato
aggiornato mentre sarebbero stati mantenuti i suoi contenuti e la sua
grandezza. </p>
</li>
<li class="listitem">
<p> "<code class="literal">semprezero.file</code>" è sempre un file di 0 byte. Se fosse
stato preesistente, il suo orario <code class="literal">mtime</code> sarebbe stato
aggiornato e il suo contenuto azzerato. </p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_erasing_an_entire_hard_disk"/>9.8.8. Cancellare un intero disco fisso</h3>
</div>
</div>
</div>
<p>Esistono diversi modi di cancellare completamente i dati da un intero device
simile ad un disco fisso, ad esempio una chiavetta USB in
"<code class="literal">/dev/sda</code>".</p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Attenzione]" src="images/caution.png"/>
</td>
<th align="left">Attenzione</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Prima di eseguire i comandi indicati in seguito controllare la posizione
della chiavetta USB con <code class="literal">mount</code>(8). Il device a cui punta
"<code class="literal">/dev/sda</code>" potrebbe essere il disco fisso SCSI o
Serial-ATA che contiene l'intero sistema.</p>
</td>
</tr>
</table>
</div>
<p>Cancellare tutti i contenuti del disco reimpostando tutti i dati a 0 con il
comando seguente.</p>
<pre class="screen"># dd if=/dev/zero of=/dev/sda</pre>
<p>Cancellare tutto sovrascrivendo dati casuali con il comando seguente.</p>
<pre class="screen"># dd if=/dev/urandom of=/dev/sda</pre>
<p>Cancellare tutto sovrascrivendo dati casuali in modo molto efficiente con il
comando seguente.</p>
<pre class="screen"># shred -v -n 1 /dev/sda</pre>
<p>In alternativa si può usare <code class="literal">badblocks</code>(8) con l'opzione
<code class="literal">-t random</code>.</p>
<p>Dato che <code class="literal">dd</code>(1) è disponibile dalla shell di molti CD
Linux avviabili, come il CD dell'installatore Debian, si può cancellare
completamente il sistema installato su un disco fisso, ad esemio
"<code class="literal">/dev/hda</code>", "<code class="literal">/dev/sda</code>", ecc.,
eseguendo un comando di cancellazione da un supporto CD simile.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_erasing_unused_area_of_an_hard_disk"/>9.8.9. Cancellare area inutilizzate di un disco fisso</h3>
</div>
</div>
</div>
<p>Area inutilizzate di un disco fisso (o di una chiavetta USB), ad esempio
"<code class="literal">/dev/sdb1</code>", potrebbero contenere ancora i dati
cancellati stessi, dato che questi sono semplicemente scollegati dal file
system. È possibile pulire queste aree sovrascrivendole.</p>
<pre class="screen"># mount -t auto /dev/sdb1 /mnt/foo
# cd /mnt/foo
# dd if=/dev/zero of=junk
dd: writing to `junk': No space left on device
...
# sync
# umount /dev/sdb1</pre>
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Avvertimento]" src="images/warning.png"/>
</td>
<th align="left">Avvertimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Solitamente questo procedimento è sufficientemente buono per le chiavette
USB. Ma non è perfetto. La maggior parte dei nomi di file cancellati e dei
loro attributi potrebbe ancora essere nascosta e rimanere nel file system.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_undeleting_deleted_but_still_open_files"/>9.8.10. De-cancellare file cancellati ma ancora aperti</h3>
</div>
</div>
</div>
<p>Anche se un file è stato cancellato per errore, fintanto che è usato da
un'applicazione (in lettura o scrittura), è possibile recuperarlo.</p>
<p>Per esempio, provare a fare quanto segue.</p>
<pre class="screen">$ echo foo > bar
$ less bar
$ ps aux | grep ' less[ ]'
bozo 4775 0.0 0.0 92200 884 pts/8 S+ 00:18 0:00 less bar
$ rm bar
$ ls -l /proc/4775/fd | grep bar
lr-x------ 1 bozo bozo 64 2008-05-09 00:19 4 -> /home/bozo/bar (deleted)
$ cat /proc/4775/fd/4 >bar
$ ls -l
-rw-r--r-- 1 bozo bozo 4 2008-05-09 00:25 bar
$ cat bar
foo</pre>
<p>Quando si ha il pacchetto <code class="literal">lsof</code> installato, eseguire in un
altro terminale quanto segue.</p>
<pre class="screen">$ ls -li bar
2228329 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:02 bar
$ lsof |grep bar|grep less
less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar
$ rm bar
$ lsof |grep bar|grep less
less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar (deleted)
$ cat /proc/4775/fd/4 >bar
$ ls -li bar
2228302 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:05 bar
$ cat bar
foo</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_searching_all_hardlinks"/>9.8.11. Cercare tutti i collegamenti fisici</h3>
</div>
</div>
</div>
<p>I file con collegamenti fisici possono essere identificati usando
"<code class="literal">ls -li</code>".</p>
<pre class="screen">$ ls -li
total 0
2738405 -rw-r--r-- 1 root root 0 2008-09-15 20:21 bar
2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 baz
2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 foo</pre>
<p>Entrambi "<code class="literal">pippo</code>" e "<code class="literal">pluto</code>" hanno il
numero di collegamenti uguale a "2" (>1), il che mostra che hanno
collegamenti fisici. Hanno il numero di <a class="ulink" href="https://it.wikipedia.org/wiki/Inode">inode</a>,
"2738404", in comune. Ciò significa che sono lo stesso file con un
collegamento fisico. Nell'eventualità che non si trovino tutti i file con
collegamento fisico, li si possono cercare in base all'<a class="ulink" href="https://it.wikipedia.org/wiki/Inode">inode</a>, ad esempio "2738404", nel modo seguente.</p>
<pre class="screen"># find /path/to/mount/point -xdev -inum 2738404</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_invisible_disk_space_consumption"/>9.8.12. Consumo invisibile dello spazio su disco</h3>
</div>
</div>
</div>
<p>Tutti i file cancellati ma aperti consumano spazio su disco, anche se non
sono visibili con il normale comando <code class="literal">du</code>(1). Possono
essere elencati, insieme alla loro dimensione, nel modo seguente.</p>
<pre class="screen"># lsof -s -X / |grep deleted</pre>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_data_encryption_tips"/>9.9. Suggerimenti per la cifratura dei dati</h2>
</div>
</div>
</div>
<p>Avendo l'accesso fisico alla macchina, chiunque può facilmente ottenere
privilegi di root e accedere a tutti i file nel PC (vedere <a class="xref" href="ch04.it.html#_securing_the_root_password" title="4.6.4. Rendere sicura la password di root">Sezione 4.6.4, «Rendere sicura la password di root»</a>). 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 <a class="ulink" href="https://it.wikipedia.org/wiki/GNU_Privacy_Guard">GNU Privacy
Guard</a> (vedere <a class="xref" href="ch10.it.html#_data_security_infrastructure" title="10.3. Infrastruttura di sicurezza dei dati">Sezione 10.3, «Infrastruttura di sicurezza dei dati»</a>) possa
cifrare file, richiede un po' di lavoro da parte dell'utente.</p>
<p><a class="ulink" href="https://en.wikipedia.org/wiki/Dm-crypt">dm-crypt</a> facilita la cifratura automatica dei
dati attraverso moduli nativi del kernel Linux con un minimo lavoro da parte
dell'utente usando <a class="ulink" href="https://en.wikipedia.org/wiki/Device_mapper">device-mapper</a>.</p>
<div class="table">
<a id="listofdataencryptionutilities"/>
<p class="title">
<strong>Tabella 9.25. Elenco di utilità per la cifratura dei dati</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di utilità per la cifratura dei dati" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/cryptsetup">
<code class="literal">cryptsetup</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=cryptsetup">V:30, I:77</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/cryptsetup.html">406</a>
</td>
<td style="text-align: left"> utilità per device a blocchi cifrati (<a class="ulink" href="https://en.wikipedia.org/wiki/Dm-crypt">dm-crypt</a> / <a class="ulink" href="https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup">LUKS</a>) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/cryptmount">
<code class="literal">cryptmount</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=cryptmount">V:3, I:4</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/cryptmount.html">231</a>
</td>
<td style="text-align: left"> utilità per device a blocchi cifrati (<a class="ulink" href="https://en.wikipedia.org/wiki/Dm-crypt">dm-crypt</a> / <a class="ulink" href="https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup">LUKS</a>) con
particolare attenzione al montaggio/smontaggio da parte di utenti normali </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/fscrypt">
<code class="literal">fscrypt</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=fscrypt">V:0, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/f/fscrypt.html">4447</a>
</td>
<td style="text-align: left"> utilità per file cifratura di file system Linux (<a class="ulink" href="https://www.kernel.org/doc/html/latest/filesystems/fscrypt.html">fscrypt</a>) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/libpam-fscrypt">
<code class="literal">libpam-fscrypt</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=libpam-fscrypt">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/libp/libpam-fscrypt.html">3981</a>
</td>
<td style="text-align: left"> modulo PAM per cifratura di file system Linux (<a class="ulink" href="https://www.kernel.org/doc/html/latest/filesystems/fscrypt.html">fscrypt</a>) </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Attenzione]" src="images/caution.png"/>
</td>
<th align="left">Attenzione</th>
</tr>
<tr>
<td align="left" valign="top">
<p>La cifratura dei dati consuma tempo della CPU, ecc. I dati cifrati diventano
inaccessibili se la password viene persa. Valutare bene i suoi costi e
benefici.</p>
</td>
</tr>
</table>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Nota]" src="images/note.png"/>
</td>
<th align="left">Nota</th>
</tr>
<tr>
<td align="left" valign="top">
<p>È possibile installare un intero file system Debian in un disco cifrato con
l'<a class="ulink" href="https://it.wikipedia.org/wiki/Debian-Installer">Installatore Debian</a> (lenny o
successivo) usando <a class="ulink" href="https://en.wikipedia.org/wiki/Dm-crypt">dm-crypt</a>/<a class="ulink" href="https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup">LUKS</a> e initramfs.</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Per lo strumento di cifratura in spazio utente <a class="ulink" href="https://it.wikipedia.org/wiki/GNU_Privacy_Guard">GNU Privacy Guard</a> vedere <a class="xref" href="ch10.it.html#_data_security_infrastructure" title="10.3. Infrastruttura di sicurezza dei dati">Sezione 10.3, «Infrastruttura di sicurezza dei dati»</a>.</p>
</td>
</tr>
</table>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_removable_disk_encryption_with_dm_crypt_luks"/>9.9.1. Cifratura di dischi removibili con dm-crypt/LUKS</h3>
</div>
</div>
</div>
<p>Si può cifrare il contenuto di dispositivi di memorizzazione di massa
removibili, ad esempio una chiavetta USB in "<code class="literal">/dev/sdx</code>",
usando <a class="ulink" href="https://en.wikipedia.org/wiki/Dm-crypt">dm-crypt</a>/<a class="ulink" href="https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup">LUKS</a>. Formattarla semplicemente nel modo seguente.</p>
<pre class="screen"># fdisk /dev/sdx
... "n" "p" "1" "return" "return" "w"
# cryptsetup luksFormat /dev/sdx1
...
# cryptsetup open /dev/sdx1 secret
...
# ls -l /dev/mapper/
total 0
crw-rw---- 1 root root 10, 60 2021-10-04 18:44 control
lrwxrwxrwx 1 root root 7 2021-10-04 23:55 secret -> ../dm-0
# mkfs.vfat /dev/mapper/secret
...
# cryptsetup close secret</pre>
<p>Si può poi montarla come una chiavetta qualunque in
"<code class="literal">/media/<span class="emphasis"><em>nomeutente/etichetta_disco</em></span></code>",
tranne per il fatto che verrà chiesta la password (vedere <a class="xref" href="ch10.it.html#_removable_storage_device" title="10.1.7. Supporti di archiviazione removibili">Sezione 10.1.7, «Supporti di archiviazione removibili»</a>) nei moderni ambienti desktop che
usano il pacchetto <code class="literal">udisks2</code>. La differenza è che ogni dato
scritto in essa è cifrato. L'inserimento della password può essere
automatizzato usando un portachiavi (vedere <a class="xref" href="ch10.it.html#_password_keyring" title="10.3.6. Portachiavi per le password">Sezione 10.3.6, «Portachiavi per le password»</a>).</p>
<p>In alternativa si può formattare il supporto con diversi file system,
es. ext4 con "<code class="literal">mkfs.ext4 /dev/mapper/sdx1</code>". Se viene
invece usato btrfs, deve essere installato il pacchetto
<code class="literal">udisks2-btrfs</code>. Per questi file system può essere
necessario configurare la proprietà e i permessi dei file.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_mounting_encrypted_disk_with_dm_crypt_luks"/>9.9.2. Montare dischi removibili con dm-crypt/LUKS</h3>
</div>
</div>
</div>
<p>Ad esempio, una partizione di disco cifrata creata con dm-crypt/LUKS su
"<code class="literal">/dev/sdc5</code>" dall'Installatore Debian può essere montata
in "<code class="literal">/mnt</code>" nel modo seguente:</p>
<pre class="screen">$ sudo cryptsetup open /dev/sdc5 ninja --type luks
Enter passphrase for /dev/sdc5: ****
$ sudo lvm
lvm> lvscan
inactive '/dev/ninja-vg/root' [13.52 GiB] inherit
inactive '/dev/ninja-vg/swap_1' [640.00 MiB] inherit
ACTIVE '/dev/goofy/root' [180.00 GiB] inherit
ACTIVE '/dev/goofy/swap' [9.70 GiB] inherit
lvm> lvchange -a y /dev/ninja-vg/root
lvm> exit
Exiting.
$ sudo mount /dev/ninja-vg/root /mnt</pre>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_the_kernel"/>9.10. Il kernel</h2>
</div>
</div>
</div>
<p>Debian distribuisce, per le architetture supportate, kernel Linux modulari
contenuti in pacchetti.</p>
<p>Se si sta leggendo questa documentazione probabilmente non è necessario
compilare in proprio il kernel Linux.</p>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_kernel_parameters"/>9.10.1. Parametri del kernel</h3>
</div>
</div>
</div>
<p>Molte caratteristiche di Linux possono essere configurate tramite parametri
del kernel, nei modi seguenti.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Parametri del kernel inizializzati dal bootloader (vedere <a class="xref" href="ch03.it.html#_stage_2_the_boot_loader" title="3.1.2. Stadio 2: il bootloader">Sezione 3.1.2, «Stadio 2: il bootloader»</a>) </p>
</li>
<li class="listitem">
<p> Se accessibili attraverso sysfs (vedere <a class="xref" href="ch01.it.html#_procfs_and_sysfs" title="1.2.12. procfs e sysfs">Sezione 1.2.12, «procfs e sysfs»</a>), parametri del kernel modificati da
<code class="literal">sysctl</code>(8) durante l'esecuzione del sistema. </p>
</li>
<li class="listitem">
<p> Parametri di moduli impostati dagli argomenti di
<code class="literal">modprobe</code>(8) al momento dell'attivazione di un modulo
(vedere <a class="xref" href="ch09.it.html#_mounting_the_disk_image_file" title="9.7.3. Montare un file con un'immagine di disco">Sezione 9.7.3, «Montare un file con un'immagine di disco»</a>) </p>
</li>
</ul>
</div>
<p>Per i dettagli vedere "<a class="ulink" href="https://www.kernel.org/doc/html/latest/admin-guide/index.html">The
Linux kernel user’s and administrator’s guide</a> » <a class="ulink" href="https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html">The kernel’s command-line
parameters</a>".</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_kernel_headers"/>9.10.2. Header del kernel</h3>
</div>
</div>
</div>
<p>La maggior parte dei <span class="strong"><strong>normali programmi</strong></span>
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
"<code class="literal">/usr/include/linux</code>" e
"<code class="literal">/usr/include/asm</code>" forniti dal pacchetto
<code class="literal">libc6-dev</code> (creato dal pacchetto sorgente
<code class="literal">glibc</code>).</p>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Nota]" src="images/note.png"/>
</td>
<th align="left">Nota</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Per compilare alcuni programmi specifici per il kernel, come moduli per il
kernel da fonti esterne e il demone automounter (<code class="literal">amd</code>), è
necessario includere nella propria riga di comando il percorso ai
corrispondenti header del kernel, ad esempio
"<code class="literal">-I/usr/src/linux-particular-version/include/</code>". </p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_compiling_the_kernel_and_related_modules"/>9.10.3. Compilare il kernel ed i moduli relativi</h3>
</div>
</div>
</div>
<p>Debian ha un proprio metodo di compilazione del kernel e dei moduli
relativi.</p>
<div class="table">
<a id="listofkeypackagenthedebiansystem"/>
<p class="title">
<strong>Tabella 9.26. Elenco di pacchetti chiave da installare per la ricompilazione del kernel in
un sistema Debian</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di pacchetti chiave da installare per la ricompilazione del kernel in un sistema Debian" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/build-essential">
<code class="literal">build-essential</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=build-essential">I:485</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/b/build-essential.html">20</a>
</td>
<td style="text-align: left"> pacchetti essenziali per compilare pacchetti Debian:
<code class="literal">make</code>, <code class="literal">gcc</code>, … </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/bzip2"> <code class="literal">bzip2</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=bzip2">V:161, I:970</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/b/bzip2.html">121</a>
</td>
<td style="text-align: left"> utilità di compressione e decompressione per file bz2 </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/libncurses5-dev">
<code class="literal">libncurses5-dev</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=libncurses5-dev">I:93</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/libn/libncurses5-dev.html">6</a>
</td>
<td style="text-align: left"> librerie di sviluppo e documentazione per ncurses </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/git"> <code class="literal">git</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=git">V:305, I:517</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/g/git.html">44453</a>
</td>
<td style="text-align: left"> git: sistema distribuito di controllo delle revisioni usato dal kernel Linux </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/fakeroot">
<code class="literal">fakeroot</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=fakeroot">V:30, I:497</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/f/fakeroot.html">208</a>
</td>
<td style="text-align: left"> fornisce un ambiente fakeroot per compilare pacchetti da utente non root </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/initramfs-tools">
<code class="literal">initramfs-tools</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=initramfs-tools">V:386, I:990</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/i/initramfs-tools.html">113</a>
</td>
<td style="text-align: left"> strumento per compilare un initramfs (specifico di Debian) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/dkms"> <code class="literal">dkms</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=dkms">V:67, I:181</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/dkms.html">183</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support">DKMS (Dynamic Kernel Module
Support, supporto dinamico per i noduli del kernel)</a> (generico) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/module-assistant">
<code class="literal">module-assistant</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=module-assistant">V:1, I:25</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/m/module-assistant.html">406</a>
</td>
<td style="text-align: left"> script di aiuto per creare pacchetti di moduli (specifico di Debian) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/devscripts">
<code class="literal">devscripts</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=devscripts">V:7, I:46</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/devscripts.html">2777</a>
</td>
<td style="text-align: left"> script di aiuto per i manutentori di pacchetti Debian (specifico di Debian) </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>Se si usa <code class="literal">initrd</code> nello <a class="xref" href="ch03.it.html#_stage_2_the_boot_loader" title="3.1.2. Stadio 2: il bootloader">Sezione 3.1.2, «Stadio 2: il bootloader»</a>, ci si assicuri di leggere le
informazioni relative in <code class="literal">initramfs-tools</code>(8),
<code class="literal">update-initramfs</code>(8), <code class="literal">mkinitramfs</code>(8) e
<code class="literal">initramfs.conf</code>(5).</p>
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Avvertimento]" src="images/warning.png"/>
</td>
<th align="left">Avvertimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Quando si compilano i sorgenti del kernel Linux, non mettere collegamenti
simbolici alle directory nell'albero dei sorgenti (ad esempio,
"<code class="literal">/usr/src/linux*</code>") in
"<code class="literal">/usr/include/linux</code>" e
"<code class="literal">/usr/include/asm</code>". (Alcuni documenti ormai datati
suggeriscono di farlo.)</p>
</td>
</tr>
</table>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Nota]" src="images/note.png"/>
</td>
<th align="left">Nota</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Quando si compila il kernel Linux più recente nel sistema Debian
<code class="literal">stable</code>, potrebbe essere necessario l'uso delle versioni
backport degli strumenti piu recenti da Debian <code class="literal">unstable</code>.</p>
<p> <code class="literal">module-assistant</code>(8) (o la sua forma abbreviata
<code class="literal">m-a</code>) aiuta gli utenti a compilare e installare pacchetti
di moduli facilmente per uno o più kernel personalizzati.</p>
<p>Il <a class="ulink" href="https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support">DKMS (Dynamic Kernel Module
Support, supporto dinamico per i moduli del kernel)</a> è un nuova
infrastruttura indipendente dalla distribuzione progettata per permettere
l'aggiornamento di singoli moduli del kernel senza cambiare tutto il
kernel. È utilizzata per il mantenimento dei moduli esterni all'albero dei
sorgenti. Rende anche molto facile la ricompilazione dei moduli quando si
aggiornano i kernel.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_compiling_the_kernel_source_debian_kernel_team_recommendation"/>9.10.4. Compilare i sorgenti del kernel: il metodo raccomandato dal Team del Kernel
di Debian</h3>
</div>
</div>
</div>
<p>Per compilare pacchetti binari del kernel personalizzati a partire dai
sorgenti originali del kernel, si deve usare il target
"<code class="literal">deb-pkg</code> fornito.</p>
<pre class="screen">$ sudo apt-get build-dep linux
$ cd /usr/src
$ wget http://www.kernel.org/pub/linux/kernel/v3.11/linux-<span class="emphasis"><em>version</em></span>.tar.bz2
$ tar -xjvf linux-<span class="emphasis"><em>version</em></span>.tar.bz2
$ cd linux-<span class="emphasis"><em>version</em></span>
$ cp /boot/config-<span class="emphasis"><em>version</em></span> .config
$ make menuconfig
...
$ make deb-pkg</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Il pacchetto linux-source-<span class="emphasis"><em>versione</em></span> fornisce i sorgenti
del kernel Linux con le patch Debian come
"<code class="literal">/usr/src/linux-<span class="emphasis"><em>versione</em></span>.tar.bz2</code>".</p>
</td>
</tr>
</table>
</div>
<p>Per compilare pacchetti binari specifici a partire dal pacchetto Debian dei
sorgenti del kernel, si devono usare i target
"<code class="literal">binary-arch_<span class="emphasis"><em>architettura</em></span>_<span class="emphasis"><em>featureset</em></span>_<span class="emphasis"><em>flavour</em></span></code>"
in "<code class="literal">debian/rules.gen</code>".</p>
<pre class="screen">$ sudo apt-get build-dep linux
$ apt-get source linux
$ cd linux-3.*
$ fakeroot make -f debian/rules.gen binary-arch_i386_none_686</pre>
<p>Ulteriori informazioni:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Wiki Debian: <a class="ulink" href="http://wiki.debian.org/it/KernelFAQ">FAQ del Kernel</a> </p>
</li>
<li class="listitem">
<p> Wiki Debian: <a class="ulink" href="http://wiki.debian.org/DebianKernel">Kernel Debian</a> </p>
</li>
<li class="listitem">
<p> Debian Linux Kernel Handbook: <a class="ulink" href="https://kernel-handbook.debian.net">https://kernel-handbook.debian.net</a> </p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_hardware_drivers_and_firmware"/>9.10.5. Driver per hardware e firmware</h3>
</div>
</div>
</div>
<p>Un driver hardware è il codice eseguito nelle CPU principali del sistema
target. La maggior parte dei driver hardware è ora disponibile come software
libero ed è inclusa nei normali pacchetti Debian dei kernel nell'area
<code class="literal">main</code>.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>driver <a class="ulink" href="https://it.wikipedia.org/wiki/Graphics_Processing_Unit">GPU</a> </p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> driver GPU Intel (<code class="literal">main</code>) </p>
</li>
<li class="listitem">
<p> driver GPU AMD/ATI (<code class="literal">main</code>) </p>
</li>
<li class="listitem">
<p> driver GPU NVIDIA (<code class="literal">main</code> per il driver <a class="ulink" href="https://it.wikipedia.org/wiki/Nouveau">nouveau</a> e <code class="literal">non-free</code> per i driver
solo binari supportati dal produttore. </p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<p>Il firmware è il codice o i dati caricati sul dispositivo attaccato al
sistema target (ad esempio <a class="ulink" href="https://it.wikipedia.org/wiki/Microcodice">microcodice</a>
della CPU, codice di rendering eseguito nella GPU oppure dati <a class="ulink" href="https://it.wikipedia.org/wiki/FPGA">FPGA</a>/<a class="ulink" href="https://it.wikipedia.org/wiki/CPLD">CPLD</a>, …). Alcuni
pacchetti firmware sono disponibili come software libero, ma molti pacchetti
firmware non lo sono dato che contengono dati binari senza
sorgenti. L'installazione di questi dati del firmware è necessaria affinché
il dispositivo funzioni come atteso.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>I pacchetti dei dati del firmware contengono dati caricati nella memoria
volatile nel dispositivo obiettivo.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> firmware-linux-free (<code class="literal">main</code>) </p>
</li>
<li class="listitem">
<p> firmware-linux-nonfree (<code class="literal">non-free-firmware</code>) </p>
</li>
<li class="listitem">
<p> firmware-linux-* (<code class="literal">non-free-firmware</code>) </p>
</li>
<li class="listitem">
<p> *-firmware (<code class="literal">non-free-firmware</code>) </p>
</li>
<li class="listitem">
<p> intel-microcode (<code class="literal">non-free-firmware</code>) </p>
</li>
<li class="listitem">
<p> amd64-microcode (<code class="literal">non-free-firmware</code>) </p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>I pacchetti dei programmi di aggiornamento del firmware che aggiornano i
nella memoria non volatile del dispositivo target.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> <a class="ulink" href="https://en.wikipedia.org/wiki/Fwupd">fwupd</a> (<code class="literal">main</code>): demone per
aggiornamento del firmware che scarica dati del firmware da <a class="ulink" href="https://fwupd.org/">Linux Vendor Firmware Service</a>.</p>
</li>
<li class="listitem">
<p> gnome-firmware (<code class="literal">main</code>): frontend GTK per fwupd </p>
</li>
<li class="listitem">
<p> plasma-discover-backend-fwupd (<code class="literal">main</code>): frontend Qt per
fwupd </p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<p>Please note that access to <code class="literal">non-free-firmware</code> packages are
provided by the official installation media to offer functional installation
experience to the user since Debian 12 Bookworm. The
<code class="literal">non-free-firmware</code> area is described in <a class="xref" href="ch02.it.html#_debian_archive_basics" title="2.1.4. Nozioni di base sugli archivi Debian">Sezione 2.1.4, «Nozioni di base sugli archivi Debian»</a>.</p>
<p>Notare anche che i dati di firmware che <a class="ulink" href="https://en.wikipedia.org/wiki/Fwupd">fwupd</a>
scarica da <a class="ulink" href="https://fwupd.org/">Linux Vendor Firmware
Service</a> e che sono caricati nel kernel Linux in esecuzione
potrebbero essere <code class="literal">non-free</code>.</p>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_virtualized_system"/>9.11. Sistema virtualizzato</h2>
</div>
</div>
</div>
<p>L'uso di sistemi virtualizzati permette di eseguire più istanze di un
sistema simultaneamente su un singolo hardware.</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Vedere <a class="ulink" href="http://wiki.debian.org/SystemVirtualization">http://wiki.debian.org/SystemVirtualization</a>.</p>
</td>
</tr>
</table>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_virtualization_tools"/>9.11.1. Strumenti per virtualizzazione ed emulazione</h3>
</div>
</div>
</div>
<p>Ci sono diversi piattaforme di strumenti per la <a class="ulink" href="https://en.wikipedia.org/wiki/Virtualization">virtualizzazione</a> e l'emulazione.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Pacchetti per l'<a class="ulink" href="https://en.wikipedia.org/wiki/Hardware_emulation">emulazione hardware</a>
completa come quelli installati dal metapacchetto <a class="ulink" href="https://packages.debian.org/en/sid/games-emulator">games-emulator</a>.</p>
</li>
<li class="listitem">
<p> Emulazione per lo più a livello di CPU con alcune emulazioni di dispositivi
di I/O come <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a>. </p>
</li>
<li class="listitem">
<p> Virtualizzazione per lo più a livello di CPU con alcune emulazioni di
dispositivi di I/O come <a class="ulink" href="https://it.wikipedia.org/wiki/Kernel-based_Virtual_Machine">macchine
virtuali basate sul Kernel (KVM)</a>. </p>
</li>
<li class="listitem">
<p> Virtualizzazione in contenitori a livello di SO con supporto a livello del
kernel come <a class="ulink" href="https://it.wikipedia.org/wiki/LXC">LXC (Linux
Containers)</a>, <a class="ulink" href="https://it.wikipedia.org/wiki/Docker">Docker</a>, ... </p>
</li>
<li class="listitem">
<p> Virtualizzazione dell'accesso al file system a livello di SO con override
del percorso dei file nelle chiamate di libreria di sistema come <a class="ulink" href="https://it.wikipedia.org/wiki/Chroot">chroot</a>. </p>
</li>
<li class="listitem">
<p> Virtualizzazione dell'accesso al file system a livello di SO con override
della proprietà dei file nelle chiamate di libreria di sistema come <a class="ulink" href="https://it.wikipedia.org/wiki/Chroot">chroot</a>. </p>
</li>
<li class="listitem">
<p> Emulazione delle API del SO come <a class="ulink" href="https://en.wikipedia.org/wiki/Wine">Wine</a> </p>
</li>
<li class="listitem">
<p> Virtualizzazione a livello di interprete con selezione del suo eseguibile e
override della libreria a runtime come <a class="ulink" href="https://pypi.org/project/virtualenv/">virtualenv</a> e <a class="ulink" href="https://docs.python.org/3/library/venv.html">venv</a> per
Python. </p>
</li>
</ul>
</div>
<p>La virtualizzazione in contenitori usa <a class="xref" href="ch04.it.html#_linux_security_features" title="4.7.4. Funzionalità di sicurezza di Linux">Sezione 4.7.4, «Funzionalità di sicurezza di Linux»</a> ed è la tecnologia che fa da backend
per <a class="xref" href="ch07.it.html#_sandbox" title="7.6. Sandbox">Sezione 7.6, «Sandbox»</a>.</p>
<p>Ecco alcuni pacchetti che aiutano a configurare un sistema virtualizzato.</p>
<div class="table">
<a id="listofvirtualizationtools"/>
<p class="title">
<strong>Tabella 9.27. Elenco di strumenti di virtualizzazione</strong>
</p>
<div class="table-contents">
<table class="table" summary="Elenco di strumenti di virtualizzazione" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"> pacchetto </th>
<th style="text-align: left"> popcon </th>
<th style="text-align: left"> dimensione </th>
<th style="text-align: left"> descrizione </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/schroot">
<code class="literal">schroot</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=schroot">V:6, I:8</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/schroot.html">2508</a>
</td>
<td style="text-align: left"> strumento specializzato per eseguire pacchetti Debian binari in chroot </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/sbuild">
<code class="literal">sbuild</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=sbuild">V:1, I:4</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/sbuild.html">242</a>
</td>
<td style="text-align: left"> strumento per compilare pacchetti Debian binari da sorgenti Debian </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/debootstrap">
<code class="literal">debootstrap</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=debootstrap">V:5, I:59</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/debootstrap.html">279</a>
</td>
<td style="text-align: left"> avviare un sistema Debian base (scritto in sh) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/cdebootstrap">
<code class="literal">cdebootstrap</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=cdebootstrap">V:0, I:2</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/c/cdebootstrap.html">111</a>
</td>
<td style="text-align: left"> avviare un sistema Debian (scritto in C) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/virt-manager">
<code class="literal">virt-manager</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=virt-manager">V:11, I:42</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/v/virt-manager.html">2296</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://en.wikipedia.org/wiki/Virtual_Machine_Manager">Virtual Machine Manager</a>:
applicazione desktop per gestire macchine virtuali </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/libvirt-clients">
<code class="literal">libvirt-clients</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=libvirt-clients">V:43, I:62</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/libv/libvirt-clients.html">1311</a>
</td>
<td style="text-align: left"> programmi per la libreria <a class="ulink" href="https://en.wikipedia.org/wiki/Libvirt">libvirt</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/games-emulator">
<code class="literal">games-emulator</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=games-emulator">I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/g/games-emulator.html">26</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://packages.debian.org/en/sid/games-emulator">games-emulator</a>: emulatori di Debian per
i giochi </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/bochs"> <code class="literal">bochs</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=bochs">V:0, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/b/bochs.html">6956</a>
</td>
<td style="text-align: left"><a class="ulink" href="https://it.wikipedia.org/wiki/Bochs">Bochs</a>: emulatore PC IA-32 </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/qemu"> <code class="literal">qemu</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=qemu">I:25</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/q/qemu.html">97</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a>: veloce emulatore generico di processore </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/qemu-system">
<code class="literal">qemu-system</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=qemu-system">I:21</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/q/qemu-system.html">59</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a>: binari per emulazione completa del sistema </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/qemu-user">
<code class="literal">qemu-user</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=qemu-user">V:1, I:8</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/q/qemu-user.html">100502</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a>: binari per emulazione in spazio utente </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/qemu-utils">
<code class="literal">qemu-utils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=qemu-utils">V:12, I:107</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/q/qemu-utils.html">6875</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a>: utilità </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/qemu-kvm">
<code class="literal">qemu-kvm</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=qemu-kvm">V:2, I:19</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/q/qemu-kvm.html">107</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://it.wikipedia.org/wiki/Kernel-based_Virtual_Machine">KVM</a>: virtualizzazione completa su hardware x86
con<a class="ulink" href="https://en.wikipedia.org/wiki/Hardware-assisted_virtualization">virtualizzazione assistita
da hardware</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/virtualbox">
<code class="literal">virtualbox</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=virtualbox">V:9, I:11</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/v/virtualbox.html">126370</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://it.wikipedia.org/wiki/VirtualBox">VirtualBox</a>: soluzione per virtualizzazione
i dx86 su i386 e amd64 </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/xen-tools">
<code class="literal">xen-tools</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=xen-tools">V:0, I:3</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/x/xen-tools.html">727</a>
</td>
<td style="text-align: left"> strumenti per gestire server virtuali <a class="ulink" href="https://it.wikipedia.org/wiki/Xen">XEN</a> Debian </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/wine"> <code class="literal">wine</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=wine">V:13, I:64</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/w/wine.html">134</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://en.wikipedia.org/wiki/Wine">Wine</a>: implementazione della API Windows (suite
standard) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/dosbox">
<code class="literal">dosbox</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=dosbox">V:2, I:16</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/dosbox.html">2671</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://it.wikipedia.org/wiki/DOSBox">DOSBox</a>: emulatore x86 con grafica
Tandy/Herc/CGA/EGA/VGA/SVGA, suono e DOS </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/lxc"> <code class="literal">lxc</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=lxc">V:9, I:13</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/l/lxc.html">25643</a>
</td>
<td style="text-align: left"> strumenti in spazio utente per <a class="ulink" href="http://lxc.sourceforge.net/">contenitori
Linux containers</a> </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/python3-venv">
<code class="literal">python3-venv</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=python3-venv">I:60</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/python3-venv.html">6</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://docs.python.org/3/library/venv.html">venv</a> per creare ambienti Python virtuali
(libreria di sistema) </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/python3-virtualenv">
<code class="literal">python3-virtualenv</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=python3-virtualenv">V:9, I:53</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/python3-virtualenv.html">406</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://pypi.org/project/virtualenv/">virtualenv</a> per creare ambienti Python
virtuali isolati </td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/pipx"> <code class="literal">pipx</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon-graph.php?packages=pipx">V:0, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/p/pipx.html">887</a>
</td>
<td style="text-align: left"> <a class="ulink" href="https://pypi.org/project/pipx/">pipx</a> per installare applicazioni Python in
ambienti isolati </td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>Vedere l'articolo di Wikipedia <a class="ulink" href="https://en.wikipedia.org/wiki/Comparison_of_platform_virtual_machines">Comparison of platform virtual
machines</a> per una comparazione dettagliata di diverse soluzioni per
la virtualizzazione di piattaforme.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_virtualization_work_flow"/>9.11.2. Fasi del processo di virtualizzazione</h3>
</div>
</div>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Nota]" src="images/note.png"/>
</td>
<th align="left">Nota</th>
</tr>
<tr>
<td align="left" valign="top">
<p>I kernel Debian predefiniti hanno il supporto per <a class="ulink" href="https://it.wikipedia.org/wiki/Kernel-based_Virtual_Machine">KVM</a> a partire da <code class="literal">lenny</code>.</p>
</td>
</tr>
</table>
</div>
<p>Il tipico processo di <a class="ulink" href="https://en.wikipedia.org/wiki/Virtualization">virtualizzazione</a>
comporta diverse fasi.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Creare un file system vuoto (un albero di file o un'immagine di disco). </p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> L'albero di file può essere creato con "<code class="literal">mkdir -p
/percorso/di/chroot</code>". </p>
</li>
<li class="listitem">
<p> Il file immagine raw del disco può essere creato con
<code class="literal">dd</code>(1) (vedere <a class="xref" href="ch09.it.html#_making_the_disk_image_file" title="9.7.1. Creare un file con un'immagine di disco">Sezione 9.7.1, «Creare un file con un'immagine di disco»</a> e <a class="xref" href="ch09.it.html#_making_the_empty_disk_image_file" title="9.7.5. Creare un file con immagine di disco vuoto">Sezione 9.7.5, «Creare un file con immagine di disco vuoto»</a>). </p>
</li>
<li class="listitem">
<p>Si può usare <code class="literal">qemu-img</code>(1) per creare e convertire file
immagine di dischi supportati da <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a>. </p>
</li>
<li class="listitem">
<p> I formati di file raw e <a class="ulink" href="https://it.wikipedia.org/wiki/VMDK">VMDK</a> possono essere
usati come formati comuni tra i vari strumenti di virtualizzazione. </p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p> Montare l'immagine del disco con <code class="literal">mount</code>(8) nel file system
(opzionale). </p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> Per il file immagine raw sel disco, montarlo come <a class="ulink" href="https://en.wikipedia.org/wiki/Loop_device">device loop</a> o <a class="ulink" href="https://en.wikipedia.org/wiki/Device_mapper">device
mapper</a> (vedere <a class="xref" href="ch09.it.html#_mounting_the_disk_image_file" title="9.7.3. Montare un file con un'immagine di disco">Sezione 9.7.3, «Montare un file con un'immagine di disco»</a>). </p>
</li>
<li class="listitem">
<p> Per le immagini disco supportate da <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a>,
montarle come <a class="ulink" href="https://en.wikipedia.org/wiki/Network_block_device">device a blocchi di
rete</a> (vedere <a class="xref" href="ch09.it.html#_mounting_the_virtual_disk_image_file" title="9.11.3. Montare il file immagine di disco virtuale">Sezione 9.11.3, «Montare il file immagine di disco virtuale»</a>). </p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p> Popolare il file system obiettivo con i dati di sistema necessari. </p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p> L'uso di programmi come <code class="literal">debootstrap</code> e
<code class="literal">cdebootstrap</code> aiuta questo processo (vedere <a class="xref" href="ch09.it.html#_chroot_system" title="9.11.4. Sistema chroot">Sezione 9.11.4, «Sistema chroot»</a>). </p>
</li>
<li class="listitem">
<p> Usare gli installatori di sistemi operativi nell'emulazione di sistemi
completi. </p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p> Eseguire un programma in un ambiente virtualizzato. </p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><a class="ulink" href="https://it.wikipedia.org/wiki/Chroot">chroot</a> fornisce un ambiente di
virtualizzazione base sufficiente a compilare programmi, eseguire
applicazioni in console ed eseguire demoni al suo interno. </p>
</li>
<li class="listitem">
<p><a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a> fornisce emulazione di CPU
inter-piattaforma. </p>
</li>
<li class="listitem">
<p><a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a> con <a class="ulink" href="https://it.wikipedia.org/wiki/Kernel-based_Virtual_Machine">KVM</a> fornisce
una completa emulazione di sistema con <a class="ulink" href="https://en.wikipedia.org/wiki/Hardware-assisted_virtualization">virtualizzazione assistita da
hardware</a>. </p>
</li>
<li class="listitem">
<p><a class="ulink" href="https://it.wikipedia.org/wiki/VirtualBox">VirtualBox</a> fornisce una completa
emulazione del sistema in i386 e amd64 con o senza <a class="ulink" href="https://en.wikipedia.org/wiki/Hardware-assisted_virtualization">virtualizzazione assistita da
hardware</a>. </p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_mounting_the_virtual_disk_image_file"/>9.11.3. Montare il file immagine di disco virtuale</h3>
</div>
</div>
</div>
<p>Per i file immagine raw di disco, vedere <a class="xref" href="ch09.it.html#_the_disk_image" title="9.7. Immagine del disco">Sezione 9.7, «Immagine del disco»</a>.</p>
<p>Per altri file immagine di dischi virtuali, si può usare
<code class="literal">qemu-nbd</code>(8) per esportarli usando il protocollo per
<a class="ulink" href="https://en.wikipedia.org/wiki/Network_block_device">device a blocchi di rete</a> e
montarli usando il modulo <code class="literal">nbd</code> del kernel.</p>
<p><code class="literal">qemu-nbd</code>(8) supporta i formati di disco supportati da
<a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a>; <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a> supporta
i seguenti formati di dischi: raw, <a class="ulink" href="https://it.wikipedia.org/wiki/Qcow">qcow2,
qcow</a>, <a class="ulink" href="https://it.wikipedia.org/wiki/VMDK">vmdk</a>, <a class="ulink" href="https://en.wikipedia.org/wiki/VirtualBox#Virtual_Desktop_Image">vdi</a>, <a class="ulink" href="https://it.wikipedia.org/wiki/Bochs">bochs</a>, cow
(copy-on-write di user-mode Linux), <a class="ulink" href="https://it.wikipedia.org/wiki/Parallels_Workstation">parallels</a>, <a class="ulink" href="https://en.wikipedia.org/wiki/Apple_Disk_Image">dmg</a>, <a class="ulink" href="https://en.wikipedia.org/wiki/Cloop">cloop</a>, <a class="ulink" href="https://en.wikipedia.org/wiki/VHD_(file_format)">vpc</a>, vvfat (VFAT
virtuale) e host_device.</p>
<p>I <a class="ulink" href="https://en.wikipedia.org/wiki/Network_block_device">device a blocchi di rete</a> possono
supportare partizioni nello stesso modo dei <a class="ulink" href="https://en.wikipedia.org/wiki/Loop_device">device loop</a> (vedere <a class="xref" href="ch09.it.html#_mounting_the_disk_image_file" title="9.7.3. Montare un file con un'immagine di disco">Sezione 9.7.3, «Montare un file con un'immagine di disco»</a>). Si può montare la prima
partizione di "<code class="literal">disk.img</code>" nel modo seguente.</p>
<pre class="screen"># modprobe nbd max_part=16
# qemu-nbd -v -c /dev/nbd0 disk.img
...
# mkdir /mnt/part1
# mount /dev/nbd0p1 /mnt/part1</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>È possibile esportare solamente la prima partizione di
"<code class="literal">disk.img</code>" usando l'opzione "<code class="literal">-P 1</code>"per
<code class="literal">qemu-nbd</code>(8).</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_chroot_system"/>9.11.4. Sistema chroot</h3>
</div>
</div>
</div>
<p>Se si desidera provare un nuovo ambiente Debian da una console in terminale,
è raccomandato usare <a class="ulink" href="https://it.wikipedia.org/wiki/Chroot">chroot</a>. Ciò permette di
eseguire applicazioni in console di Debian <code class="literal">unstable</code> e
<code class="literal">testing</code> senza i consueti rischi associati e senza
riavviare. <code class="literal">chroot</code>(8) è il metodo più basilare.</p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Attenzione]" src="images/caution.png"/>
</td>
<th align="left">Attenzione</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Gli esempi seguenti presuppongono che entrambi i sistemi, quello genitore e
quello chroot, condividano la stessa architettura <code class="literal">amd64</code>
della CPU.</p>
</td>
</tr>
</table>
</div>
<p>Si può tuttavia anche creare manualmente un ambiente
<code class="literal">chroot</code>(8) usando <code class="literal">debootstrap</code>(1). Ma
questo richiede un impegno non banale.</p>
<p>Il pacchetto <a class="ulink" href="http://packages.debian.org/search?keywords=sbuild">sbuild</a> per compilare pacchetti
Debian da sorgenti usa l'ambiente chroot gestito dal pacchetto <a class="ulink" href="http://packages.debian.org/search?keywords=schroot">schroot</a>. Viene fornito con uno script ausiliario
<code class="literal">sbuild-createchroot</code>(1). Vediamo come funziona eseguendolo
nel modo seguente.</p>
<pre class="screen">$ sudo mkdir -p /srv/chroot
$ sudo sbuild-createchroot -v --include=eatmydata,ccache unstable /srv/chroot/unstable-amd64-sbuild http://deb.debian.org/debian
...</pre>
<p>Si può vedere come <code class="literal">debootstrap</code>(8) popoli i dati di
sistema per l'ambiente <code class="literal">unstable</code> sotto
"<code class="literal">/srv/chroot/unstable-amd64-sbuild</code>" per un sistema di
compilazione minimale.</p>
<p>Si può fare il login in questo ambiente usando
<code class="literal">schroot</code>(1).</p>
<pre class="screen">$ sudo schroot -v -c chroot:unstable-amd64-sbuild</pre>
<p>Si può vedere come venga creata una shell di sistema in esecuzione
nell'ambiente <code class="literal">unstable</code>.</p>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Nota]" src="images/note.png"/>
</td>
<th align="left">Nota</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Il file "<code class="literal">/usr/sbin/policy-rc.d</code>" che termina sempre con
101 evita che, in un sistema Debian, i programmi demone vengano avviati
automaticamente. Vedere
"<code class="literal">/usr/share/doc/sysv-rc/README.policy-rc.d.gz</code>".</p>
</td>
</tr>
</table>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Nota]" src="images/note.png"/>
</td>
<th align="left">Nota</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Alcuni programmi in chroot per funzionare possono aver bisogno dell'accesso
a più file nel sistema genitore di quanti ne fornisca
<code class="literal">sbuild-createchroot</code>. Per esempio, può essere necessario
montare con bind o copiare "<code class="literal">/sys</code>",
"<code class="literal">/etc/passwd</code>", "<code class="literal">/etc/group</code>",
"<code class="literal">/var/run/utmp</code>", "<code class="literal">/var/log/wtmp</code>", ecc.</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Il pacchetto <code class="literal">sbuild</code> aiuta a costruire un sistema chroot e
compila un pacchetto dentro la chroot usando <code class="literal">schroot</code> come
suo backend. È un sistema ideale per controllare le dipendenze di
compilazione. Vedere ulteriori dettagli su <a class="ulink" href="https://wiki.debian.org/sbuild">sbuild nel wiki Debian</a> e l'<a class="ulink" href="https://www.debian.org/doc/manuals/debmake-doc/ch03.en.html#sbuild-setup">esempio di configurazione di sbuild
nella "Guida per il Manutentore Debian"</a>. </p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_multiple_desktop_systems"/>9.11.5. Sistemi desktop multipli</h3>
</div>
</div>
</div>
<p>Se si desidera provare un nuovo ambiente desktop con GUI per qualsiasi SO,
l'autore raccomanda l'uso di <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a> o <a class="ulink" href="https://it.wikipedia.org/wiki/Kernel-based_Virtual_Machine">KVM</a> in un sistema Debian <code class="literal">stable</code> per
eseguire sistemi desktop multipli in maniera sicura usando la <a class="ulink" href="https://en.wikipedia.org/wiki/Virtualization">virtualizzazione</a>. Permettono di eseguire
qualsiasi applicazione desktop, incluse quelle di Debian
<code class="literal">unstable</code> e <code class="literal">testing</code>, senza i consueti
rischi ad esse associati e senza riavviare.</p>
<p>Dato che <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a> puro è molto lento, è raccomandata
la sua velocizzazione con <a class="ulink" href="https://it.wikipedia.org/wiki/Kernel-based_Virtual_Machine">KVM</a> quando il sistema
host lo permette.</p>
<p><a class="ulink" href="https://en.wikipedia.org/wiki/Virtual_Machine_Manager">Virtual Machine Manager</a> noto
anche come <code class="literal">virt-manager</code> è un comodo strumento GUI per
gestire macchine virtuali KVM con <a class="ulink" href="https://en.wikipedia.org/wiki/Libvirt">libvirt</a>.</p>
<p>L'immagine disco virtuale "<code class="literal">virtdisk.qcow2</code>" contenente un
sistema Debian per <a class="ulink" href="https://it.wikipedia.org/wiki/QEMU">QEMU</a> si può creare con i
<a class="ulink" href="https://www.debian.org/distrib/netinst">piccoli CD dell'installatore
Debian</a> nel modo seguente.</p>
<pre class="screen">$ 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
...</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[Suggerimento]" src="images/tip.png"/>
</td>
<th align="left">Suggerimento</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Eseguire altre distribuzioni GNU/Linux come <a class="ulink" href="http://www.ubuntu.com/">Ubuntu</a> e <a class="ulink" href="http://fedoraproject.org/">Fedora</a> in una
<a class="ulink" href="https://en.wikipedia.org/wiki/Virtualization">virtualizzazione</a> è un ottimo metodo
per imparare trucchetti di configurazione. Anche altri sistemi operativi
proprietari possono essere eseguiti tranquillamente in queste <a class="ulink" href="https://en.wikipedia.org/wiki/Virtualization">virtualizzazioni</a> GNU/Linux.</p>
</td>
</tr>
</table>
</div>
<p>Vedere ulteriori suggerimenti in <a class="ulink" href="http://wiki.debian.org/SystemVirtualization">wiki Debian:
SystemVirtualization</a>.</p>
</div>
</div>
<div class="footnotes">
<br/>
<hr/>
<div id="ftn.idm13994" class="footnote">
<p><a href="#idm13994" class="para"><sup class="para">[2] </sup></a>Esempi di personalizzazione più elaborati: "<a class="ulink" href="https://github.com/mhinz/vim-galore">Vim
Galore</a>", "<a class="ulink" href="https://github.com/tpope/vim-sensible">sensible.vim</a>", "<a class="ulink" href="https://www.vi-improved.org/recommendations/">#vim Recommendations</a>" ... </p>
</div>
<div id="ftn.idm14047" class="footnote">
<p><a href="#idm14047" class="para"><sup class="para">[3] </sup></a> <a class="ulink" href="https://packages.debian.org/unstable/vim-pathogen">vim-pathogen</a> era popolare. </p>
</div>
</div>
</div>
<div class="navfooter">
<hr/>
<table width="100%" summary="Navigation footer">
<tr>
<td align="left"><a accesskey="p" href="ch08.it.html"><img src="images/prev.png" alt="Indietro"/></a> </td>
<td align="center"> </td>
<td align="right"> <a accesskey="n" href="ch10.it.html"><img src="images/next.png" alt="Avanti"/></a></td>
</tr>
<tr>
<td align="left" valign="top">Capitolo 8. I18N e L10N </td>
<td align="center">
<a accesskey="h" href="index.it.html">
<img src="images/home.png" alt="Partenza"/>
</a>
</td>
<td align="right" valign="top"> Capitolo 10. Gestione dei dati</td>
</tr>
</table>
</div>
</body>
</html>