Difference between revisions of "HAL (Italiano)"

From ArchWiki
Jump to: navigation, search
(HAL e l'hotplugging)
(hal è deprecato.. redirect a udev)
 
(15 intermediate revisions by 6 users not shown)
Line 1: Line 1:
[[Category: Hardware detection and troubleshooting (Italiano)]]
+
#REDIRECT [[udev (Italiano)]]
[[Category:Daemons and system services (Italiano)]]
+
[[Category:HOWTOs (Italiano)]]
+
 
+
{{i18n_links_start}}
+
{{i18n_entry|English|HAL}}
+
{{i18n_entry|Polish|HAL_(Polski)}}
+
{{i18n_entry|Русский|HAL_(Русский)}}
+
{{i18n_entry|简体中文|HAL (简体中文)}}
+
{{i18n_entry|Español|HAL (Español)}}
+
{{i18n_entry|Italiano|HAL (Italiano)}}
+
{{i18n_links_end}}
+
 
+
HAL (Hardware Abstraction Layer) è un demone che permette alle applicazioni desktop di accedere velocemente alle informazioni hardware, di modo che possono localizzare e usare tale hardware senza badare al bus o al tipo di device. In questa maniera una GUI può presentare tutte le risorse all'utente in modo uniforme e coerente.
+
 
+
=HAL e l'hotplugging=
+
Ci sono più elementi coinvolti nell' 'hotplugging' e HAL è solo uno di loro. Quando si aggiunge un nuovo device, per esempio si connette un'unià USB, succede quanto segue (brevemente):
+
* Il kernel si accorge di un nuovo device e lo scrive su /sys.
+
* [[Udev]] crea un device node (p. es. /dev/sdb1), e carica i driver/moduli necessari.
+
* Il demone HAL è informato da [[D-Bus]] e aggiunge il device e quanto può sapere di esso al proprio database.
+
* L'aggiunta del nuovo device è trasmessa da HAL attraverso D-Bus ad ogni programma che ne faccia richiesta, per esempio Thunar che lo mostra come icona nel pannello laterale delle scorciatoie o Metacity/Nautilus che aggiunge un'icona al desktop.
+
* Un altro programma in ascolto potrebbe essere un volume manager, come thunar-volman [[autofs | AutoFS]], configurato per creare automaticamente i punti di mount e montare certi tipi di unità , per avviare Rhythmbox quando si connette un iPod, ecc..
+
 
+
HAL non rileva l'hardware (lo fa il kernel), non gestisce i device o i driver (udev) o monta in automatico le unità (volume manager). Il suo ruolo è più affine a una centrale di comunicazioni che offre un'interfaccia pulita e semplice verso i device alle applicazioni. I problemi con device connessi a caldo (hotplug) non propriamente rilevati, usabili, o montati, dovrebbero essere esaminati, sapendo che è una lunga catena e ci sono vari componenti coinvolte (vedere 'Risoluzione di problemi').
+
 
+
=Configurazione iniziale=
+
Il demone HAL richiede la presenza del demone D-Bus, perciò è necessario accertarsi che siano installati entrambi.
+
 
+
'''Se si vuole, si può installare pmount:'''
+
 
+
Aprite un terminale e digitate quanto segue come root:
+
# pacman -S pmount
+
Oltre a installare pmount, che permette agli utenti normali di montare le unità rimovibili senza il contributo di sudo o modificando prima /etc/fstab, questo comando porterà i pacchetti D-Bus e HAL come dipendenze.
+
 
+
'''Comunque, si può anche installare solo HAL e D-Bus:'''
+
# pacman -S hal dbus
+
Sia che si scelga di installare pmount, sia che no, continuate con quanto segue:
+
Modificate il file ''/etc/rc.conf'' da root con il proprio editor preferito e aggiungete '''hal''' all'array DAEMONS, per esempio:
+
DAEMONS=(syslog-ng '''hal''' network netfs ...)
+
Il demone HAL ora si caricherà al boot.  Quando HAL si inizializzerà, controllerà la presenza di D-Bus e lo caricherà automaticamente. Se avete '''dbus''' nella vostra lista di demoni, cancellatelo, dato che può creare problemi.
+
 
+
Si può anche avviare HAL manualmente con il seguente comando, da root:
+
# /etc/rc.d/hal start
+
 
+
Perché D-Bus e HAL siano effettivamente utili, gli account degli utenti locali devono essere membri dei [[Groups (Italiano) | gruppi]] '''optical''' e '''storage'''. Per fare questo, aprite un terminale e digitate i seguenti comandi, da root:
+
# gpasswd -a ''username'' optical
+
# gpasswd -a ''username'' storage
+
Sostituite ''username'' con il proprio nome utente (p.es. johndoe).
+
 
+
Affinché questi cambiamenti di gruppi abbiano effetto, bisogna eseguire il logout e fare poi il login di nuovo.
+
 
+
=Policy=
+
 
+
==Policy dei permessi==
+
 
+
I programmi comunicano con i device controllati da HAL attraverso un'interfaccia D-Bus. Sono definite molte [http://people.freedesktop.org/~david/hal-spec/hal-spec.html#interfaces interfacce], ognuna associata a diversi metodi: l'interfaccia storage device (device di memorizzazione), per esempio, ha i metodi 'eject' e 'close tray' (per le unità ottiche). Per 'montare' una partitione su una chiavetta USB, bisogna accedere all'interfaccia D-Bus pertinente ('volume' in questo caso).
+
 
+
Il file di configurazione /etc/dbus-1/system.d/hal.conf specifica i privilegi di HAL, ovvero quali utenti hanno accesso a quali interfacce. Queesti sono definiti come eccezioni alle restrizioni complessive sull'uso delle interfacce D-Bus, specificate in /etc/dbus-1/system.conf. In breve, bisogna verificare che hal.conf garantisca al proprio utente il permesso di accedere determinate interfacce D-Bus/HAL, perché le impostazioni di default di D-Bus sono di non lasciarvi accedere ad esse.
+
 
+
Il file hal.conf di default contiene un certo numero di policy che permettono o vietano l'accesso, tra loro questa (l'ultima di due e perciò verosimilmente quella decisiva):
+
 
+
<!-- Default policy for the exported interfaces -->
+
<policy context="default">
+
  <deny send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
+
  <deny send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"/>
+
  <deny send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
+
  <deny send_interface="org.freedesktop.Hal.Device.Volume"/>
+
  <deny send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
+
</policy>
+
 
+
In breve, agli utenti è per impostazione predefinita vietato l'accesso a interfacce come Volume, che possiede metodi come mount e unmount. Ciò è annullato da policy che permettono agli utenti dei gruppi 'power' e 'storage' l'accesso ai rispettivi dispositivi:
+
 
+
<policy group="power">
+
  <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
+
  <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
+
</policy>
+
 
+
<policy group="storage">
+
  <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
+
  <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
+
</policy>
+
 
+
Questo è il motivo per cui dovete aggiungere il vostro utente a tali gruppi (vedere 'Configurazione iniziale'), riducendo così il numero di file di configurazione personalizzati. Una soluzione meno elegante è di inserire il proprio nome utente all'interno della sezione di policy dell'utente che garantisce l'accesso a tutte i dispositivi HAL elencati (sostituite lo zero col vostro nome utente):
+
 
+
  <!-- You can change this to a more suitable user, or make per-group -->
+
  <policy user="0">
+
    <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
+
    <allow send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"/>
+
    <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
+
    <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
+
    <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
+
  </policy>
+
 
+
==Policy per dispositivi specifici==
+
 
+
===NTFS===
+
Aggiungete quanto segue al file /etc/hal/fdi/policy/10osvendor/20-ntfs-config-write-policy.fdi (create il file se non esiste). Questo file di configurazione è stato testato con hal = 0.5.11 e riconosce/monta correttamente unita' (esterne) ntfs usando ntfs-3g. Il comando 'mount' dovrebbe mostrare il tipo di filesystem come 'fuseblk' se il file di configurazione è rilevato correttamente
+
 
+
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
+
<deviceinfo version="0.2">
+
    <device>
+
        <match key="volume.fstype" string="ntfs">
+
            <match key="@block.storage_device:storage.hotpluggable" bool="true">
+
                <merge key="volume.fstype" type="string">ntfs-3g</merge>
+
                <merge key="volume.policy.mount_filesystem" type="string">ntfs-3g</merge>
+
                <append key="volume.mount.valid_options" type="strlist">locale=</append>
+
            </match>
+
        </match>
+
    </device>
+
</deviceinfo>
+
 
+
Se usate PCManFM come File Manager, dovrete configurarlo esplicitamente per gestire il driver ntfs-3g: modificate il file /usr/share/pcmanfm/mount.rules come segue:
+
 
+
[ntfs-3g]
+
# mount_options=locale=;exec
+
mount_options=uid=1000;gid=100;fmask=0113;dmask=0002;locale=;exec
+
 
+
Selezionando, ovviamente, i permessi che preferite.
+
 
+
=== Link di mount.ntfs ===
+
 
+
{{Box Note | usare questo "hack" solo come ultima risorsa, se HAL non dovesse riconoscere e montare correttamente (in lettura e scrittura) unità ntfs.}}
+
 
+
A partire da hal >= 0.5.10 la policy soprascritta potrebbe non funzionare. Questo è un workaround che obbliga HAL a usare il driver ntfs-3g al posto del normale driver ntfs. Notare che tale metodo farà usare il driver ntfs-3g per tutte le unità NTFS sul proprio sistema! Da root create un link simbolico da mount.ntfs a mount.ntfs-3g.
+
 
+
# ln -s /sbin/mount.ntfs-3g /sbin/mount.ntfs
+
 
+
Problemi possibili con questo metodo:
+
* se mount è chiamato con l'opzione "-i" non funziona
+
* eventuali problemi con il modulo ntfs del kernel
+
 
+
=== Problemi con i locale ===
+
{{Box Note | Questo non dovrebbe succede con ntfs-3g 2009.1.1 e versioni successive.}}
+
Se usate KDE, potreste avere problemi con i nomi di file contenenti caratteri non latini. Questo succede perchè il mounthelper di KDE non analizza correttamente le policy e le opzioni locale. Potete usare questa procedura:
+
 
+
1) Eliminate questo link simbolico: <code>rm /sbin/mount.ntfs-3g</code>
+
 
+
2) Sostituitelo con un nuovo script bash contenente:
+
 
+
#!/bin/bash
+
/bin/ntfs-3g $1 "$2" -o locale=en_US.UTF-8,$4 #inserite il vostro locale qui
+
 
+
3) Rendetelo eseguibile: <code>chmod +x /sbin/mount.ntfs-3g</code>
+
 
+
4) Aggiungete "<code>NoUpgrade = sbin/mount.ntfs-3g</code>" a /etc/pacman.conf.
+
 
+
 
+
Ed ecco una soluzione alternativa per il problema dei caratteri non latini:
+
 
+
1) Aprite una shell di root
+
 
+
2) Scrivete: "<code>mv /sbin/mount.ntfs-3g /sbin/mount.ntfs-3g.sav</code>"
+
 
+
3) Create il file <code>/sbin/mount.ntfs-3g</code> contenente:
+
 
+
#!/bin/bash
+
/sbin/mount.ntfs-3g.sav $1 $2 -o locale=de_DE.UTF-8
+
 
+
Cambiate l'opzione locale in accordo col vostro sistema.
+
 
+
4) Rendete il nuovo file eseguibile
+
 
+
"<code>
+
chmod +x /sbin/mount.ntfs-3g
+
</code>"
+
 
+
5) Aggiungete "<code>NoUpgrade = sbin/mount.ntfs-3g</code>" a <code>/etc/pacman.conf</code>.
+
 
+
6) Sostituite la sezione ntfs, all'interno del file <code>/usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi</code>, con quanto segue:
+
 
+
<code>
+
<!-- allow these mount options for ntfs -->
+
<match key="volume.fstype" string="ntfs">
+
  <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
+
    <merge key="volume.fstype" type="string">ntfs-3g</merge>
+
    <merge key="volume.policy.mount_filesystem" type="string">ntfs-3g</merge>
+
  <append key="volume.mount.valid_options" type="strlist">uid=</append>
+
  <append key="volume.mount.valid_options" type="strlist">gid=</append>
+
  <append key="volume.mount.valid_options" type="strlist">umask=</append>
+
  <append key="volume.mount.valid_options" type="strlist">dmask=</append>
+
  <append key="volume.mount.valid_options" type="strlist">fmask=</append>
+
  <append key="volume.mount.valid_options" type="strlist">locale=</append>
+
  <append key="volume.mount.valid_options" type="strlist">utf8</append>
+
  </match>
+
  <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="FreeBSD">
+
    <merge key="volume.fstype" type="string">ntfs-3g</merge>
+
    <merge key="volume.policy.mount_filesystem" type="string">ntfs-3g</merge>
+
  <append key="volume.mount.valid_options" type="strlist">-u=</append>
+
  <append key="volume.mount.valid_options" type="strlist">-g=</append>
+
  <append key="volume.mount.valid_options" type="strlist">-m=</append>
+
  <append key="volume.mount.valid_options" type="strlist">-a</append>
+
  <append key="volume.mount.valid_options" type="strlist">-i</append>
+
  <append key="volume.mount.valid_options" type="strlist">-C=</append>
+
  <append key="volume.mount.valid_options" type="strlist">-W=</append>
+
  </match>
+
</code>
+
 
+
===Permessi dmask e fmask per ntfs-3g===
+
dmask e fmask sono molto utili per impostare diversi permessi d'accesso per directory e file, per esempio <code>dmask=000</code>,<code>fmask=111</code> renderà le directory accessibili a tutti, mentre i file rimarranno non eseguibili.
+
 
+
    <!-- mount ntfs volume with the ntfs-3g driver to enable write support -->
+
    <device>
+
        <match key="volume.fstype" string="ntfs">
+
            <append key="volume.mount.valid_options" type="strlist">dmask=</append>
+
            <append key="volume.mount.valid_options" type="strlist">fmask=</append>
+
        </match>
+
    </device>
+
 
+
===Montare un dispositivo in un punto di mount specifico===
+
Per dire ad HAL dove montare un dispositivo sono necessarie due cose:
+
* $device_uuid, l'uuid del dispositivo (<code>ls -l /dev/disk/by-uuid/</code> può aiutare a trovarlo)
+
* $device_name, il nome che si vuole dare al dispositivo, di modo che questo sarà montato in '''/media/$device_name'''
+
{{Box Note | La directory /media/$device_name '''NON''' deve esistere, sarà creata ed eliminata da HAL.}}
+
{{Box Note | Il dispositivo '''NON''' deve essere inserito in /etc/fstab , altrimenti HAL non lo monterà.}}
+
 
+
Occorre inserire quanto segue nel nuovo file <code>/etc/hal/fdi/policy/20-$device_name.fdi</code> , senza dimenticare di sostituire $device_uuid e $device_name con i parametri corretti.
+
<?xml version="1.0" encoding="UTF-8"?>
+
<deviceinfo version="0.2">
+
    <device>
+
        <match key="volume.uuid" string="$device_uuid">
+
                <merge key="volume.label" type="string">$device_name</merge>
+
                <merge key="storage.automount_enabled_hint" type="bool">true</merge> <nowiki><!-- if you want automount this should be true even if it may not be taken into account by the Desktop Environment --></nowiki>
+
        </match>
+
    </device>
+
</deviceinfo>
+
 
+
===Montare automaticamente solo unità rimovibili===
+
Di default HAL monta in automatico tutte le partizioni disponibili non inserite in /etc/fstab e crea delle icone sul desktop per esse. Per sovrascrivere questo comportamento e montare automaticamente solo le unità rimovibili, aggiungete questa regola:
+
 
+
  <device>
+
    <match key="storage.hotpluggable" bool="false">
+
      <match key="storage.removable" bool="false">
+
        <merge key="storage.automount_enabled_hint" type="bool">false</merge>
+
      </match>
+
    </match>
+
  </device>
+
 
+
Se usate KDE e l'unità è montata in automatico (ovvero è visualizzata in Konqueror) ma non è sul desktop, andate su <tt>Centro di Controllo -> Desktop -> Comportamento -> Device Symbols (terzo tab)</tt> e assicuratevi che vi sia la spunta.
+
 
+
===Abilitare l'opzione di mount noatime per le unità rimovibili===
+
Questo velocizzerà le operazioni sui file e ridurrà il carico sui dispositivi di memoria flash come le chiavette USB o le schede SD.
+
 
+
  <device>
+
    <match key="block.is_volume" bool="true">
+
      <match key="@block.storage_device:storage.hotpluggable" bool="true">
+
        <merge key="volume.policy.mount_option.noatime" type="bool">true</merge>
+
      </match>
+
      <match key="@block.storage_device:storage.removable" bool="true">
+
        <merge key="volume.policy.mount_option.noatime" type="bool">true</merge>
+
      </match>
+
    </match>
+
  </device>
+
 
+
===... infine===
+
 
+
Ricordatevi di riavviare il demone HAL perchè i vostri cambiamenti abbiano immediatamente effetto:
+
# /etc/rc.d/hal restart
+
 
+
=Risoluzione dei problemi=
+
==Permission Denied con automounter==
+
Se avete eseguito un aggiornamento ed improvvisamente l'automount ha smesso di funzionare con l'errore "PermissionDeniedByPolicy mount-removable no", potete correggere la situazione modificando il file <code>/etc/PolicyKit/PolicyKit.conf</code> e incollando
+
        <match user="$USER"> <!-- replace with your login -->
+
                <match action="org.freedesktop.hal.storage.*">
+
                        <return result="yes"/>
+
                </match>
+
        </match>
+
nella sezione <config> (sostituite $USER con il vostro nome utente). Riavviate dbus e hal. Se usate KDE dovrete riavviare anche KDE (the device notifier won't get it otherwise and will stop responding altogether). This was taken from Gullible Jones' "So long, Arch" thread as a hotfix for exactly this type of breakage and is probably not the best fix (especially for machines with a large number of users), but it works. Maybe someone can make it match group "storage" and update this hastily typed thing.
+
 
+
==Errore di sicurezza==
+
Se i CD/DVD inseriti sono riconosciuti e viene creata un'icona sul desktop, ma non siete in grado di aprire ed esplorare il contenuto, allora l'unità è riconosciuta dal sistema [[udev]] ma qualcosa impedisce ad HAL di montarla. Se il doppio clic sull'icona restituisce la finestra d'errore "A security policy prevents this sender from sending this message to this recipient...", dovrete controllare le impostazioni dei permessi (vedere le sezioni [[#Configurazione_iniziale|Configurazione iniziale]] e [[#Policy_dei_permessi|Policy dei permessi]]).
+
 
+
==I CD/DVD inseriti non sono riconosciuti da HAL==
+
Se i CD/DVD inseriti non sono riconosciuti da HAL (nessuna icona sul desktop), controllate /etc/fstab e rimuovete le righe per i drive ottici.
+
 
+
==Le chiavi USB e i dispositivi non sono montati correttamente in automatico==
+
Questa sotto-sezione prende spunto da [http://bbs.archlinux.org/viewtopic.php?pid=248224 questo thread del forum internazionale].
+
 
+
Se avete problemi con il mount automatico della chiavette USB e/o dei dispositivi, ma non dei CD o dei DVD, e se vi è possibile montare manualmente l'unità USB in questione, allora dovete creare il file <code>preferences.fdi</code> nella cartella /etc/hal/fdi/policy e copiare la seguente riga all'interno del file
+
<merge key="volume.ignore" type="bool">false</merge>
+
 
+
Inoltre, se avete GParted installato, potreste dover eliminare il seguente file:
+
/usr/share/hal/fdi/policy/gparted-disable-automount.fdi
+
 
+
come menzionato alla fine di [http://bbs.archlinux.org/viewtopic.php?pid=310284 questo thread]
+
 
+
Inoltre è necessario assicurarsi che nel file /etc/fstab non sia presente alcun riferimento ai dispositivi USB che hal deve montare in automatico.
+
 
+
==Could not get UID and GID==
+
Se ricevete il seguente errore durante l'avvio di D-Bus:
+
Failed to start message bus: Could not get UID and GID for username "dbus"
+
allora aggiungete il vostro utente come segue:
+
# usr/sbin/groupadd -g 81 dbus
+
# usr/sbin/useradd -c 'System message bus' -u 81 -g dbus -d '/' -s /bin/false dbus
+
 
+
=Link esterni=
+
[http://people.freedesktop.org/~david/hal-spec/hal-spec.html HAL 0.5.10 specifications] - Specifiche globali e introduzione ad HAL.
+
 
+
[http://dventurin.blogspot.com/2007/04/udev-hal-dbus.html Dam's blog] - Tentativo di chiarire la divisione di lavoro tra kernel, udev, D-Bus e HAL con link ad HOWTO e FAQ per ognuno di essi.
+
 
+
[http://people.freedesktop.org/~david/talks/dynamic-device-handling-OLS-2006.pdf Dynamic Device Handling (pdf)] - Una presentazione sulla manipolazione di dispositivi.
+

Latest revision as of 21:53, 27 December 2012

Redirect to: